升级的application-identifier权利字符串与已安装的应用程序不匹配 - >拒绝升级

dre*_*dev 13 xcode ios ios-provisioning ios-enterprise

我有一个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构建的版本上构建的应用程序

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

"Upgrade的application-identifier权利字符串(6Q39SSX4QT.com.company.appName)与安装的应用程序的应用程序标识符字符串(6Q39SSX4QT.com.company.*)不匹配"

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

有人有主意吗?

谢谢!

UIR*_*der 17

  1. 打开Xcode - >窗口 - >设备
  2. 单击您的设备,从已安装的应用列表中删除您尝试安装的应用.
  3. 试试吧吧.

  • 这实际上只是从您的设备中删除旧的应用程序.你也可以用老式的方式做到这一点.这不能解决升级问题,只需解决它. (11认同)

小智 2

进一步阅读后,我发现这个答案很有帮助。就我而言,我是通过 grunt 脚本进行构建,因此我可以修改我的存档/签名/包步骤以在协同设计步骤期间插入权利。

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

<key>application-identifier</key>
<string>com.company.*</string>
Run Code Online (Sandbox Code Playgroud)

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

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