我在我的iOS应用程序中使用已经有一段时间了。在更新到Xcode 7之后,当我试图编译项目时,我收到了以下错误:
ld: '.../Frameworks/Dropbox/iOS/DropboxSDK.framework/DropboxSDK' 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. 我知道Bitcode是什么以及它有什么好处。可以通过简单地将目标生成设置中的Enable Bitcode选项设置为No来解决此错误。在此之后,所有的编译都没有任何错误,应用程序运行时没有任何问题。
到目前为止还不错,但这是“正确”的解决方案吗?我检查了Dropbox页面以获得SDK的更新版本,但我已经使用了最新版本。
该项目包含一些不使用Dropbox的App、Watch扩展等的其他目标。这里应该使用什么Enable Bitcode选项?是否(出于某种原因)对所有目标都使用相同的值(在我的例子中是No)?如果主应用程序目标不使用Bitcode,那么启用Watch和Widget目标的Bitcode有意义吗?
这里的最佳做法是什么?
发布于 2016-06-16 08:14:38
因为我问了这个问题,所以我简单地将Enable Bitcode设置为目标Build Settings中的No,而在Widget和Apple目标中使用Yes。这很好,我没有注意到任何问题或限制。
现在,我试图向Apple发布我的应用程序的一个新版本,当我将应用程序文件上传到苹果时,我注意到了一个复选框Include Bitcode。启用此复选框后,将收到以下错误:
无效的匹配-O格式。Match-O包"MyApp.app/PlugIns/MyApp WatchKit Extension.appex“与主包中的Match-O不一致。 主包匹配-O包含armv7(机器代码)和arm64(机器代码),而嵌套的包匹配-O包含armv7(bitcode和机器代码)和arm64(bitcode和机器代码)。 对于ENABLE_BITCODE构建设置,平台的所有目标都具有一致的值。
我不知道为什么这现在是一个问题,而我上传的所有其他版本在去年通过没有任何问题。然而,通过取消检查Include Bitcode 复选框,可以很容易地解决这个问题。然后,上传将被接受,没有任何问题。
但是有一个更好的解决方案:正如格雷格所指出的,Dropbox最终发布了一个启用Bitcode的SDK!版本。
下载 新SDK 1.3.14,将其包含在项目中,并为所有目标将ENABLE_BITCODE设置为Yes,您就完成了。至少在苹果找到一种新的方式来干扰发布工作流程之前:-)
发布于 2015-09-22 21:20:19
似乎他们还没有发布支持API的bitcode。下面是线程的链接在官方的Dropbox论坛上,其中包括一位来自Dropbox的支持人员,在此背景下回答其他开发者的问题。
以下是Dropbox支持人员的相关回应:
哦,太棒了!我们还没有用bitcode发布对iOS Core的更新,但是如果您需要对Core的bitcode支持,您可以直接添加源代码,因为它是开源的。这里有一个关于Core的帖子:https://www.dropboxforum.com/hc/en-us/community/posts/204352929-Need-Bitcode-Framework
https://stackoverflow.com/questions/32646120
复制相似问题