应用程序加载器:ERROR ITMS-90502

问题描述 投票:27回答:12

我正在尝试将新版本上传到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)。或者是否有其他原因导致此错误?

ios xcode itunesconnect application-loader
12个回答
38
投票

没关系,发现了问题。我用来构建存档的配置将Build Active Architecture Only设置为Yes。傻我。


1
投票

这对我有用..

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>armv7</string>
</array>

1
投票

我和Xamarin有同样的问题

我所做的就是修复问题,在连接真实设备时将构建类型更改为Release| iPhone

希望这个帮助


0
投票

在我的例子中,在Visual Studio for Mac中解决这个问题的是在ios选项面板中设置ARMv7 + ARM64。


12
投票

这篇文章发表几个月后,我遇到了同样的错误。我在谷歌上发现了这个帖子,如果其他人来到这里,也是同样的道路,还有另一个原因导致ITMS 90502错误(一致认为这是10月末/ 2015年11月初期的新要求)。

如果在应用程序中包含其他框架,则它们还必须包含“arm64”所需的设备功能。也就是说,这必须在Info.plist中:

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

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

6
投票

我解决了这个ERROR-ITMS 90502错误。

如果您仅将Active Architecture设置为YES,但会显示相同的错误。

但是,如果您的手机可以连接到Mac,请断开连接并上传。

在我的情况下,解决了!


6
投票

如果目标的部署目标是iOS 11.0或更高版本,则必须在arm64中使用info.plist。在Xcode 9.x中创建一个新项目只会在armv7下添加UIRequiredDeviceCapabilities,似乎是一个bug。

将您的info.plistUIRequiredDeviceCapabilities密钥更新为:

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

2
投票

我使用Xamarin解决了这个问题并最终解决了这个问题。

对我来说,解决方案是确保在构建应用程序时不包含调试符号。

在Xamarin Studio中,右键单击项目 - >选项。在“Build”标题下选择“Compiler”。检查“调试信息”下拉列表。

清理,重建,重新包装,并再次上传,它的工作原理。


2
投票

其他方式:

1 - 断开Mac上的所有测试设备

2 - 存档。

你提到的问题,只发生在我连接iPhone时我试图存档的时候。

如果在断开连接时存档,则此问题将消失。


2
投票

就在最近为iOS 11及更高版本构建时,还有其他人遇到此问题时,应用程序需要此密钥,并且您在应用程序中的任何扩展程序也需要此密钥。但是,没有必要在任何框架中使用它。


1
投票

在我的情况下,我有一个:ERROR ITMS-90503在UIRequiredDeviceCapabilities键中单独使用arm64(没有'only')

而且:以“调试”模式存档对我有用

© www.soinside.com 2019 - 2024. All rights reserved.