Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 8.1.3 - Enterprise Distribution - Application is missing the application-identifier entitlement

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.
like image 460
Jan Avatar asked Feb 06 '15 17:02

Jan


2 Answers

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
like image 100
bllakjakk Avatar answered Oct 16 '22 11:10

bllakjakk


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" :)

like image 8
rachid.elidrissi Avatar answered Oct 16 '22 13:10

rachid.elidrissi