Von Zeit zu Zeit kommt es vor, dass wir bereits kompilierte iOS Apps von externen Entwicklern übermittelt bekommen, welche wir dann im App Store publizieren sollen.

Nicht selten ist es außerdem noch nötig einzelne Angaben, wie z.B. den Paket- oder gar den App- Namen anzupassen.

Das gewünschte Ergebnis lässt sich in nur wenigen Schritten realisieren:

1.) Die „IPA“ in ein Verzeichnis kopieren und im Terminal in dieses Verzeichnis wechseln.

2.) IPA entpacken:

 unzip MyApp.ipa 

3.) vorhandene Signatur entfernen:

 rm -r Payload/MyApp.app/_CodeSignature 

4.) Die Bundle ID in der „Info.plist“ ggf. anpassen.

5.) Das zu verwendende Provisioning- Profil in das Verzeichnis kopieren:

 cp /Users/tapthis/_app_store_provision.mobileprovision Payload/MyApp.app/embedded.mobileprovision 

6.) Falls nicht vorhanden, eine „entitlements.plist“ mit folgendem Inhalt erstellen:

</pre>

<?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>XX0XX00XX0.de.tapthis.MyApp</string>
<key>aps-environment</key>
<string>production</string>
<key>com.apple.developer.team-identifier</key>
<string>XX0XX00XX0</string>
<key>keychain-access-groups</key>
<array>
<string>XX0XX00XX0.de.tapthis.MyApp</string>
</array>
<key>get-task-allow</key>
<false/>
</dict>
</plist>
<pre>

7.) Nun das Signing durchführen:

 codesign -f -v -s "iPhone Distribution: Developer Name" --entitlements entitlements.plist Payload/MyApp.app 

Der korrekte „Developer Name“ kann mit folgendem Befehl ausfindig gemacht werden:

 security find-identity

8.) Anschließend wird die neu signierte App erneut in ein IPA gepackt:

 zip -yr MyApp-re-signed.ipa Payload/ 

8.) Mit folgendem Befehl kann das Signing verifiziert werden:

codesign -dvvv Payload/SampleApp.app

Fertig!

Wurde alles richtig gemacht, können nun die neuen Angaben bestaunt werden.
Das IPA ist bereit zum Upload in den App Store!