iOS的升级测试 - 应用标识符授权不匹配

11

之前我用Xcode 7.3.1在我的iPad上直接覆盖安装App Store的应用并测试升级情景,一切都很好。但是这个星期我升级到了Xcode 8,然后尝试同样的方法,但是一直出现下面的升级错误:

"This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed."

enter image description here

我尝试了很多贴子上的解决方案,但没有一个有效。而且我也没有手表应用程序,只有一个简单的iOS应用程序目标。

App installation failed due to application-identifier entitlement

我删除了证书和配置文件并重新创建它们,但问题依旧。然后我又下载了Xcode 7.3.1并尝试了同样的方法,但还是遇到了同样的问题。

现在我无法完全测试我的升级情景,求救!!


我也使用了Xcode 8,并尝试了他们的“自动签名”和“手动签名”过程,但仍然遇到了相同的错误。 - ArdenDev
如果你在旧版和新版应用上运行 codesign -d --entitlements :- path/to/AppName.app/AppName 命令,你会在输出中得到相同的应用标识符吗?也许 AppID 具有与你团队前缀不同的前缀。 - Mats
@Mats,我将“应用程序标识符”与调试应用程序的团队前缀进行了比较,并且与iTunes Connect上的匹配。我认为我们无法从设备直接下载的应用程序中获取授权。 - ArdenDev
您可以在计算机上的iTunes中下载应用程序,并从中提取应用程序标识符。 - Mats
请查看此链接中的一些答案:https://dev59.com/dlwY5IYBdhLWcg3wYm8B - handiansom
8个回答

11

我在尝试升级应用程序时遇到了相同的问题,这是我的解决方法:

我检查了旧应用和新应用的应用程序标识符授权。您可以通过运行codesign -d --entitlements :- path/to/AppName.app/AppName或打开路径为"AppName.app/AppName"的文件"archived-expanded-entitlements.xcent"来执行此操作。

旧应用的应用程序标识符是"1234XXX5X6.com.mycompany.myapp",但在新应用中是"1234XXX5X6.com.mycompany.myapp.develop"。

通常我直接在Info.plist中设置"Bundle Identifier"。

Info.plist Bundle Identifier property

但我不知道项目Build Settings中还有一个"Product Bundle Identifier"属性。

Build Settings Product Bundle Identifier property

应用程序的上一个版本是使用Xcode 7.3.1构建的,并具有以下设置:

  • Info.plist: com.mycompany.myapp
  • Build Settings: com.mycompany.myapp.develop
  • 应用程序标识符: 1234XXX5X6.com.mycompany.myapp

新的版本是使用Xcode 8.2.1构建的,并具有以下设置:

  • Info.plist: com.mycompany.myapp
  • Build Settings: com.mycompany.myapp.develop
  • 应用程序标识符: 1234XXX5X6.com.mycompany.myapp.develop

似乎新的Xcode有不同的应用程序标识符来源。

所以我只是更正了产品捆绑标识符,我的问题就解决了。


7

从设备中删除现有应用程序,然后再运行。


为什么有些人会在不说明原因的情况下进行负面评价? - Vineesh TP
7
我猜这是因为问题涉及“升级”。 - GreatWiz
我们将一个应用程序的所有权从公司A转移到了公司B(我们)。开发设备上仍安装着公司A的版本。按预期删除设备上的公司A应用程序并重新构建解决了该问题。 - Jon
尝试从Xcode偏好设置中删除现有配置文件,并添加新的公司配置文件。进行清理构建,然后再次构建和运行。 - Vineesh TP
1
@Jon,我们正在做同样的事情。这只是在测试期间从xCode安装时出现的问题吗?当更新发布到应用商店时,公众能够顺利升级吗? - Darren
没错,那个方法有效。 - undefined

3
要解决这个问题,只需从项目设置的“常规”选项卡中启用“自动管理签名”即可。
我在直接从xcode 8运行应用程序时也遇到了问题。删除和生成配置文件和证书对我没有起作用。但启用“自动管理签名”对我有用。
希望这可以帮助您!
请查看我的这个问题: Xcode 8显示错误,证明文件不包括签名证书

我已经附上了一个错误截图,与您链接中提到的错误不同。 - ArdenDev

3
如果您想升级现有的App Store应用程序而不删除它,但您的application-identifier权限不匹配,则以下是一种解决方案。将新版本的构建文件上传到App Store,然后使用TestFlight将其下载到您的设备上。这种方法不如直接在设备上构建快速,但它将覆盖旧应用程序并保留旧数据。如果您已经在TestFlight上获得了新版本的构建文件,并希望进行更快速的测试,请执行以下操作:
  1. 从设备中删除应用程序(假设它是最近的版本)
  2. 下载您的应用商店版本并生成一些数据
  3. 下载您的TestFlight版本,但不要运行它
  4. 将最新的构建文件直接构建到设备上
TestFlight版本会覆盖权限而不会删除旧数据,因此Xcode可以愉快地安装新版本的构建文件,但您仍然可以像直接在App Store版本之上构建一样测试升级过程。

0

选择应用目标,点击“常规”,如果你选择或勾选了“自动管理签名”复选框。

取消勾选“自动管理签名”,选择适当的签名配置文件和#重新构建并运行。

请参考下面的照片。

enter image description here


0
我的做法是打开 Xcode,进入“Window”菜单——“Devices and Simulators”,然后选择我的 iOS 设备并在那里删除应用程序。这在this Medium article中有详细说明。

0

我从一个由Jenkins工件生成的.ipa文件中得到了这个。对我来说问题是Jenkins使用了不同的配置文件。

我手动设置Jenkins使用与我尝试安装的更新版本相同的配置文件,然后它开始工作了。


0

问题已解决!简短回答 - 从您的iPhone中删除旧应用程序即可。 我去了我的iPhone存储空间,并使用搜索栏找到了有问题的应用程序(因为它没有显示在应用程序列表中),发现了一个隐藏的旧版本,将其删除后,现在它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接