我们有一个老式的 xamarin 表单应用程序,正在使用 Azure DevOps 构建。我们使用 macOS-11 映像进行 iOS 构建,默认为 xcode 13.2.1 和 xamarin.ios 15.4。但是,Apple 现在要求提交到商店的应用程序必须使用 xcode 14.1 和 iOS 16.1 构建
没关系,我们切换到 macOS-12 以使用 xcode 14.2 和 ios 16.1 进行构建,但现在我们的应用程序将不会使用 App Center 门户安装临时构建。该应用程序停止安装,我们收到一条错误消息:
无法安装“[应用程序名称]”,请稍后重试。
控制台设备日志在安装过程中出现以下错误:
0x16fccb000 -[MIInstallableBundle _validateApplicationIdentifierForNewBundleSigningInfo:错误:]:981:应用程序缺少应用程序标识符权利。
我尝试将“应用程序标识符”添加到权利 plist,但没有产生任何影响。
<key>application-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
有人遇到这个问题吗?
更新: 只是为了保持此信息最新。我的解决办法不再适用于安装了 Xcode 15。现在,无论我是在 DevOps 上编译还是在本地编译,我仍然会遇到相同的安装错误。自从 AppCenter 宣布停用后,我在 Runway 中设置了我们的应用程序,但遇到了同样的问题。我已验证“app”文件和移动配置文件中的应用程序标识符。
在此图像中是应用程序包中的权利,该权利包含在我可以通过协同设计看到的 IPA 文件中。如果我使用 xcode 13.2.1 编译,我可以看到这些权利,但如果我使用 xcode 14.2+ 编译,则没有权利。它什么也没输出。
可以通过使用自定义代码签名权利文件向应用程序添加应用程序标识符权利来解决此问题。要添加的键/值对的格式为:
<key>application-identifier</key>
<array>
<string>{Your App ID Prefix}.your.bundle.ID</string>
</array>
这就是你的“app”文件的内容
<key>application-identifier</key>
<string>{Your App ID Prefix}.your.bundle.ID</string>
您可以看到它们完全不同,因此 Xcode 无法根据
.plist
的值解码您的 application-identifier
文件并获取 nil
的值。
尝试将一对
<array> ... </array>
添加到 application-identifier
的值