iOS 8.1.3 - 企业分发 - 应用程序缺少应用程序标识符权利

Jan*_*Jan 10 xcode ios enterprise-distribution ios8

iOS 8.1.3上的Enterpsie Distribution遇到了很多问题.我设法修复了我的安装中的大部分错误:

Ignore manifest download, already have bundleID
Run Code Online (Sandbox Code Playgroud)

这个答案:https://stackoverflow.com/a/25948839/517688

这基本上告诉你伪造服务器manifest.plist上的bundleID.

但是在我的一些测试设备上,我在更改后遇到了一个新错误:

Error Domain=MIInstallerErrorDomain Code=63 "Application is missing the application-identifier entitlement."
Run Code Online (Sandbox Code Playgroud)

我似乎找不到这个解决方案.

编辑1

我尝试将其添加到.entitlements文件中:

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

但是现在我在尝试存档应用程序以进行分发时遇到此错误:

None of the valid provisioning profiles allowed the specified entitlements: application-identifier, aps-environment.
Run Code Online (Sandbox Code Playgroud)

bll*_*akk 8

应用程序标识符权利格式不正确;

它应包含您的10个字符的应用程序ID种子,后跟一个点,后跟您的包标识符:

XXXXXXXXXX.com.domain.appname
Run Code Online (Sandbox Code Playgroud)


小智 5

我已按照此帖中的步骤解决了此问题:https: //stackoverflow.com/a/28235443/2638825

对于已由第三方签名且您正在使用企业证书进行签名的应用程序(本演练假设ipa文件为AcmeApp.ipa,您的权利文件为entitlements.plist,您的配置文件为provProvile.mobileprovision;所有文件在桌面文件夹(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>
Run Code Online (Sandbox Code Playgroud)

解压缩ipa:

cd ~/Desktop

unzip AcmeApp.ipa
Run Code Online (Sandbox Code Playgroud)

删除代码签名:

rm -r Payload/AcmeApp.app/_CodeSignature/ 
Run Code Online (Sandbox Code Playgroud)

复制到mobileprovision文件中:

cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision
Run Code Online (Sandbox Code Playgroud)

协同设计:

codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
Run Code Online (Sandbox Code Playgroud)

将其作为辞职的ipa压缩:

zip -qr AcmeApp_resigned.ipa Payload/
Run Code Online (Sandbox Code Playgroud)

您还需要根据之前的'ALREADY'签名部分修改manifest.plist文件:

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
Run Code Online (Sandbox Code Playgroud)

我在iOS 8.4.1,8.4,8.0.2和7.1.1设备上尝试了这个解决方案,它对我有用.

谢谢你"Mark Chamberlain":)