Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ja, das ist möglich. In der Regel ist es jedoch erforderlich, dass Sie das Paket .app
nach der Änderung erneut signieren.
Beachten Sie, dass das Ändern der .ipa
Datei in der normalen Verwendung nicht erforderlich ist. Dieser Artikel wird nur zu Informationszwecken bereitgestellt.
Beispiel: Entfernen einer Datei aus einem .ipa
Archiv
In diesem Beispiel wird davon ausgegangen, dass der Name des Xamarin.iOS-Projekts lautet iPhoneApp1
und generated session id
cc530d20d6b19da63f6f1c6f67a0a254
Erstellen Sie die
.ipa
Datei normal aus Visual Studio.Wechseln Sie zum Mac-Buildhost.
Suchen Sie den Build im
~/Library/Caches/Xamarin/mtbs/builds
Ordner. Sie können diesen Pfad in Finder > Go > to Folder einfügen, um den Ordner in Finder zu durchsuchen. Suchen Sie nach dem Ordner, der dem Projektnamen entspricht. Suchen Sie in diesem Ordner nach dem Ordner, der demgenerated session id
Build entspricht. Dies wird höchstwahrscheinlich der Unterordner sein, der die letzte Änderungszeit hat.Öffnen Sie ein neues
Terminal.app
Fenster.Geben Sie
cd
in das Terminal.app-Fenster ein, und ziehen Sie dann dengenerated session id
Ordner in dasTerminal.app
Fenster:Geben Sie den Rückgabeschlüssel ein, um das Verzeichnis in den
generated session id
Ordner zu ändern.Entpacken Sie die
.ipa
Datei mit dem folgenden Befehl in einen temporärenold/
Ordner. Passen Sie dieAd-Hoc
Namen nachiPhoneApp1
Bedarf für Ihr bestimmtes Projekt an.ditto -xk bin/i Telefon/Ad-Hoc/i Telefon App1-1.0.ipa old/
Lassen Sie das
Terminal.app
Fenster geöffnet.Löschen Sie die gewünschten Dateien aus der
.ipa
. Sie können sie entweder mithilfe von Finder in den Papierkorb verschieben oder in der Befehlszeile löschen.Terminal.app
Um den Inhalt derPayload/iPhone
Datei in Finder anzuzeigen, klicken Sie mit der CTRL-MAUSTASTE auf die Datei, und wählen Sie "Paketinhalt anzeigen" aus.Suchen Sie mit dem gleichen allgemeinen Ansatz wie in Schritt 3 die Protokolldatei,
~/Library/Logs/Xamarin/MonoTouchVS/
unter der sowohl der Projektname als auch dergenerated session id
Name im Namen enthalten sind:Öffnen Sie das Buildprotokoll aus Schritt 10, z. B. durch Doppelklicken darauf.
Suchen Sie die Zeile, die enthält
tool /usr/bin/codesign execution started with arguments: -v --force --sign
.Geben Sie
/usr/bin/codesign
aus Schritt 8 in das fenster Terminal.app ein.Kopieren Sie alle Argumente, die mit der Zeile in Schritt 12 beginnen
-v
, und fügen Sie sie in das fenster Terminal.app ein.Ändern Sie das letzte Argument so, dass es sich um das
.app
Bundle imold/Payload/
Ordner befindet, und führen Sie dann den Befehl aus./usr/bin/codesign -v --force --sign SOME_LONG_STRING in/iPhone/Ad-Hoc/iPhoneApp1.app/ResourceRules.plist --entitlements obj/iPhone/Ad-Hoc/Entitlements.xcent old/Payload/iPhoneApp1.app
Wechseln Sie in das
old/
Verzeichnis im Terminal:cd old
Zippen Sie den Inhalt des Verzeichnisses mithilfe
zip
des Befehls in eine neue.ipa
Datei. Sie können das"$HOME/Desktop/iPhoneApp1-1.0.ipa"
Argument so ändern, dass die.ipa
Datei überall ausgegeben wird, wo Sie möchten:zip -yr "$HOME/Desktop/iPhoneApp1-1.0.ipa" *
Häufige Fehlermeldungen
Wenn Sie sehen Invalid Signature. A sealed resource is missing or invalid.
, bedeutet dies im Allgemeinen, dass etwas innerhalb des .app
Bundles geändert wurde und dass das .app
Bündel danach nicht ordnungsgemäß signiert wurde. Beachten Sie außerdem, dass Sie das Original .ipa
mit einem Verteilungsprofil mit einem Verteilungsprofil erstellen .ipa
möchten. Andernfalls ist dies Entitlements.xcent
falsch.
Wenn Sie nach Schritt 9 den folgenden codesign --verify
Befehl im Terminalfenster ausführen, wird der Fehler zusammen mit der genauen Ursache des Fehlers angezeigt, um ein konkretes Beispiel dafür zu geben, wie dieser Fehler auftreten kann:
$ codesign -dvvv --no-strict --verify old/Payload/iPhoneApp1.app
old/Payload/iPhoneApp1.app: a sealed resource is missing or invalid
file missing: /Users/macuser/Library/Caches/Xamarin/mtbs/builds/iPhoneApp1/cc530d20d6b19da63f6f1c6f67a0a254/old/Payload/iPhoneApp1.app/MyFile.png
Und der App Store-Überprüfungsprozess meldet eine ähnliche Fehlermeldung:
FEHLER ITMS-90035: "Ungültige Signatur. Eine versiegelte Ressource fehlt oder ist ungültig. Die Binärdatei im Pfad [i TelefonApp1.app/iTelefon App1] enthält eine ungültige Signatur. Stellen Sie sicher, dass Sie Ihre Anwendung mit einem Verteilungszertifikat signiert haben, nicht mit einem Ad-hoc-Zertifikat oder einem Entwicklungszertifikat. Stellen Sie sicher, dass die Codesignatureinstellungen in Xcode auf Zielebene korrekt sind (wodurch alle Werte auf Projektebene überschrieben werden). Stellen Sie außerdem sicher, dass das hochzuladende Bundle mit einem Release-Ziel in Xcode und nicht mit einem Simulatorziel erstellt wurde. Wenn Sie sicher sind, dass Ihre Codesignatureinstellungen korrekt sind, wählen Sie "Alle bereinigen" in Xcode aus, löschen Sie das Verzeichnis "Build" im Finder, und erstellen Sie Ihr Releaseziel neu. Weitere Informationen finden Sie unter https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html"