2013-03-26 7 views
15

Mein Kunde verfügt über eine iOS-App mit In-App-Kauf, Game-Kit- und Push-Benachrichtigungen, die derzeit im App Store verfügbar ist. Ich möchte die Anwendung mithilfe eines internen Unternehmensverteilungszertifikats zurücknehmen, um sie intern zu testen, aber dennoch in der Lage zu sein, Dienste zu testen, die mit dem ursprünglichen Bereitstellungsprofil verknüpft sind. Ist das möglich?Zurückweisen eines iOS-Bereitstellungsprofils

Antwort

29

landete ich dies bis zu tun, die eine Kombination ist aus: -

und

1) Erstellen Entitlements plist, Probleme verhindern Entfernen Sie mit dem Schlüsselanhänger etc

<?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>GBA9L2EABG.com.your.bundle.id.MyApp</string> 
    <key>get-task-allow</key> 
    <false/> 
</dict> 

2) Entpacken Sie die IPA

unzip Application.ipa 

3) den alten Code Unterschrift

rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true 

4) ersetzen integrierte Mobile-Provisioning-Profil

cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision" 

5) Resign

/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/Application.app" 

6) Re-Paket

zip -qr "Application.resigned.ipa" Payload 
+0

ein Befehl könnte dies tun, wenn Sie die .app-Datei zurücktreten: 'xcrun -SDK iphoneos PackageApplication -v "build/IhrProjekt-iphoneos/youAppName.app" -o„output_folder/yourAppName.ipa "--sign" yourCertificateName "--embed" your.mobileprovision "' – Xiao

+0

"GBA9L2EABG.com.ihr.bundle.id.MyApp" - ist dies nur eine Paket-ID, die Sie erstellt haben, oder ist es die aus dem Original IPA? Funktionieren Push-Benachrichtigungen auch, wenn Sie die Paket-ID der ursprünglichen App ändern? – Leonti

+0

Wenn ich versuche, die App zu installieren erhalten Fehler als CFBundleExecutable von appName, die nicht ausführbar ist. Ich habe versucht, den Befehl chmod + x auf die AppName.app immer noch den gleichen Fehler. – Raghav

1

nur ein wenig zu Koko Carl Antwort hinzuzufügen, wenn Sie Probleme mit codesign_allocate ausgeführt, wenn Sie zu Schritt 5 erhalten (Resign), versuchen Sie, eine Shell-Variable CODESIGN_ALLOCATE zu exportieren und geben Sie ihr einen Pfad für die Zuordnung des Codesigns innerhalb des iPhone SDK. Um dies zu tun, stellen Sie sicher, dass Sie die Xcode Kommandozeilen-Tools installiert haben (Einstellungen/Updates in Xcode)

Zum Beispiel war ich immer die Fehlermeldung:

me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app" 

Ausgang:

Payload/MyApp.app: replacing existing signature 
codesign_allocate: object: /Users/mimio/Downloads/Payload/MyApp.app/MyApp malformed object (unknown load command 33) 
Payload/MyApp.app: object file format unrecognized, invalid, or unsuitable 

Um dies zu lösen, habe ich die Variable thusly:

me$ export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 

Und dann lief meinen Befehl wieder:

me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app" 

Und voila! Alles funktionierte einwandfrei mit dem neuen codesign_allocate

4

Um eine App ein bisschen leichter als abfinden, was @Koko Carl gesagt hat, haben wir die floatsign Skript angepasst, die bei https://gist.github.com/Weptun/5406993 gefunden werden kann. macht den Prozess einfach:

sh floatsign.sh ~/Downloads/File.ipa "iPhone Distribution: CertificateName" -b new.bundle.id -p /Path/To/Profile/Appstore.mobileprovision App-resigned.ipa 
+0

Warnung: --Ressourcen-Regeln sind in Mac OS X nicht mehr gültig> = 10.10! Temp/Payload/Application.app/ResourceRules.plist: kann Ressourcen nicht lesen Hatte einen Fehler, Abbrechen! –

1

Wenn gesuchte dies die erste Frage shownup in stackover Strömung ist. Also wollte ich mit der neuesten iResign-Mac-App auf den neuesten Stand gebracht werden, was den Job superleicht mit GUI anstelle von Befehlen im Terminal macht.

iReSign

iReSign ermöglicht iDevice App-Bundles (.ipa) Dateien signiert werden oder resigniert mit einem digitalen Zertifikat von Apple für den Vertrieb. Es kann auch signierte iDevice-App-Bundles (.ipa) aus .xcarchive-Dateien erstellen. Dieses Tool richtet sich an Benutzer von Unternehmen für die Unternehmensbereitstellung, wenn die Person, die die App signiert, sich von der Person unterscheidet, die sie entwickelt.

Wie verwenden

iReSign Sie eine unverschlüsselte ipa-Datei mit einem beliebigen Zertifikat, für die Sie die entsprechenden privaten Schlüssel halten, um erneut signieren kann. iResign kann auch eine signierte ipa-Datei aus einer xcarchive-Datei erstellen.

Ziehen Sie Ihre nicht signierte .ipa- oder .xcarchive-Datei in das obere Feld oder verwenden Sie die Schaltfläche zum Durchsuchen.

Geben Sie den vollständigen Zertifikatsnamen von Keychain Access ein, z. B. "iPhone Developer: Vorname Nachname (XXXXXXXXXX)" im unteren Feld.

Klicken Sie auf ReSign! und warte. Die resignierte Datei wird im selben Ordner wie die Originaldatei gespeichert.

Quelle: https://github.com/maciekish/iReSign

+2

Sie haben die gleiche Antwort auf 4 verschiedene Fragen. Wenn die Frage mit der gleichen Antwort beantwortet werden kann, sollten Sie darauf hinweisen, dass es sich um ein Duplikat handelt, und nicht um doppelte Antworten. – NathanOliver

+0

Perfekt, um ein an den AppStore gesendetes ipa neu zu signieren. Sie müssen nur die richtigen Profile und das richtige Zertifikat finden (wenn Sie mehrere haben). Ich habe die entity.plist leer gelassen, es scheint ein Tempo zu erzeugen, wenn keiner gefunden wurde. Dann habe ich meinen resignierten ipa mit iMazing installiert. Jetzt kann ich überprüfen, ob meine eingereichte App wie erwartet funktioniert, bevor sie den Store erreicht und/oder auf die Genehmigung wartet. –

Verwandte Themen