今天早上我也遇到了同样的问题。实际上,答案就在错误信息中:“验证一个平台的所有目标是否针对ENABLE_BITCODE构建设置有一致的值”。
我的一个目标(ENABLE_BITCODE设为NO),使用了多个启用了ENABLE_BITCODE的库。所以,我需要在项目目标中将ENABLE_BITCODE设置为YES。但我想你可以选择,在使用的所有库中都将ENABLE_BITCODE设置为NO。
最简单和最常见的解决方法:
您可以在通过Xcode提交应用程序时取消选择“包括位码”选项。
如果您使用xcodebuild
,则可以使用传递值为uploadBitcode
设置为false的exportOptionsPlist。在我的情况下,我们正在使用xctool
构建应用程序,并且没有能力传递exportOptionsPlist
,因此我们不得不从所有框架中删除位码。
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://dev59.com/8FwY5IYBdhLWcg3waXO5#32685434
$ xcrun bitcode_strip -r {Framework}.dylib -o tmp.dylib
$ mv tmp.dylib {Framework}.dylib
虽然上述是解决问题的方案,但我不同意如果主二进制文件禁用位码,则所有包含的二进制文件也应该需要它。 位码只是一些IR代码,苹果可以用于应用程序瘦身-他们为什么不从其他二进制文件中剥离它(我认为这就是他们以前所做的)? 对我来说,这没有太多意义。我们在上周五(2016年6月3日)开始遇到相同的错误“Xcode - Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store”...使用以下2个步骤解决了这个问题:
第一步:
在 pod 文件中添加代码以标记 'ENABLE_BITCODE' = 'NO'
在 pods 中
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:
在项目的pods中标记'ENABLE_BITCODE' = 'NO'
注意:尝试使用'ENABLE_BITCODE' = 'YES'
在pods和我的项目中进行标记,但由于我们使用了具有标志-read_only_relocs
的twillio框架进行调用,因此不允许使用'ENABLE_BITCODE' = 'YES'
进行编译。因此,如果您的应用程序不使用任何带有-read_only_relocs
的框架,则可以继续使用'ENABLE_BITCODE' = 'YES'
,因为它对您的应用程序有好处。
我在我的 Xcode 7.3 CI 中,使用 ENABLE_BITCODE = YES 的项目以及依赖项 ENABLE_BITCODE = YES 遇到了同样的问题。
解决方法是将 Xcode 更新到最新版本(7.3.1)。
然后在归档之前将 Enable BitCode 设置为 "No"。
然后归档>>上传>>它会通过此错误。
干杯。