xcodebuild 7.3无法启用bitcode

时间:2016-03-23 17:31:08

标签: frameworks xcodebuild fat bitcode xcode7.3

我正在为iOS开发一个嵌入式框架。为了制作通用脂肪(使用模拟器和设备切片),我创建了一个聚合目标,其脚本使用xcodebuildlipo命令来生成它,就像许多人一样。

使用XCode 7.x我必须使用BITCODE_GENERATION_MODE = bitcode添加用户定义的设置才能启用它,但是自上一次XCode 7.3发布以来,这已停止工作。

我已尝试过在互联网上找到的所有内容,例如添加OTHER_CFLAGS="-fembed-bitcode",但任何事情都像之前一样......

我在构建日志中看到了这个:

ast.literal_eval()

ENABLE_BITCODE始终为NO,无论我做什么。

自从XCode 7.3以来,有没有人尝试使用xcodebuild命令启用bitcode创建通用胖框架?

2 个答案:

答案 0 :(得分:17)

我昨天遇到了类似的问题。经过一些调查后,在任何Xcode目标中从“运行脚本”构建阶段运行xcodebuild时出现的问题似乎与要使用的工具链的显式规范有关,使用ENV变量{{1 }}

因此,在Apple发布Xcode 7.3的固定版本之前,您可以尝试在脚本的开头添加以下命令:

TOOLCHAINS

这应该是无害的,因为当您从命令行运行xcodebuild时,默认情况下不会设置此env变量,并且此解决方法在我的情况下运行正常。

答案 1 :(得分:0)

我面临同样的问题。就像你一样,BITCODE_GENERATION_MODEOTHER_CFLAGS="-fembed-bitcode"被忽略了,我的构建破坏了

我注意到它有时会起作用,有时却没有。似乎如果你为模拟器构建框架(或聚合目标),无论你在xcodebuild命令中有什么,bitcode都会消失。

我正在使用Xcode 7.3,我有2个目标:Static Library和Aggregate target来构建fat框架。

在构建无bitcode框架时对我有用的是:

  • 选择静态库目标(而不是聚合目标),然后选择“通用iOS设备”
  • 清理它
  • 选择静态库目标,但选择模拟器
  • 构建它(工作,即使它是瞬间的,因为它还没有被清理)
  • 选择静态库目标,但再次选择“通用iOS设备”。
  • 构建
  • 选择“通用iOS设备”的汇总目标
  • 最后,构建它
  • 如果失败,请重新开始。在工作之前,我有时需要做两到三次。

当我这样做时,我的胖库最终会有bitcode。

通过运行otool -arch armv7 -l <framework_path> | grep LLVM

,您可以轻松检查您的框架是否支持bitcode

为了再次破坏它,只需为模拟器构建聚合目标。图书馆仍然很胖,但是bitcode已经不见了。

有人肯定能找到一个每次都有效的解决方案,但至少它为我解决了这个问题。

我当然不必使用Xcode 7.2,而且我不知道它对于纯CLI构建是如何工作的。