Xcode 7 + Dropbox Core API:只需禁用Bitcode?

And*_*ord 12 xcode objective-c ios dropbox-api bitcode

我已经在我的iOS应用程序中使用Dropbox Core API已经有一段时间了.更新到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. 
Run Code Online (Sandbox Code Playgroud)

我知道Bitcode是什么以及它有什么好处.只需在目标Build Settings中设置Enable Bitcode选项即可解决错误No.在这之后一切都编译没有任何错误,应用程序运行没有任何问题.

到目前为止一切顺利,但这是"正确"的解决方案吗?我在Dropbox页面上查看了SDK的更新版本,但我已经使用了最新版本.

该项目包含不使用Dropbox SDK的App Widget,Watch Extension等的其他目标.Enable Bitcode应该在这里使用什么选项?是(出于某种原因)更好地使用相同的值(No在我的情况下)对所有目标?如果主应用程序目标不使用Bitcode,那么为Watch和Widget目标启用Bitcode是否有意义?

这里的最佳做法是什么?

rga*_*ber 5

看来他们还没有发布支持bitcode的API.以下是官方Dropbox论坛上线程的链接,其中包括来自Dropbox的支持人员在此上下文中回复其他开发人员的问题.

以下是Dropbox支持人员的相关回复:

哦,太好了!我们还没有发布带有bitcode的iOS Core SDK的更新,但是如果你需要对Core SDK的bitcode支持,你可以直接添加源代码,因为它是开源的.这里有关于Core SDK的一个主题:https: //www.dropboxforum.com/hc/en-us/community/posts/204352929-Need-Bitcode-Framework


And*_*ord 2

由于我问了这个问题,我只是在 Widget 和 Apple Watch 目标中使用时将选项设置Enable BitcodeNo目标。这工作得很好,我没有注意到任何问题或限制。Build SettingsYes

Include Bitcode现在,我尝试向 App Store 发布应用程序的新版本,在将应用程序文件上传到 Apple 时,我注意到有一个复选框。启用此复选框后,我收到以下错误:

无效的 Match-O 格式。Match-O 捆绑包“MyApp.app/PlugIns/MyApp WatchKit Extension.appex”与主捆绑包中的 Match-O 不一致。

主捆绑包Match-O包含armv7(机器代码)和arm64(机器代码),而嵌套捆绑包Match-O包含armv7(位代码和机器代码)和arm64(位代码和机器代码)。

验证平台的所有目标都具有一致的 ENABLE_BITCODE 构建设置值。

我不知道为什么现在这是一个问题,而我去年上传的所有其他版本都没有任何问题。不过,通过取消选中该复选框,可以轻松解决该问题Include Bitcode。然后上传就被接受了,没有任何问题。

但有一个更好的解决方案:正如 Greg 指出的那样,Dropbox 终于发布了支持 Bitcode 的 SDK 版本!

下载新的 SDK 1.3.14,将其包含在您的项目中并将所有目标设置ENABLE_BITCODEYes,然后就完成了。至少在苹果找到一种新方法来扰乱你的发布工作流程之前:-)