13

我有一个 iOS 应用程序,现在大约 3 岁。它使用企业档案签名。我们已经发布了该软件的七个版本,最后一次是大约一年前。目前我们正在尝试发布新版本,但发现由于 iOS8 中的新安全规则,iOS 8.1.3 及更高版本的设备无法升级,必须删除并重新安装。

在研究中,我发现使用不同配置文件签署应用程序的人也存在类似问题,但我们的应用程序使用相同配置文件签名。该错误声称我们的旧应用程序标识符包含通配符,我无法弄清楚,因为我们从未更改过捆绑 ID(但是,在开发人员门户中,我们所有应用程序的通用 appId 是 com.company.*)。

我发现如果我使用 Xcode 6.4 构建应用程序的版本 1 和版本 2,我可以成功升级,如果我使用 Xcode 5.1 构建应用程序的两个版本,我可以成功升级,问题是在尝试安装版本时使用 Xcode 6.4 构建的应用程序优于使用 Xcode 5.1 构建的版本

我们尝试升级时遇到的错误是:

“升级的应用程序标识符授权字符串 (6Q39SSX4QT.com.company.appName) 与已安装应用程序的应用程序标识符字符串 (6Q39SSX4QT.com.company.*) 不匹配”

我已经看到一些关于需要在我们的应用程序中包含一个 entitlements.plist 文件的参考资料,我们有一个 AppName.entitlements plist 文件,但是我们的应用程序都没有一个 entitlements.plist 文件(我们的其他应用程序虽然没有出现这个问题,但它们自 Xcode 5.1 发布以来已多次升级)。

有人有想法么?

谢谢!

4

3 回答 3

18
  1. 打开 Xcode -> 窗口 -> 设备
  2. 单击您的设备并从已安装的应用程序列表中删除您尝试安装的应用程序。
  3. 现在尝试运行。
于 2016-01-08T10:02:46.750 回答
2

在做了一些进一步的阅读之后,我发现这个答案很有帮助。就我而言,我是通过一个 grunt 脚本构建的,因此我可以修改我的归档/签名/打包步骤以在代码设计步骤中插入权利。

如果您按照我链接的步骤操作,您将需要确保您的 entitlements.plist 文件包含通配符,如下所示:

<key>application-identifier</key>
<string>com.company.*</string>

如果您手动进行应用程序打包,您可能需要查看iResign。这将为您创建 entitlements.plist 文件并在签署您的应用程序时注入它。

我希望 Apple 能提供更好的文档。无论我在目标的代码权利设置中指定什么,我都无法在 XCode 中获得相同的效果。

于 2015-07-29T20:34:57.150 回答
2

我刚刚遇到这个错误 - 这是因为我更改了用于签署应用程序的开发团队。即我使用我们公司的分发配置文件签署开发版本和客户的分发配置文件签署发布版本。

检查权利中的团队 ID 是否是正确的团队 ID(打印在错误消息中)-> 然后是安装的应用程序错误。还要检查您是否没有在权利文件中指定应用程序标识符。我根本没有权利文件。

在这种情况下,只需删除设备上的应用程序并重新安装即可。

克里斯

于 2016-02-12T12:47:15.433 回答