93 votes

Android Studio : comment générer un apk signé à l'aide de Gradle ?

J'ai cherché sur Google et SO mais je ne trouve pas ma réponse.

C'est la première fois que je travaille avec le système gradle et je suis maintenant au point de générer un APK signé pour le télécharger sur google play (le projet est importé d'eclipse).

Maintenant, j'ai lu la partie ici http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Building-and-Tasks que vous devriez ajouter signingConfigs à votre build.gradle

J'ai ajouté ces lignes et maintenant j'ai vu que vous devez exécuter ./gradlew assembleRelease mais l'exécution de cette commande dans mon cmd renvoie 'gradle' qui n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier batch. J'ai également essayé de cliquer avec le bouton droit de la souris sur le fichier build.gradle et de l'exécuter, en disant que cela avait réussi, mais lorsque je regarde dans le dossier build/apk, seul un fichier appelé app-debug-unaligned.apk

Alors comment puis-je générer l'apk signé en utilisant le système Gradle ?

1 votes

0 votes

@ScottBarta Cela a partiellement fonctionné, une fois que je suis passé en mode release et que j'ai lancé le gradle, j'ai encore eu une erreur, mais en utilisant build > generate signed apk via le menu, cela a fini par fonctionner ! Merci, je vous ai upvoted sur le lien fourni.

0 votes

Signer avec la version v1 (signature jar) ou v2 (signature apk complète) du fichier gradle ? solution ici : stackoverflow.com/questions/57943259/

97voto

pyus13 Points 7318

Il y a trois façons de générer votre build selon le modèle de l'UE. buildType . (Dans votre cas, c'est release mais il peut être nommé comme vous le souhaitez).

  1. Allez dans Gradle Task dans le panneau droit d'Android Studio et recherchez assembleRelease o assemble(#your_defined_buildtype) sous Tâches du module

  2. Allez dans Variante de construction dans le panneau de gauche et sélectionnez la construction dans la liste déroulante.

  3. Allez dans le répertoire racine du projet dans File Explore et ouvrez cmd/terminal et exécutez :

    Linux : ./gradlew assembleRelease or assemble(#your_defined_buildtype)

    Les fenêtres : gradlew assembleRelease or assemble(#your_defined_buildtype)

Si vous voulez faire un release build (seulement), vous pouvez utiliser Build > Generate Signed apk . Pour les autres types de construction, seules les trois options ci-dessus sont disponibles.

Vous pouvez trouver l'APK généré dans votre module/build qui contient le nom du type de construction.

4 votes

Ceci ne construira un apk signé que si vous avez la configuration de construction dans votre build.gradle. Si vous stockez ce code dans des outils de gestion du code source ou si vous le partagez avec d'autres personnes, vous devriez penser à séparer les informations d'identification de votre clé de signature de votre code source.

0 votes

Build > Generate Signed apk ... c'est aussi simple que cela.

65voto

Wayne Piekarski Points 654

Il est possible de prendre n'importe quel projet Android Studio gradle existant et de le construire/signer à partir de la ligne de commande sans modifier aucun fichier. Cela permet de stocker votre projet dans le contrôle de version tout en gardant vos clés et mots de passe séparés :

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD

1 votes

Comme nous devons transmettre le code source au compagnon, c'est la meilleure façon de garder notre keystore secret. Merci.

3 votes

De toute façon, apprendre à connaître ces Android.injected.signing.* l'existence de propriétés ?

0 votes

J'ai obtenu ces informations de Xav de l'équipe Android Studio, et je ne sais pas s'il existe d'autres variables de ce type.

42voto

Ishan Khanna Points 779

Vous pouvez utiliser ce code

android {
   ...
    signingConfigs {
        release {
            storeFile file("../your_key_store_file.jks")
            storePassword "some_password"
            keyAlias "alias_name"
            keyPassword "key_password"
        }
    }

    buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    }
   ...
}

puis, à partir de votre terminal, exécutez

./gradlew assembleRelease

vous obtiendrez l'apk à

votre-application-auto/build/outputs/apk/votre-application-auto-release.apk

0 votes

@ozcanovunc veuillez vérifier à nouveau le chemin de votre keystore, il se peut que le chemin soit mal défini.

0 votes

En faisant cela, il y a des chances que votre build.gradle est enregistré dans le contrôle de version, et vos mots de passe aussi ! Pensez à emprunter une autre voie lorsque la sécurité est importante dans votre projet.

1 votes

Gradle assembleRelease ne fonctionne pas . A utiliser à la place de gradlew assembleRelease

2voto

douglaszuniga Points 226

Je pense que cela peut vous aider https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/ il suffit alors de sélectionner le Release de la Build Variants

-3voto

trickedoutdavid Points 106

Menu "build" > générer un apk signé

0 votes

Si tu l'exécutes, ça te dit que ce n'est pas la bonne façon de faire. De plus, si je télécharge ce fichier .apk, il génère une erreur disant que la détection d'erreur ou autre est activée.

11 votes

Il est dit que le débogage est activé... dans Android studio, sur la gauche, il devrait y avoir un onglet qui dit 'build variants'... cliquez dessus et passez de 'debug' à 'release'... après cela, générez à nouveau l'apk signé...

2 votes

Cela ne fonctionne plus ! Par exemple, l'APK qu'il construit a BuildConfig.DEBUG défini à true. Cela m'a causé des problèmes sans fin, vous devez maintenant utiliser la méthode gradlew assembleRelease.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X