2

好的,撇开明显的打包和签名问题不谈,是否有可能通过使用来自非 Apple 操作系统(如 Linux 或 Windows)的正确构造的 LLVM 位码 (IR) 来编译 IOS/iPhone 兼容的可执行文件,即利用一些LLVM、Clang 或 GCC 等开源编译器基础架构的组合?

基本上,我正在考虑的是

  1. 将预先存在的跨平台 SDK(IOS 兼容)编译为 LLVM 中间表示(IR/bitcode)。

  2. 使用 LLVM 分析工具分析和识别该层内的 IOS 特定 LLVM (IR) 函数调用。

  3. 在非 Apple 系统上将 SDK 编译为 LLVM IR 后,替换非 Mac 主机生成的相应 LLVM IR 函数调用中的 Apple/IOS-generated-LLVM-bitcode-SDK-representation。

  4. [可能] 使用 Mac 的 XCode/Clang/LLVM 基础设施发出的构建标志,以便在非 Apple 主机编译机(例如 Linux 或 Windows)上构建与 IOS 兼容的可执行文件。

如果这完全可行,我稍后将研究创建 iPhone/IOS 捆绑包(IPA 的构造已记录,请询问 Google)并使用开源 Apple 代码签名例程,该例程已在其他跨平台中使用IOS SDK 的

4

2 回答 2

4

RoboVM 不支持从 Mac OS 以外的操作系统交叉编译 iOS 应用程序,但我们计划在未来支持它。这是一个运行在 Linux 上的 iOS 交叉编译工具链,您可能会感兴趣:https ://code.google.com/p/ios-toolchain-based-on-clang-for-linux/ 。

于 2013-06-08T17:12:20.737 回答
3

看起来 Java-to-IOS 正在由RoboVM项目处理:

Java 到本机

RoboVM 编译器将 Java 字节码翻译成原生 ARM 或 x86 代码。应用程序直接在 CPU 上运行。不涉及解释器或虚拟机。

正如我的问题所建议的那样,它使用了 LLVM。

另外值得注意的是Avian JVM项目。它可用于编译为本机和 IOS 二进制文件(通过捆绑 JVM),但是,我不确定其用户界面 (UI) 层的状态或完整性。

这两个项目似乎都处于当前和不断发展的阶段。

于 2013-05-28T09:54:58.857 回答