问题
I'm having so much problems with Enterpsie Distribution on iOS 8.1.3. I managed to fix MOST of my installations which were giving this error:
Ignore manifest download, already have bundleID
with this answer: https://stackoverflow.com/a/25948839/517688
Which basically tells you to fake the bundleID on the server manifest.plist.
But on some of my test devices I'm getting a new error after the change:
Error Domain=MIInstallerErrorDomain Code=63 "Application is missing the application-identifier entitlement."
And I can't seem to find a solution for this one.
EDIT 1
I tried adding this to the .entitlements file:
<key>application-identifier</key>
<string>com.domain.appname</string>
but now I'm getting this error when trying to Archive the app for distribution:
None of the valid provisioning profiles allowed the specified entitlements: application-identifier, aps-environment.
回答1:
The application-identifier entitlement is not formatted correctly;
It should contain your 10-character App ID Seed, followed by a dot, followed by your bundle identifier:
XXXXXXXXXX.com.domain.appname
回答2:
I have resolved this issue by following the steps from this post: https://stackoverflow.com/a/28235443/2638825
For apps that have been signed by a third party that you're resigning with your enterprise certificate (this walkthrough is assuming the ipa file is AcmeApp.ipa, your entitlements file is entitlements.plist and your provisioning profile is provProvile.mobileprovision; all files are in the Desktop folder (Mac OSX), and S836XXACME is your team identifier):
Create a new entitlements.plist file:
<?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>
Unzip the ipa:
cd ~/Desktop
unzip AcmeApp.ipa
Remove the Code Signature:
rm -r Payload/AcmeApp.app/_CodeSignature/
Copy in the mobileprovision file:
cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision
Codesign:
codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
Zip it up as the resigned ipa:
zip -qr AcmeApp_resigned.ipa Payload/
You also need to amend the manifest.plist file as per the 'ALREADY' signed part earlier:
<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
I tried this solution on iOS 8.4.1, 8.4, 8.0.2 and 7.1.1 devices and it works for me.
thank you "Mark Chamberlain" :)
回答3:
This problem is caused by Apple's security patch for 8.1.3. You could see the discussion from Apple Developer forums.
bllakjakk's answer is right. But just to make it clear, the 10-character App ID Seed is called Team ID and you could find it from your Organization Profile in Member Centre.
回答4:
As per the Technical Notes by 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.
Installation Failure Errors
So you need to conform to this.
来源:https://stackoverflow.com/questions/28371652/ios-8-1-3-enterprise-distribution-application-is-missing-the-application-ide