iOS 8.1.3 - 企业分发 - 应用程序缺少应用程序标识符授权
iOS 8.1.3 - Enterprise Distribution - Application is missing the application-identifier entitlement
我在 iOS 8.1.3 上使用 Enterpsie Distribution 时遇到很多问题。
我设法修复了大多数出现此错误的安装:
Ignore manifest download, already have bundleID
这个答案:
这基本上告诉你在服务器上伪造 bundleID manifest.plist。
但是在我的一些测试设备上,我在更改后收到了一个新错误:
Error Domain=MIInstallerErrorDomain Code=63 "Application is missing the application-identifier entitlement."
我似乎找不到解决这个问题的方法。
编辑 1
我尝试将其添加到 .entitlements 文件中:
<key>application-identifier</key>
<string>com.domain.appname</string>
但现在我在尝试存档应用程序以进行分发时遇到此错误:
None of the valid provisioning profiles allowed the specified entitlements: application-identifier, aps-environment.
应用程序标识符授权格式不正确;
它应该包含您的 10 个字符的 App ID 种子,后跟一个点,然后是您的包标识符:
XXXXXXXXXX.com.domain.appname
此问题是由Apple 8.1.3 的安全补丁引起的。你可以看到来自 Apple Developer forums 的讨论。
bllakjakk 的回答是正确的。但需要说明的是,10 个字符的 App ID Seed 称为团队 ID,您可以在会员中心的组织简介中找到它。
根据 Apple 的技术说明
(your_app) failed to install
Unable to download application, (your_app) could not be downloaded at this time.
Application is missing the application-identifier entitlement
Upgrade's application-identifier entitlement string ({Your New App ID Prefix}.com,YourApp.Bundle.ID) does not match installed application's application-identifier string (({Your Old App ID Prefix}.YourApp.Bundle.ID); rejecting upgrade.
所以你需要遵守这个。
我已经按照 post 中的步骤解决了这个问题:
对于已由第三方签名的应用程序,您将使用企业证书辞职(本演练假设 ipa 文件是 AcmeApp.ipa,您的entitlements 文件是 entitlements.plist,您的配置文件是 provProvile.mobileprovision;所有文件都在 Desktop 文件夹中(Mac OSX),S836XXACME 是您的团队标识符):
创建一个新的 entitlements.plist 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
<key>get-task-allow</key>
<false/>
</dict>
</plist>
解压 ipa:
cd ~/Desktop
unzip AcmeApp.ipa
删除代码签名:
rm -r Payload/AcmeApp.app/_CodeSignature/
复制到 mobileprovision 文件中:
cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision
代码设计:
codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
将其压缩为辞职的 ipa:
zip -qr AcmeApp_resigned.ipa Payload/
您还需要根据之前的 'ALREADY' 签名部分修改 manifest.plist 文件:
<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
我在 iOS 8.4.1、8.4、8.0.2 和 7.1.1 设备上尝试了这个解决方案,它适用于我。
谢谢"Mark Chamberlain":)
我在 iOS 8.1.3 上使用 Enterpsie Distribution 时遇到很多问题。 我设法修复了大多数出现此错误的安装:
Ignore manifest download, already have bundleID
这个答案:
这基本上告诉你在服务器上伪造 bundleID manifest.plist。
但是在我的一些测试设备上,我在更改后收到了一个新错误:
Error Domain=MIInstallerErrorDomain Code=63 "Application is missing the application-identifier entitlement."
我似乎找不到解决这个问题的方法。
编辑 1
我尝试将其添加到 .entitlements 文件中:
<key>application-identifier</key>
<string>com.domain.appname</string>
但现在我在尝试存档应用程序以进行分发时遇到此错误:
None of the valid provisioning profiles allowed the specified entitlements: application-identifier, aps-environment.
应用程序标识符授权格式不正确;
它应该包含您的 10 个字符的 App ID 种子,后跟一个点,然后是您的包标识符:
XXXXXXXXXX.com.domain.appname
此问题是由Apple 8.1.3 的安全补丁引起的。你可以看到来自 Apple Developer forums 的讨论。
bllakjakk 的回答是正确的。但需要说明的是,10 个字符的 App ID Seed 称为团队 ID,您可以在会员中心的组织简介中找到它。
根据 Apple 的技术说明
(your_app) failed to install Unable to download application, (your_app) could not be downloaded at this time. Application is missing the application-identifier entitlement Upgrade's application-identifier entitlement string ({Your New App ID Prefix}.com,YourApp.Bundle.ID) does not match installed application's application-identifier string (({Your Old App ID Prefix}.YourApp.Bundle.ID); rejecting upgrade.
所以你需要遵守这个。
我已经按照 post 中的步骤解决了这个问题:
对于已由第三方签名的应用程序,您将使用企业证书辞职(本演练假设 ipa 文件是 AcmeApp.ipa,您的entitlements 文件是 entitlements.plist,您的配置文件是 provProvile.mobileprovision;所有文件都在 Desktop 文件夹中(Mac OSX),S836XXACME 是您的团队标识符):
创建一个新的 entitlements.plist 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
<key>get-task-allow</key>
<false/>
</dict>
</plist>
解压 ipa:
cd ~/Desktop
unzip AcmeApp.ipa
删除代码签名:
rm -r Payload/AcmeApp.app/_CodeSignature/
复制到 mobileprovision 文件中:
cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision
代码设计:
codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
将其压缩为辞职的 ipa:
zip -qr AcmeApp_resigned.ipa Payload/
您还需要根据之前的 'ALREADY' 签名部分修改 manifest.plist 文件:
<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
我在 iOS 8.4.1、8.4、8.0.2 和 7.1.1 设备上尝试了这个解决方案,它适用于我。
谢谢"Mark Chamberlain":)