我正在尝试将新版本上传到TestFlight,但Application Loader给出了以下错误:
ERROR ITMS-90502:“无效的捆绑包。仅包含arm64切片的应用程序在Info.plist中的UIRequiredDeviceCapabilities列表中也必须包含'arm64'。”
如果我按照建议将arm64
添加到UIRequiredDeviceCapabilities
,我会收到另一个错误:
ERROR ITMS-90098:“此捆绑包无效。密钥UIRequiredDeviceCapabilities包含值'arm64',它与MinimumOSVersion值'8.0'不兼容。”
我不确定是什么导致了这个问题,为什么bundle只包含arm64
架构。我检查了项目设置,它们似乎包含其他架构。 ARCHS
(Architectures)设置为Standard architectures (armv7, arm64)
,VALID_ARCHS
(Valid Architectures)设置为arm64 armv7 armv7s
。
我尝试上传最后一次构建(约1个月)已经有一段时间了。 Apple的一个更新是否破坏了什么? (从那以后我绝对没有触及架构设置,唯一添加的是UIBackgroundModes = remote-notification
)。或者是否有其他原因导致此错误?
没关系,发现了问题。我用来构建存档的配置将Build Active Architecture Only
设置为Yes
。傻我。
这对我有用..
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
我和Xamarin有同样的问题
我所做的就是修复问题,在连接真实设备时将构建类型更改为Release| iPhone
希望这个帮助
在我的例子中,在Visual Studio for Mac中解决这个问题的是在ios选项面板中设置ARMv7 + ARM64。
这篇文章发表几个月后,我遇到了同样的错误。我在谷歌上发现了这个帖子,如果其他人来到这里,也是同样的道路,还有另一个原因导致ITMS 90502
错误(一致认为这是10月末/ 2015年11月初期的新要求)。
如果在应用程序中包含其他框架,则它们还必须包含“arm64”所需的设备功能。也就是说,这必须在Info.plist中:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
如果您正在使用cocoapods,则必须将键“UIRequiredDeviceCapabilities”添加到每个依赖项。将此帖子安装包含在Podfile中。
post_install do |installer|
installer.pods_project.targets.each do |target|
plist_buddy = "/usr/libexec/PlistBuddy"
plist = "Pods/Target Support Files/#{target}/Info.plist"
puts "Add armv7 to #{target} to make it pass iTC verification."
`#{plist_buddy} -c "Add UIRequiredDeviceCapabilities array" "#{plist}"`
`#{plist_buddy} -c "Add UIRequiredDeviceCapabilities:0 string armv7" "#{plist}"`
end
end
我解决了这个ERROR-ITMS 90502
错误。
如果您仅将Active Architecture设置为YES
,但会显示相同的错误。
但是,如果您的手机可以连接到Mac,请断开连接并上传。
在我的情况下,解决了!
如果目标的部署目标是iOS 11.0或更高版本,则必须在arm64
中使用info.plist
。在Xcode 9.x中创建一个新项目只会在armv7
下添加UIRequiredDeviceCapabilities
,似乎是一个bug。
将您的info.plist
的UIRequiredDeviceCapabilities
密钥更新为:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
我使用Xamarin解决了这个问题并最终解决了这个问题。
对我来说,解决方案是确保在构建应用程序时不包含调试符号。
在Xamarin Studio中,右键单击项目 - >选项。在“Build”标题下选择“Compiler”。检查“调试信息”下拉列表。
清理,重建,重新包装,并再次上传,它的工作原理。
其他方式:
1 - 断开Mac上的所有测试设备
2 - 存档。
你提到的问题,只发生在我连接iPhone时我试图存档的时候。
如果在断开连接时存档,则此问题将消失。
就在最近为iOS 11及更高版本构建时,还有其他人遇到此问题时,应用程序需要此密钥,并且您在应用程序中的任何扩展程序也需要此密钥。但是,没有必要在任何框架中使用它。
在我的情况下,我有一个:ERROR ITMS-90503在UIRequiredDeviceCapabilities键中单独使用arm64(没有'only')
而且:以“调试”模式存档对我有用