Xcode - 错误ITMS-90635 - 捆绑中的Mach-O无效 - 提交到App Store

Nun*_*ves 71 xcode ios

我在向应用商店提交应用时遇到此错误.

在此输入图像描述

这是否意味着我需要为所有依赖项设置ENABLE_BITCODE?我试过但后来得到错误说依赖与bitcode(或类似的东西)不兼容......

Gui*_* L. 65

今天早上我遇到了同样的问题.事实上,答案在于错误:"验证平台的所有目标是否具有ENABLE_BITCODE构建设置的一致值"

我有一个目标(ENABLE_BITCODE设置为NO),使用ENABLE_BITCODE设置为YES的多个pod.所以,我必须做的就是在我的项目目标中将ENABLE_BITCODE设置为YES.但我想你有一个选择,你也可以在你正在使用的所有库中将ENABLE_BITCODE设置为NO.


Mik*_*gue 64

最简单和最常见的修复:

通过Xcode提交应用程序时,您可以取消选中"包括Bitcode". 取消选中此框

如果使用xcodebuild,则可以使用传递exportOptionsPlist,其值为uploadBitcodefalse.在我的情况下,我们正在使用xctool构建应用程序并且没有能力传递exportOptionsPlist,所以我们不得不从我们的所有框架中删除bitcode.


如果有人正在使用cocoapods并想要为其框架禁用bitcode,则只需将以下内容添加到podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

通过/sf/answers/2287980411/


为此问题添加更多说明:

看来苹果昨天才开始执行这项工作.如果您的主二进制文件已禁用bitcode,但您包含一个启用了bitcode的静态库或框架,则验证将失败.它也是另一种方式:如果您的主二进制文件已启用bitcode,但您包含禁用bitcode的库/框架,则验证将失败.

我有一些来自GoogleMaps和Amazon的依赖项,这使得切换所有内容以启用bitcode变得非常简单,所以我只是禁用它并从我在项目中导入的一个静态库中删除了bitcode.您可以使用以下命令从任何二进制文件中删除bitcode

$ xcrun bitcode_strip -r {Framework}.dylib -o tmp.dylib
$ mv tmp.dylib {Framework}.dylib
Run Code Online (Sandbox Code Playgroud)

https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html

虽然以上是问题的解决方案,但我不同意如果主二进制文件禁用bitcode,所有包含的二进制文件也应该需要它.Bitcode只是苹果公司可以用于应用程序细化的一些IR代码 - 为什么它们不能将它从其他二进制文件中删除(我认为这是他们以前做过的)?这对我来说没有多大意义.

Apple主题https://forums.developer.apple.com/thread/48071

  • 如果您有 WatchApp 那么这将不起作用,因为您必须提交 WatchApp 的位码 (2认同)

Yes*_*tov 5

我只是取消选中"include bitcode"并开始上传

  • 那么,解决这个问题的正确方法是什么? (2认同)