Wenn ich die apk signiere, erhalte ich die Fehlermeldung "jarsigner: jar: java.util.zip.ZipException kann nicht signiert werden: ungültiger Eintrag komprimierte Größe (erwartete 463, aber 465 Bytes)". Die apk Größe beträgt fast 1MB. Wenn ich die Größe auf 500 KB reduziere, ist das Signieren erfolgreich. Warum das so? .. Irgendeine Idee?
78
Antworten:
Sie versuchen, eine bereits signierte zu unterschreiben
.apk
. Sie müssen eine nicht signierte.apk
Datei exportieren und dann mit signierenjarsigner
.quelle
Sie können eine bereits signierte apk definitiv mehrmals mit verschiedenen Schlüsseln signieren :
ZB habe ich es geschafft, eine Debug-Apk mit dem Release-Schlüssel zu signieren, damit ich Upgrades der veröffentlichten Versionen testen konnte. Außerdem konnte ich eine bereits veröffentlichte apk mit dem Debug-Schlüssel zum Reproduzieren von Fehlern signieren.
Das sollten Sie tun
.apk
Datei in um.zip
.zip
Datei und entfernen Sie denMETA-INF
Ordner.apk
Für den Debug-Schlüssel sollte der Alias
androiddebugkey
und das Kennwort seinandroid
. Der Debug-Keystore ist standardmäßig$HOME/.android/debug.keystore
. Siehe auch Anmelden im Debug-Modus .quelle
Dies ist die 1 Liner / 1 Step- Version der obigen Antwort von @ Joerg:
zip -d foo.apk META-INF/\*
Dabei wird die integrierte Funktion "Aus vorhandenem Archiv löschen" des
zip
Befehls verwendet. Wenn Sie diesen Befehl ausführen, sollten Sie Folgendes sehen:deleting: META-INF/MANIFEST.MF deleting: META-INF/CERT.SF deleting: META-INF/CERT.RSA
... als Ausgabe. Diese Dateien sind die vorhandene Signatur. Wenn Sie sie entfernen, können Sie sie erneut unterschreiben.
Ich möchte auch wiederholen, dass Sie sicher sein sollten, die Argumente
-sigalg SHA1withRSA
und-digestalg SHA1
anjarsigner
zu übergeben, um dieses Problem zu vermeiden: https://code.google.com/p/android/issues/detail?id=19567quelle
Laut Google-Dokumenten können Sie eine Apk mehrmals unterschreiben http://developer.android.com/guide/publishing/app-signing.html#signapp . Wenn Sie nicht in der Lage sind, einen nicht signierten Build zu erhalten, obwohl Sie die apk einfach aufblasen und dann erneut aufladen können, können Sie sie signieren.
quelle
Soweit ich auf diesen Fehler gestoßen bin, tritt er auf, wenn Sie versuchen, eine zipaligned .apk-Datei zu signieren.
Es sieht so aus, als ob Jarsigner einige der Zipalign-Änderungen nicht ertragen kann. Dies kommt nicht oft vor.
quelle