我正在尝试将新版本上传到TestFlight,但Application Loader会给我以下错误:
错误ITMS-90502:"无效的捆绑包。仅包含arm64的应用 切片还必须有'arm64'在列表中 已获取Info.plist中的设备功能。"
如果我按照建议将arm64
添加到UIRequiredDeviceCapabilities
,我会收到另一个错误:
错误ITMS-90098:"此捆绑包无效。钥匙 UIRequiredDeviceCapabilities包含价值' arm64'是的 与' 8.0'的最小OSVersion值不兼容。"
我不确定导致此问题的原因以及为什么bundle只包含arm64
架构。我检查了项目设置,它们似乎包含其他架构。 ARCHS
(架构)设置为Standard architectures (armv7, arm64)
,VALID_ARCHS
(有效架构)设置为arm64 armv7 armv7s
。
我尝试上传最后一个版本(约1个月)已经有一段时间了。 Apple的一个更新是否破坏了什么? (从那时起,我绝对没有触及过架构设置,唯一添加的是UIBackgroundModes = remote-notification
)。或者是否有其他原因导致此错误?
答案 0 :(得分:38)
Build Active Architecture Only
设置为Yes
。傻我。
答案 1 :(得分:12)
我在发布这几个月后遇到了同样的错误。我在谷歌上发现了这个帖子,如果有其他人来到这里,也有同样的道路,ITMS 90502
错误还有另一个原因(一致认为这是2015年10月末/ 11月初的新要求的时间安排)。
如果您在应用中包含其他框架,则他们还必须包含' arm64'所需的设备能力。也就是说,这必须在Info.plist中:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
答案 2 :(得分:10)
如果您正在使用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
答案 3 :(得分:6)
我解决了这个ERROR-ITMS 90502
错误。
如果您仅将Active Architecture设置为YES
,但会显示相同的错误。
但是,如果您的手机可以连接到Mac,请断开连接并上传。
就我而言,已经解决了!
答案 4 :(得分:6)
如果您的目标部署目标位于iOS 11.0或更高版本,则arm64
中必须有info.plist
。在Xcode 9.x中创建一个新项目只会在armv7
下添加UIRequiredDeviceCapabilities
,这似乎是一个错误。
将您的info.plist
UIRequiredDeviceCapabilities
密钥更新为:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
答案 5 :(得分:2)
我使用Xamarin解决了这个问题并最终解决了这个问题。
对我来说,解决方案是确保在构建应用程序时不包含调试符号。
在Xamarin Studio中,右键单击项目 - &gt;选项。在“Build”标题下选择“Compiler”。检查“调试信息”下拉列表。
清理,重建,重新包装,然后重新上传,并且有效。
答案 6 :(得分:2)
另一种方式:
1 - 断开Mac上的所有测试设备
2 - 存档。
你提到的问题,只发生在我连接iPhone时我试图存档的时候。
如果您在断开连接时存档,则此问题将会消失。
答案 7 :(得分:2)
如果在为iOS 11及更高版本构建时最近有其他人遇到此问题,则此应用程序需要此密钥,并且您在应用程序中的任何扩展程序也需要此密钥。但是,没有必要在任何框架中使用它。
答案 8 :(得分:1)
在我的情况下,我有一个: 错误ITMS-90503 在UIRequiredDeviceCapabilities键中单独使用arm64(仅使用&#39; only&#39;)
和: 存档&#34;调试&#34;模式为我工作
答案 9 :(得分:1)
这对我有用..
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
答案 10 :(得分:1)
我和Xamarin有同样的问题
在连接真实设备
时,我所做的就是修复问题,将构建类型更改为Release| iPhone
希望这个帮助
答案 11 :(得分:0)
就我而言,在Visual Studio for Mac中解决这个问题的方法是在ios选项面板中设置 ARMv7 + ARM64 。
答案 12 :(得分:0)
在归档之前,在设备/模拟器列表中选择Generic iOS Device