将应用程序提交到应用商店时,我只是收到此错误。
这是否意味着我需要为所有依赖项设置ENABLE_BITCODE?我尝试了一下,但是随后出现错误消息,说明依赖项与位码不兼容(或类似的东西)...
Answers:
今天早上我遇到了同样的问题。实际上,答案出在以下错误中:“验证平台的所有目标的ENABLE_BITCODE构建设置的值是否一致”
我有一个目标(将ENABLE_BITCODE设置为NO),使用了多个将ENABLE_BITCODE设置为YES的吊舱。因此,我要做的就是在我的项目目标中将ENABLE_BITCODE设置为YES。但是我想您可以选择,也可以在所有正在使用的库中将ENABLE_BITCODE设置为NO。
最简单,最常见的修复程序:
如果使用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
尽管以上是解决问题的方法,但我不同意如果主二进制文件禁用了位码,则所有包含的二进制文件也都需要它。位代码只是Apple可以用于应用程序精简的一些IR代码-为什么他们不将其从其他二进制文件中剥离(我认为这是他们以前的工作)?这对我来说意义不大。
我只是取消选中“包含位码”,然后开始上传
从上周五(2016年6月3日)我们收到相同的错误“ Xcode-错误ITMS-90635-捆绑中的无效Mach-O-提交至App Store” ..使用了下面提到的2个步骤来完成此操作
步骤1:将
代码添加到Pod文件中以标记'ENABLE_BITCODE' = 'NO'
Pod
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:在项目的广告连播中
标记'ENABLE_BITCODE' = 'NO'
注意:'ENABLE_BITCODE' = 'YES'
也在Pod和项目中尝试使用标记,但是由于我们使用twillio框架进行调用,因此该框架具有-read_only_relocs
不允许使用进行编译的标志'ENABLE_BITCODE' = 'YES'
。因此,如果您的应用程序不使用任何此类框架,-read_only_relocs
那么您可以继续进行制作,'ENABLE_BITCODE' = 'YES'
因为这将对您的应用程序有利。
对于那些在将“启用位代码”设置为“是”后出现构建错误的人。我必须更新所有库。但是,最简单的部分是我使用Cocoapods。因此,请更新您所有的pod项目:(一个一个)或全部
然后在存档之前将Enable BitCode设置为“ No”。
然后存档>>上传>>它将通过此错误。
干杯。