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

时间:2016-06-03 11:45:32

标签: ios xcode

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

enter image description here

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

7 个答案:

答案 0 :(得分:65)

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

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

答案 1 :(得分:64)

最简单,最常见的解决方法:

您可以取消选中"包括Bitcode"通过Xcode提交应用程序时。 uncheck the box

如果您使用xcodebuild,则可以使用exportOptionsPlist传递,uploadBitcode的值设置为false。就我而言,我们正在使用xctool来构建应用,并且无法传递exportOptionsPlist,因此我们必须从所有框架中删除bitcode。< / p>

如果有人正在使用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

通过https://stackoverflow.com/a/32685434/1417922

为此问题添加更多说明:

似乎苹果昨天刚刚开始实施。如果您的主二进制文件已禁用bitcode,但您包含一个启用了bitcode的静态库或框架,则验证将失败。它也是另一种方式:如果您的主二进制文件已启用bitcode,但您包含禁用bitcode的库/框架,则验证将失败。

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

$ xcrun bitcode_strip -r {Framework}.dylib -o tmp.dylib
$ mv tmp.dylib {Framework}.dylib

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

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

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

答案 2 :(得分:5)

我只是取消选中&#34;包括bitcode&#34;它开始上传

答案 3 :(得分:3)

迦太基

  1. 在项目文件夹中打开您的库(Carthage-&gt; Checkouts-&gt; [lib name])
  2. 然后打开Xcode中的每个lib
  3. 设置启用Bitcode - 构建设置中的否enter image description here
  4. 为列表中的每个lib执行此操作
  5. 构建carthage carthage build --platform xxx
  6. 然后您可以存档并成功提交到Appstore

答案 4 :(得分:1)

我们得到同样的错误&#34; Xcode - 错误ITMS-90635 - 捆绑中的Mach-O无效 - 提交到App store&#34;从上周五(2016年6月3日)开始..使用下面提到的2个步骤来完成这个工作

步骤1:
已向pod文件添加代码以标记广告连播中的'ENABLE_BITCODE' = 'NO'

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

步骤2:
在项目的pod中标记'ENABLE_BITCODE' = 'NO'

注意:尝试在pods和我的项目中标记'ENABLE_BITCODE' = 'YES',但因为我们使用twillio框架进行调用,其中有一个标记-read_only_relocs,不允许使用'ENABLE_BITCODE' = 'YES'进行编译。因此,如果您的应用不使用任何此类框架-read_only_relocs,那么您可以继续制作'ENABLE_BITCODE' = 'YES',因为它对您的应用有利。

答案 5 :(得分:0)

对于将“启用BitCode”设置为“是”后出现构建错误的用户。 我必须更新所有库。但是,最简单的部分是我使用Cocoapods.So,请更新你所有的pod项目:(逐一)或全部

然后在归档之前将Enable BitCode设置为“No”。

然后存档&gt;&gt;上传&gt;&gt;它将传递此错误。

干杯。

答案 6 :(得分:0)

我在项目中遇到了同样的问题&#34; ENABLE_BITCODE = YES&#34;和依赖&#34; ENABLE_BITCODE = YES&#34;在我的CI上使用Xcode 7.3。 解决方案是将Xcode更新为最新版本(7.3.1)