Comment signer un Apk déjà compilé

j'ai décodé un APK avec apktool (car le code source original était perdu) pour pouvoir corriger quelques 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 périphérique (en utilisant adb: adb install appname.apk) il m'a donné cette erreur:

[INSTALL_PARSE_FAILED_NO_CERTIFICATES]

l'apk originale cependant a été signée par un keystore (sur eclipse IDE), celui-ci n'est pas, comment puis-je le signer correctement avec son fichier keystone original en dehors de Eclipse!?

81
demandé sur for3st 2012-06-07 14:51:12

6 réponses

créer une clé en utilisant

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

signe alors l'apk en utilisant:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

Cliquez ici pour plus d'informations

178
répondu user3854546 2014-07-18 21:46:40

Processus Automatisé:

Utilisez cet outil (utilise le nouveau apksigner de Google):

https://github.com/patrickfav/uber-apk-signer

clause de non-responsabilité: Im the developer :)

Processus Manuel:

Etape 1: Générer un fichier de clés (une seule fois)

vous devez générer un keystore une fois et l'utiliser pour signer votre unsigned apk. Utilisez le keytool fourni par le JDK trouvé dans %JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

É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 voulez télécharger l'apk à la boutique Play.

zipalign -p 4 my.apk my-aligned.apk

Note: lorsque vous utilisez l'ancienne jarsigner vous devez zipalign après signature. Lorsque vous utilisez la nouvelle méthode apksigner vous le faites avant signature (confus, je sais). invoquant zipalign avant apksigner fonctionne très bien parce qu'apksigner préserve l'alignement et la compression APK (contrairement à jarsigner).

Vous pouvez vérifier l'alignement avec

zipalign -c 4 my-aligned.apk

Étape 3: Signer Et Vérifier

utilisant des outils de construction 24.0.2 et plus

Utiliser jarsigner qui, à l'instar de l'utilitaire keytool, est livré avec le JDK de distribution dans %JAVA_HOME%/bin/ et de l'utiliser de la sorte:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

et peut être vérifié avec

jarsigner -verify -verbose my_application.apk

utilisant les outils de construction 24.0.3 et le plus récent

Android 7.0 présente APK signature Scheme v2, un nouveau système de signature d'applications qui offre des temps d'installation plus rapides et plus de protection contre les modifications non autorisées aux fichiers APK (voir ici et ici pour plus de détails). Par conséquent, Google a mis en œuvre leur propre Signeur apk appelé apksigner (duh!) Le fichier de script se trouve dans %ANDROID_HOME%/sdk/build-tools/24.0.3/ (the .jar est dans le /lib sous-dossier). Utilisez-le comme ceci

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

et peut être vérifié avec

apksigner verify my-app.apk

la documentation officielle se trouve ici.

39
répondu for3st 2017-09-26 19:37:53

la manière la plus rapide est en signant avec le débug keystore:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore app.apk androiddebugkey -storepass android

ou sur Windows:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore %USERPROFILE%/.android/debug.keystore test.apk androiddebugkey -storepass android
8
répondu Pellet 2017-11-22 20:32:23

vous utilisez jarsigner pour signer APK. Vous n'avez pas à signer avec le keystore original, il suffit d'en générer un nouveau. Lire les détails: http://developer.android.com/guide/publishing/app-signing.html

5
répondu Nikolay Elenkov 2012-06-08 02:33:44

vérifier apk-signataire une belle façon de signer votre application

3
répondu shereifhawary 2016-05-21 10:30:37

pour ceux d'entre vous qui ne veulent pas créer un fichier bat pour é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 juste le faire dans un processus utilisez ce programme:

http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx

Je l'ai construit parce que j'en avais marre de devoir taper tout le fichier les emplacements de tous les temps.

ce programme peut enregistrer votre configuration de sorte que la prochaine fois que vous le démarrez, vous avez juste besoin de frapper générer un il va gérer pour vous. C'est tout.

pas d'installation nécessaire, il est complètement portable et enregistre ses configurations dans un CSV dans le même dossier.

2
répondu Luke Alderton 2016-08-14 20:01:54