Ich habe eine APK mit apktool dekodiert (da der ursprüngliche Quellcode verloren gegangen ist), damit ich einige Probleme mit den Layout-XML-Dateien beheben konnte. Ich habe es dann wieder mit apktool erstellt und als ich versuchte, es auf meinem Gerät zu installieren (mit adb: adb install appname.apk), gab es mir diesen Fehler:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Die ursprüngliche Apk wurde jedoch von einem Keystore (in der Eclipse-IDE) signiert. Dies ist nicht der Fall. Wie kann ich sie ordnungsgemäß mit der ursprünglichen Keystone-Datei außerhalb von Eclipse signieren?
android
android-install-apk
apk
svarog
quelle
quelle
Antworten:
Erstellen Sie einen Schlüssel mit
dann unterschreibe die apk mit:
Weitere Informationen finden Sie hier
quelle
jarsigner
undapksigner
? Einer muss unterschrieben und dann zipaligniert werden und der andere muss zipaligniert und dann signiert werdenAutomatisierter Prozess:
Verwenden Sie dieses Tool (verwendet den neuen Apksigner von Google):
https://github.com/patrickfav/uber-apk-signer
Haftungsausschluss: Ich bin der Entwickler :)
Manueller Prozess:
Schritt 1: Keystore generieren (nur einmal)
Sie müssen einmal einen Keystore generieren und damit Ihre
unsigned
apk signieren . Verwenden Sie das vom JDK bereitgestellte inkeytool
%JAVA_HOME%/bin/
Schritt 2 oder 4: Zipalign
zipalign
Dies ist ein Tool, das vom Android SDK bereitgestellt wird, z. B.%ANDROID_HOME%/sdk/build-tools/24.0.2/
ein obligatorischer Optimierungsschritt, wenn Sie die Apk in den Play Store hochladen möchten.Hinweis: Wenn Sie das alte verwenden
jarsigner
, müssen Sie NACH dem Signieren zipalignieren . Wenn Sie die neueapksigner
Methode verwenden, tun Sie dies VOR dem Signieren (verwirrend, ich weiß). Das Aufrufen von zipalign vor apksigner funktioniert einwandfrei, da apksigner die APK-Ausrichtung und -Komprimierung beibehält (im Gegensatz zu jarsigner).Sie können die Ausrichtung mit überprüfen
Schritt 3: Signieren und überprüfen
Verwenden von Build-Tools 24.0.2 und älter
Verwendung
jarsigner
, die wie die keytool, mit der JDK - Distribution kommt gefunden%JAVA_HOME%/bin/
und es verwendet , etwa so:und kann mit überprüft werden
Verwenden von Build-Tools 24.0.3 und neuer
Android 7.0 führt das APK-Signaturschema v2 ein, ein neues App-Signaturschema, das schnellere App-Installationszeiten und mehr Schutz vor unbefugten Änderungen an APK-Dateien bietet ( weitere Informationen finden Sie hier und hier ). Aus diesem Grund hat Google einen eigenen apk-Unterzeichner namens
apksigner
(duh!) Implementiert. Die Skriptdatei befindet sich in%ANDROID_HOME%/sdk/build-tools/24.0.3/
(die .jar befindet sich im/lib
Unterordner). Verwenden Sie es sound kann mit überprüft werden
Die offizielle Dokumentation finden Sie hier.
quelle
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
). Die Überprüfung mit uber-apk-signer gab mir weitere Einblickesignature VERIFY FAILED
[...]ERROR: JAR signer CERT.RSA: JAR signature META-INF/CERT.RSA uses digest algorithm 2.16.840.1.101.3.4.2.1 and signature algorithm 1.2.840.113549.1.1.1 which is not supported on API Levels [[15, 17]]
. Ja, Android 4.2.2, SHA256 nicht da? Ideen?Der schnellste Weg ist das Signieren mit dem Debug-Keystore:
oder unter Windows:
quelle
Sie verwenden Jarsigner, um APKs zu signieren. Sie müssen nicht mit dem ursprünglichen Schlüsselspeicher signieren, sondern nur einen neuen generieren. Lesen Sie die Details: http://developer.android.com/guide/publishing/app-signing.html
quelle
Für diejenigen unter Ihnen, die nicht für jedes Projekt eine Bat-Datei zum Bearbeiten erstellen oder sich nicht alle Befehle merken möchten, die mit den Keytools- und Jarsigner-Programmen verknüpft sind, und diese nur in einem Prozess ausführen möchten, verwenden Sie dieses Programm:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
Ich habe es erstellt, weil ich es satt hatte, jedes Mal alle Dateispeicherorte eingeben zu müssen.
Dieses Programm kann Ihre Konfiguration speichern. Wenn Sie es das nächste Mal starten, müssen Sie nur auf Generieren klicken und es wird für Sie erledigt. Das ist es.
Keine Installation erforderlich, es ist vollständig portabel und speichert seine Konfigurationen in einer CSV im selben Ordner.
quelle
Antwort aktualisiert
Überprüfen Sie https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
Alte Antwort
Überprüfen Sie apk-signer eine gute Möglichkeit, Ihre App zu signieren
quelle