Xcode 7 + Dropbox Core API:简单地禁用 Bitcode?
Xcode 7 + Dropbox Core API: Simply disable 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.
我知道 Bitcode 是什么以及它有什么用处。只需在目标构建设置中将 Enable Bitcode
选项设置为 No
即可解决该错误。在此之后,一切都没有任何错误地编译并且应用程序运行没有任何问题。
到目前为止一切顺利,但这就是 "right" 解决方案吗?我在 Dropbox 页面上查看了 SDK 的更新版本,但我已经使用了最新版本。
该项目包含一些不使用 Dropbox SDK 的应用小部件、手表扩展等其他目标。这里应该使用 Enable Bitcode
的哪个选项?是否(出于某种原因)更好地为所有目标使用相同的值(No
在我的例子中)?如果主应用程序目标不使用 Bitcode,为 Watch 和 Widget 目标启用 Bitcode 是否有意义?
这里的最佳做法是什么?
他们似乎还没有发布支持的位码API。 Here is the link to the thread 在官方 Dropbox 论坛上,其中包括来自 Dropbox 的支持人员在这方面回复其他开发人员的问题。
以下是 Dropbox 支持人员的相关回复:
Oh, great! We haven't released an update to the iOS Core SDK with
bitcode, but if you need bitcode support for the Core SDK, you can add
the source directly, since it's open source. There's a thread about
this for the Core SDK here:
https://www.dropboxforum.com/hc/en-us/community/posts/204352929-Need-Bitcode-Framework
自从我问了这个问题后,我只是在目标 Build Settings
中将选项 Enable Bitcode
设置为 No
,同时在 Widget 和 Apple Watch 目标中使用 Yes
。效果很好,我没有发现任何问题或限制。
现在我尝试将我的应用程序的新版本发布到 App Store,并且在将应用程序文件上传到 Apple 时我注意到一个复选框 Include Bitcode
。启用此复选框后,我收到以下错误:
Invalid Match-O Format. The Match-O bundle "MyApp.app/PlugIns/MyApp WatchKit Extension.appex" isn't consistent with the Match-O in the main bundle.
The main bundle Match-O contains armv7(machine code) and arm64(machine code), while the nested bundle Match-O contains armv7(bitcode and machine code) and arm64(bitcode and machine code).
Varify that all of the targets for a platform have a consistent value for the ENABLE_BITCODE build setting.
我不知道为什么现在这是一个问题,而我在去年上传的所有其他版本都没有任何问题。 不过,取消选中 Include Bitcode
复选框 即可轻松解决问题。然后上传没有任何问题被接受。
但有更好的解决方案:正如 Greg 指出的那样,Dropbox 终于发布了支持 Bitcode 的 SDK 版本!
下载 new SDK 1.3.14,将其包含在您的项目中,并将所有目标的 ENABLE_BITCODE
设置为 Yes
,您就完成了。至少在 Apple 找到扰乱您的发布工作流程的新方法之前 :-)
我在我的 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.
我知道 Bitcode 是什么以及它有什么用处。只需在目标构建设置中将 Enable Bitcode
选项设置为 No
即可解决该错误。在此之后,一切都没有任何错误地编译并且应用程序运行没有任何问题。
到目前为止一切顺利,但这就是 "right" 解决方案吗?我在 Dropbox 页面上查看了 SDK 的更新版本,但我已经使用了最新版本。
该项目包含一些不使用 Dropbox SDK 的应用小部件、手表扩展等其他目标。这里应该使用 Enable Bitcode
的哪个选项?是否(出于某种原因)更好地为所有目标使用相同的值(No
在我的例子中)?如果主应用程序目标不使用 Bitcode,为 Watch 和 Widget 目标启用 Bitcode 是否有意义?
这里的最佳做法是什么?
他们似乎还没有发布支持的位码API。 Here is the link to the thread 在官方 Dropbox 论坛上,其中包括来自 Dropbox 的支持人员在这方面回复其他开发人员的问题。
以下是 Dropbox 支持人员的相关回复:
Oh, great! We haven't released an update to the iOS Core SDK with bitcode, but if you need bitcode support for the Core SDK, you can add the source directly, since it's open source. There's a thread about this for the Core SDK here: https://www.dropboxforum.com/hc/en-us/community/posts/204352929-Need-Bitcode-Framework
自从我问了这个问题后,我只是在目标 Build Settings
中将选项 Enable Bitcode
设置为 No
,同时在 Widget 和 Apple Watch 目标中使用 Yes
。效果很好,我没有发现任何问题或限制。
现在我尝试将我的应用程序的新版本发布到 App Store,并且在将应用程序文件上传到 Apple 时我注意到一个复选框 Include Bitcode
。启用此复选框后,我收到以下错误:
Invalid Match-O Format. The Match-O bundle "MyApp.app/PlugIns/MyApp WatchKit Extension.appex" isn't consistent with the Match-O in the main bundle.
The main bundle Match-O contains armv7(machine code) and arm64(machine code), while the nested bundle Match-O contains armv7(bitcode and machine code) and arm64(bitcode and machine code).
Varify that all of the targets for a platform have a consistent value for the ENABLE_BITCODE build setting.
我不知道为什么现在这是一个问题,而我在去年上传的所有其他版本都没有任何问题。 不过,取消选中 Include Bitcode
复选框 即可轻松解决问题。然后上传没有任何问题被接受。
但有更好的解决方案:正如 Greg 指出的那样,Dropbox 终于发布了支持 Bitcode 的 SDK 版本!
下载 new SDK 1.3.14,将其包含在您的项目中,并将所有目标的 ENABLE_BITCODE
设置为 Yes
,您就完成了。至少在 Apple 找到扰乱您的发布工作流程的新方法之前 :-)