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

我在向应用程序商店提交应用程序时遇到了这个错误。

enter image description here

这是否意味着我需要为所有依赖项设置 ENABLE _ BITCODE?我试过了,但后来得到错误说,依赖不兼容的位码(或类似的东西) ..。

17220 次浏览

我没有选中“包含位码”,它就开始上传了

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

我有一个目标(ENABLE _ BITCODE 设置为 NO) ,使用多个 pods,ENABLE _ BITCODE 设置为 YES。因此,我所要做的就是在我的项目目标中将 ENABLE _ BITCODE 设置为 YES。但是我想您有一个选择,您也可以在您正在使用的所有库中将 ENABLE _ BITCODE 设置为 NO。

对于那些在将“启用位代码”设置为“是”后出现构建错误的用户。 我得更新所有的图书馆。但是,最简单的部分是我使用 Cocoapods。所以,请更新您的所有豆荚项目: (一个接一个)或所有

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

然后 Archive > > Upload > > It will pass this error。

干杯。

最简单也是最常见的解决办法:

当你通过 Xcode 提交应用程序时,你可以取消选择“包含比特码”。 uncheck the box

如果使用 xcodebuild,可以使用传递 ExportOptionsPlist,并将 uploadBitcode的值设置为 false。在我的例子中,我们使用 xctool来构建应用程序,并且没有能力传递 exportOptionsPlist,所以我们必须从所有框架中删除位代码。


如果有人正在使用 cocoapods,并且希望在他们的框架中禁用位代码,你可以在 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


为了进一步澄清这个问题:

看起来苹果公司昨天才开始执行这一规定。如果您的主二进制文件禁用了位码,但是您包含了启用了位码的静态库或框架,则验证将失败。另一种情况也是如此: 如果您的主二进制文件启用了位代码,但是您包含了一个禁用了位代码的库/框架,那么它将无法进行验证。

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

$ 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 只是苹果可以用来细化应用程序的一些红外代码——为什么他们不直接从其他二进制文件中删除它(我假设他们以前就是这么做的) ?这对我来说一点意义都没有。

苹果线 https://forums.developer.apple.com/thread/48071

We were getting same error "Xcode - Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store" from last friday (3-june-2016) .. used the below mentioned 2 steps to get this done

第一步:
在吊舱文件中添加代码以标记吊舱中的 '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

第二步:
在该项目的吊舱中标记了 'ENABLE_BITCODE' = 'NO'

注意: 尝试在 pods 和我的项目中标记 'ENABLE_BITCODE' = 'YES',但由于我们使用 twillio 框架调用,其中有一个标志 -read_only_relocs,不允许与 'ENABLE_BITCODE' = 'YES'编译。因此,如果你的应用程序没有使用任何这样的框架与 -read_only_relocs,然后你可以继续使 'ENABLE_BITCODE' = 'YES',因为它将是你的应用程序好。

为了迦太基

  1. 在项目文件夹中打开库(Carthage-> Checkouts-> [ lib name ])
  2. 然后打开 Xcode 的每个解放组织
  3. 设置启用位代码-在生成设置中没有enter image description here
  4. 为你列表中的每个 lib 做这件事
  5. 建造迦太基 carthage build --platform xxx

然后您可以成功地存档并提交到 Appstore

我在使用 Xcode 7.3进行 CI 时遇到了同样的问题: 项目“ ENABLE _ BITCODE = YES”和依赖项“ ENABLE _ BITCODE = YES”。 解决方案是将 Xcode 更新为最新的可用版本(7.3.1)