web-dev-qa-db-fra.com

Comment signer un fichier apk Android

J'essaie de signer mon fichier apk. Je n'arrive pas à comprendre comment le faire. Je ne peux pas trouver de bonnes directions en profondeur. J'ai très peu d'expérience en programmation, alors toute aide serait la bienvenue.

105
chriss

Le manuel est assez clair. S'il vous plaît spécifier quelle partie vous êtes coincé après avoir travaillé à travers elle, je suggère:

https://developer.Android.com/studio/publish/app-signing.html

Ok, un petit aperçu sans référence ni Eclipse, laissez donc de la place pour les erreurs, mais ça marche comme ça

  • Ouvrez votre projet dans Eclipse
  • Appuyez avec le bouton droit de la souris -> Outils (outils Android?) -> Exporter une application signée (apk?)
  • Passez par l'assistant:
  • Créez un nouveau magasin de clés. rappelez-vous ce mot de passe
  • Signez votre application
  • Enregistrez-le, etc.

Aussi, à partir du lien:

Compiler et signer avec Eclipse ADT

Si vous utilisez Eclipse avec le plug-in ADT, vous pouvez utiliser Export Wizard pour exporter un fichier .apk signé (et même créer un nouveau magasin de clés, si nécessaire). Export Wizard effectue toute l’interaction avec Keytool et Jarsigner pour vous, ce qui vous permet de signer le package à l’aide d’une interface graphique au lieu d’exécuter les procédures manuelles pour compiler, signer et aligner, comme indiqué ci-dessus. Une fois que l'assistant a compilé et signé votre paquet, il procédera également à l'alignement du paquet avec Zip align. Comme l'exportation Wizard utilise à la fois Keytool et Jarsigner, vous devez vous assurer qu'ils sont accessibles sur votre ordinateur, comme décrit ci-dessus dans la Configuration de base pour la signature.

Pour créer un fichier .apk signé et aligné dans Eclipse:

  1. Sélectionnez le projet dans l'explorateur de packages et sélectionnez Fichier> Exporter.
  2. Ouvrez le dossier Android, sélectionnez Exporter Android Application, puis cliquez sur Suivant.

    L'assistant d'exportation Android Application démarre. Il vous guidera tout au long du processus de signature de votre application, y compris les étapes à suivre pour sélectionner la clé privée avec laquelle signer le fichier .apk (ou créer un nouveau fichier de clés et une clé privée). .

  3. Terminez l'exportation Wizard et votre application sera compilée, signée, alignée et prête à être distribuée.
83
Nanne

Voici un guide sur la façon de signer manuellement un APK. Il comprend des informations sur le nouveau apk-signer introduit dans build-tools 24.0.3(10/2016)

Process automatisé:

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

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

Disclaimer: Je suis le développeur :)

Processus manuel:

Étape 1: générer le magasin de clés (une seule fois)

Vous devez générer un magasin de clés une fois et l’utiliser pour signer votre apk unsigned. Utilisez le keytoolfourni 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, outil fourni par le Android SDK trouvé, par exemple, dans %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.

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

Remarque: Lorsque vous utilisez l'ancien jarsigner, vous devez compresser APRÈS. Lorsque vous utilisez la nouvelle méthode apksigner, vous le faites AVANT signature (confusion, je sais). Invoquer zipalign avant que apksigner fonctionne correctement car apksigner préserve l'alignement et la compression de l'APK (contrairement à jarsigner).

Vous pouvez vérifier l'alignement avec

zipalign -c 4 my-aligned.apk

Étape 3: Signer et vérifier

Utiliser les outils de compilation 24.0.2 et plus anciens

Utilisez jarsigner qui, comme l'outil de clé, est fourni avec la distribution JDK trouvée dans %Java_HOME%/bin/ et utilisez-le comme suit:

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

Utilisation des outils de compilation 24.0.3 et plus récents

Android 7.0 présente APK Signature Scheme v2, un nouveau schéma de signature d'application qui offre des temps d'installation plus courts 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 apk signataire appelé apksigner (duh!). Le fichier de script se trouve dans %Android_HOME%/sdk/build-tools/24.0.3/ (le .jar est dans le sous-dossier /lib ). Utilisez-le comme ça

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 peut être trouvée ici.

31
patrickf

Ne t'inquiète pas ...! Suivez ces étapes ci-dessous et vous obtiendrez votre fichier .apk signé. J'étais aussi inquiet à ce sujet, mais ces étapes me font oublier la frustration. Étapes pour signer votre demande:

  1. Exportez le package non signé:

Faites un clic droit sur le projet dans Eclipse -> Android Outils -> Exporter le package d’application non signé (comme ici, nous exportons notre fichier GoogleDriveApp.apk vers le bureau)

signez l'application à l'aide de votre magasin de clés et de l'outil jarsigner (suivez les étapes ci-dessous):

Ouvrez cmd -> changez le répertoire où votre "jarsigner.exe" existe (comme ici dans mon système, il existe dans "C:\Program Files\Java\jdk1.6.0_17\bin"

Maintenant, entrez la commande belwo dans cmd:

jarsigner -verbose -keystore c:\utilisateurs\Android\debug.keystore c:\utilisateurs\pir fahim\Ordinateurs de bureau\GoogleDriveApp.apk my_keystore_alias

Il vous demandera de fournir votre mot de passe: Entrez Phrase secrète pour le magasin de clés: Il signera votre apk .Pour vérifier que la signature est réussie, vous pouvez exécuter:

jarsigner -verify c:\utilisateurs\pir fahim\Desktops\GoogleDriveApp.apk

Il devrait revenir avec: jar vérifié.

Méthode 2

Si vous utilisez Eclipse avec ADT, il est simple de compiler, signer, aligner et préparer le fichier pour la distribution. Ce que vous devez faire suffit de suivre ces étapes.

  • Fichier> Exporter.
  • Exporter Android application
  • Parcourir -> sélectionnez votre projet
  • Suivant -> Suivant

Ces étapes seront compilées, signées et alignées Zip sur votre projet et vous êtes maintenant prêt à distribuer votre projet ou à le télécharger sur Google Play Store.

8
Pir Fahim Shah

Pour les utilisateurs d'IntelliJ IDEA ou Android Studio, procédez comme suit:
* À partir du menu Build/Generate signed APK
* Vous devez créer un chemin de magasin de clés. Dans la boîte de dialogue, cliquez sur Create new. Vous allez créer un fichier jks contenant vos clés. Sélectionnez un dossier, définissez un mot de passe. Donc, votre magasin de clés ok.
* Créez une nouvelle clé pour votre application en utilisant un alias, un mot de passe, votre nom, etc.
* Cliquez sur Suivant.
* Dans la boîte de dialogue, sélectionnez Proguard ou non.

Votre fichier APK signé est prêt.

Fichier d'aide: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html

7
trante

J'ai rencontré ce problème et a été résolu en vérifiant la version min sdk dans le manifeste. Il était réglé sur 15 (ICS), mais mon téléphone fonctionnait sous 10 (pain d'épice).

2
RJL

Processus de signature APK

Pour signer manuellement un fichier Android APK, exécutez ces trois commandes:

  1. Générer un fichier de clés

    _keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
    _
  2. Signer votre fichier APK en utilisant jarsigner

    _jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
    _
  3. Aligner l'APK signé à l'aide de l'outil zipalign

    _zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH
    _

ÉTAPE 1


_Generate Keystore file_

keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validité 10000

Exemple:

_keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
_

mot de passe du magasin de clés: votreApp @ 123 mot de passe de la clé: votreApp @ 123

CMD O/P

_D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
 -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  MySignedApp Sample
What is the name of your organizational unit?
  [Unknown]:  Information Technology
What is the name of your organization?
  [Unknown]:  MySignedApp Demo
What is the name of your City or Locality?
  [Unknown]:  Mumbai
What is the name of your State or Province?
  [Unknown]:  Maharashtra
What is the two-letter country code for this unit?
  [Unknown]:  IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
  [no]:  y

Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
        for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
 C=IN
Enter key password for <MySignedApp>
        (RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]

D:\ru\SignedBuilds\MySignedApp>
_

ÉTAPE 2


_Sign your app with your private keystore using jarsigner_

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME

Exemple

_jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id
_

CMD O/P

_D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
   adding: META-INF/MANIFEST.MF
   adding: META-INF/---.SF
   adding: META-INF/---.RSA
  signing: AndroidManifest.xml
  ..... 
    signing: classes.dex
  signing: lib/commons-codec-1.6.jar
  signing: lib/armeabi/libkonyjsvm.so
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.

D:\ru\SignedBuilds\MySignedApp>
_

Verify that your APK is signed

jarsigner -verify -verbose -certs JARSIGNED_APK_FILE_PATH

Exemple

_jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
_

CMD O/P

_D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
 s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
 future revocation date.

D:\ru\SignedBuilds\MySignedApp>
_

ÉTAPE 3


Alignez le paquet final APK à l'aide de zipalign

zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK

Exemple

_zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
_

CMD O/P

_D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

  4528613 classes.dex (OK - compressed)
 5656594 lib/commons-codec-1.6.jar (OK - compressed)
 5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>
_

Verify that your APK is Aligned successfully

zipalign -c -v 4 YOUR_APK_PATH

Exemple

_zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
_

CMD O/P

_D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

 4453984 res/drawable/zoomout.png (OK)
 4454772 res/layout/tabview.xml (OK - compressed)
 4455243 res/layout/wheel_item.xml (OK - compressed)
 4455608 resources.arsc (OK)
 4470161 classes.dex (OK - compressed)
 5597923 lib/commons-codec-1.6.jar (OK - compressed)
 5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>
_

Remarque:

La commande verify est juste pour vérifier si APK est construit et signé correctement!

Références

J'espère que cela aidera tout un chacun :)

1
Rupesh Yadav