[Marmalade SDK] Provisioning profile “hell” when deploying to iOS 8 device

After several hours of

“A valid provisioning profile for this executable was not found”

I found a method that successfully runs my App in my iPad Air running iOS 8.1.2.

Pre-requisites:

– A valid DEVELOPMENT certificate (.cer).
– A valid DISTRIBUTION certificate (.cer).
– A valid DEVELOPMENT provisioning profile, including the DeviceID of your Test iPhone/iPad, and matching the AppID you indicate in your .mkb file
– A valid DISTRIBUTION provisioning profile, linked to the previously mentioned certificate.
– Certificates installed in your iPad using Apple Configurator (see screenshot below)
– Provisioning profiles also installed on the device (“iPhone Configuration Utility” can do that)

scr1

If you don’t have all the pre-requisites, this tutorial may be helpful for you.

Procedure:

1.- Download the DEVELOPMENT certificate from Apple Developer portal, file will be called “ios_development.cer”. IMPORTANT: Rename it to developer_identity.cer, and copy it to

C:\Marmalade\7.x\s3e\deploy\iphone\plugins\certificates

2.- Repeat step 1 with the DISTRIBUTION certificate. In this case, file name will be correct (distribution_identity.cer). Make sure these two files are present in your “certificates” folder: developer_identity.cer, distribution_identity.cer.

3.- In your App’s .mkb file, “deployments” section:

iphone-appid='myappid'
iphone-provisioning-profile='data/distributionprofile.mobileprovision'

4.- Generate the .ipa using Marmalade Deploy Tool. This .ipa will be signed with your DISTRIBUTION profile.

5.- Run “Marmalade iPhone Resigner” Tool, select your .ipa created in step 4, and select your DEVELOPMENT provisioning profile (.mobileprovision). Choose “iPhone Developer” as signing identity and click on Run. If an error is shown, read 5.1.

5.1.- The iPhone Resigner may display errors asking you to copy all the “C:\Marmalade\…\certificates” folder to:
PROJECT_ROOT\build_xyz_vc9\deployments\iphone\…\arm\certificates\
If this is the case, do it.
The files that iPhone Resigner is going to need are:
– developer_identity.key (generated with iPhone Sign Request tool when generating the certificate)
– developer_identity.cer (that’s your Apple development certificate, renamed this way)
– Apple Root CA.cer (downloaded from Apple Developer portal, also bundled in Marmalade)

6.- Deploy the recently created .ipa (signed with DISTRIBUTION, re-signed with DEVELOPMENT) to your iPhone or iPad. Make sure the device has the certificates and provisioning profiles installed.

In my case, this is the only way to make the App run on device. If I directly use DEVELOPMENT profile in step 3, it doesn’t work.

Hope it runs on yours too!!!

[Update] Collection of useful links with extra info about this aspect, thanks to Ryan from Marmalade team 🙂
iOS signing
iOS signing explained
creating a distribution store package
advanced iOS signing topics and tips
They are worth a read if you want to have deeper knowledge of the app store distribution process.

Good luck 🙂

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s