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
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
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
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
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! –
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.
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
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. –
- 1. jQuery Deferred: Eine Versprechung innerhalb eines Fertigfilters zurückweisen
- 2. Versprechungen mit mehreren Argumenten zurückweisen (wie $ http) in AngularJS
- 3. Spring Boot RestTemplate Das Aufrufen einer API gibt das Zurückweisen verboten 403
- 4. Lässt App Store Symbole in der App für glänzend oder glänzend zurückweisen
- 5. Ablehnung eines jQuery Versprechens in A $ .ajax Erfolgsmethode
- 6. Regex für den Abgleich eines String-Literals in Java?
- 7. Ausgabe eines Teils eines Objekts
- 8. Verpixeln eines Abschnitts eines gepuffertenBildes
- 9. Auswählen eines Elements innerhalb eines übergeordneten Elements eines anderen
- 10. Aufbau eines Entscheidungsbaumsystems zur Spezifizierung eines Systems
- 11. Aufruf eines Benutzerformulars und Rückgabe eines Wertes
- 12. Auswählen eines bestimmten Elements innerhalb eines div?
- 13. Scrollen eines ScrollView innerhalb eines textView-Delegaten
- 14. Angemessene Größe eines Baumes und eines Wörterbuchs
- 15. Hinzufügen eines Elements zum Anfang eines Gruppenelements
- 16. Ändern eines Teils eines Spaltennamens in Pandas?
- 17. Extrahieren eines Teils eines Bildes in LabView
- 18. Verschieben eines Benutzersteuerelements innerhalb eines anderen Benutzersteuerelements
- 19. Vertikales Ausrichten eines Blockebenenelements innerhalb eines Blockebenenelements
- 20. Array innerhalb eines Arrays innerhalb eines Objekts? .?
- 21. Erzwingen eines Repaint eines WPF-Steuerelements
- 22. XPath: Finden eines Attributknotens (und nur eines)
- 23. Hinzufügen eines Menüs innerhalb eines Menubuttons? Python
- 24. Schalten eines Relais jeden Zyklus eines Timers
- 25. Erstellen eines Timers innerhalb eines Funke-Kontexts
- 26. Count Zeichen eines Abschnitts eines Strings
- 27. Zentrieren eines Polygons innerhalb eines Rastersteuerelements
- 28. Zend_Tool Schaffung eines Controllers innerhalb eines Moduls
- 29. Verwenden eines Teils eines Feldwerts in TSQL
- 30. Erkennen eines Inline-/Blocktyps eines DOM-Elements
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
"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
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