Xcode 7引入了Bitcode,这是一种LLVM中间二进制文件,这意味着Apple的服务器可以在不参与的情况下为不同的架构重新编译我的应用程序.
在Lookback中,我使用我们的库分发静态存档框架.似乎当你用"Build&Archive"构建任何东西时,bitcode实际上并没有发布到我的库中,任何在我们的应用程序中与我的库链接并尝试使用Bitcode进行构建和存档的人将获得其中一个两个警告:
ld: 'Lookback(Lookback.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. (如果lib是使用Xcode 6构建的)ld: warning: full bitcode bundle could not be generated because 'Lookback(Lookback.o)' was built only with bitcode marker. The library must be generated from Xcode archive build with bitcode enabled (Xcode setting ENABLE_BITCODE) (如果lib是使用带有正常xcodebuild的Xcode 7构建的)我有一个构建脚本,构建一个设备+模拟器通用二进制文件,所以我不能使用Build&Archive,而是xcodebuild从我的脚本从命令行运行.如何xcodebuild生成适当的bitcode启用库?
我一直在更新一个静态库来支持bitcode,从我的研究中我发现了两种实现方法:
这两个选项有什么区别吗?
我注意到的唯一区别是,通过使用fembed-bitcode,生成的iphonesimulator静态库将在启用完全bitcode的情况下构建(在我的情况下,二进制大小从5MB变为13MB,我可以检查bitcode支持使用otool),这看起来似乎不大使用它有任何不同.
在我寻找一种确定 iOS 二进制文件是否是使用 Bitcode 构建的方法时,我发现了以下帖子:
在这里,建议使用以下方法来确定二进制文件中是否存在位码:
$ otool -l libName.o | grep __LLVM
Run Code Online (Sandbox Code Playgroud)
但是,我已经在几个二进制文件上尝试过,但没有成功。其中之一是我知道有位代码的库,因为在我更改其项目上的标志后,构建错误消失了。其中另一个是文件扩展名的二进制文件,使用存档构建。另一个是苹果手表。
我相信上述所有二进制文件都应该有 Bitcode,但我总是无法从上述命令中得到任何结果。
有谁知道任何其他适用于最新二进制文件的方法?
我正在使用 XCode 7.2 和 10.10.5 以防万一。
更新:这是一个文件示例,该文件应该具有位代码,但上述命令不返回任何内容。它是来自测试文件提供程序的二进制文件。我通过 Archive 和 Deploy as Ad Hoc 生成它,并确保为目标启用了 bitcode 的设置。
https://www.dropbox.com/s/eyuzs5j1t7nsq6t/CustomDocumentProviderFileProvider?dl=0