J'ai décodé un APK avec apktool (car le code source d'origine a été perdu) afin que je puisse résoudre certains problèmes avec les fichiers xml de mise en page. Je l'ai ensuite reconstruit avec apktool et lorsque j'ai essayé de l'installer sur mon appareil (en utilisant adb: adb install appname.apk), cela m'a donné cette erreur:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Cependant, l'apk d'origine a été signé par un keystore (sur l'IDE eclipse), celui-ci ne l'est pas, comment puis-je le signer correctement avec son fichier keystone original en dehors d'Eclipse !?
android
android-install-apk
apk
svarog
la source
la source
Réponses:
créer une clé en utilisant
puis signez l'apk en utilisant:
vérifier ici pour plus d'informations
la source
jarsigner
etapksigner
? L'un nécessite une signature, puis un zipaligning et l'autre zipaligning puis une signatureProcessus automatisé:
Utilisez cet outil (utilise le nouvel apksigner de Google):
https://github.com/patrickfav/uber-apk-signer
Avertissement: Je suis le développeur :)
Processus manuel:
Étape 1: Générer Keystore (une seule fois)
Vous devez générer un keystore une fois et l'utiliser pour signer votre
unsigned
apk. Utilisez le fourni par le JDK trouvé danskeytool
%JAVA_HOME%/bin/
Étape 2 ou 4: Zipalign
zipalign
qui est un outil fourni par le SDK Android trouvé dans par exemple%ANDROID_HOME%/sdk/build-tools/24.0.2/
est une étape d'optimisation obligatoire si vous souhaitez télécharger l'apk sur le Play Store.Remarque: lorsque vous utilisez l'ancien,
jarsigner
vous devez zipalign APRÈS la signature. Lorsque vous utilisez la nouvelleapksigner
méthode, vous le faites AVANT de signer (déroutant, je sais). L'appel de zipalign avant apksigner fonctionne correctement car apksigner préserve l'alignement et la compression de l'APK (contrairement à jarsigner).Vous pouvez vérifier l'alignement avec
Étape 3: signer et vérifier
Utilisation des build-tools 24.0.2 et versions antérieures
Utilisez
jarsigner
qui, comme le keytool, est fourni avec la distribution JDK trouvée dans%JAVA_HOME%/bin/
et utilisez-le comme ceci:et peut être vérifié avec
Utilisation des outils de construction 24.0.3 et plus récents
Android 7.0 présente APK Signature Scheme v2, un nouveau schéma de signature d'applications qui offre des temps d'installation d'application plus rapides et une protection accrue contre les modifications non autorisées des fichiers APK (voir ici et ici pour plus de détails). Par conséquent, Google a implémenté son propre signataire apk appelé
apksigner
(duh!) Le fichier de script se trouve dans%ANDROID_HOME%/sdk/build-tools/24.0.3/
(le .jar est dans le/lib
sous - dossier). Utilisez-le comme çaet peut être vérifié avec
La documentation officielle peut être trouvée ici.
la source
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
). La vérification avec uber-apk-signer m'a donné un aperçu supplémentairesignature 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]]
. Oui, Android 4.2.2, SHA256 pas là? des idées?Le moyen le plus rapide est de signer avec le keystore de débogage:
ou sous Windows:
la source
Vous utilisez jarsigner pour signer des APK. Vous n'êtes pas obligé de signer avec le keystore d'origine, il suffit d'en générer un nouveau. Renseignez-vous sur les détails: http://developer.android.com/guide/publishing/app-signing.html
la source
Pour ceux d'entre vous qui ne veulent pas créer un fichier bat à éditer pour chaque projet, ou qui ne veulent pas se souvenir de toutes les commandes associées aux programmes keytools et jarsigner et qui veulent simplement le faire en un seul processus, utilisez ce programme:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
Je l'ai construit parce que j'en avais marre du long processus consistant à taper tous les emplacements de fichiers à chaque fois.
Ce programme peut enregistrer votre configuration afin que la prochaine fois que vous le démarrez, il vous suffit d'appuyer sur Générer et il le gérera pour vous. C'est tout.
Aucune installation requise, il est complètement portable et enregistre ses configurations dans un CSV dans le même dossier.
la source
Réponse mise à jour
Vérifiez https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
Ancienne réponse
vérifiez apk-signer un bon moyen de signer votre application
la source