Looking for android Answers? Try Ask4KnowledgeBase
Looking for android Keywords? Try Ask4Keywords

Android Signer APK sans exposer le mot de passe du magasin de clés


Exemple

Vous pouvez définir la configuration de signature pour signer le fichier build.gradle dans le fichier build.gradle en utilisant ces propriétés:

  • storeFile : le fichier de storeFile
  • storePassword : le mot de passe du storePassword
  • keyAlias : un nom d'alias de clé
  • keyPassword : un mot de passe alias de clé

Dans de nombreux cas, vous devrez peut-être éviter ce genre d’informations dans le fichier build.gradle .

Méthode A: Configurer la signature de version à l'aide d'un fichier keystore.properties

Il est possible de configurer le build.gradle votre application pour qu'il lise vos informations de configuration de signature à partir d'un fichier de propriétés tel que keystore.properties .

Mettre en place une telle signature est bénéfique car:

  • Vos informations de configuration de signature sont distinctes de votre fichier build.gradle
  • Vous n'avez pas besoin d'intervenir pendant le processus de signature pour fournir des mots de passe pour votre fichier de clés.
  • Vous pouvez facilement exclure le fichier keystore.properties du contrôle de version

Tout d'abord, créez un fichier appelé keystore.properties à la racine de votre projet avec un contenu comme celui-ci (en remplaçant les valeurs par les vôtres):

storeFile=keystore.jks
storePassword=storePassword
keyAlias=keyAlias
keyPassword=keyPassword

Maintenant, dans le fichier build.gradle votre application, configurez le bloc signingConfigs comme suit:

android {
...

    signingConfigs {
        release {
            def propsFile = rootProject.file('keystore.properties')
            if (propsFile.exists()) {
                def props = new Properties()
                props.load(new FileInputStream(propsFile))
                storeFile = file(props['storeFile'])
                storePassword = props['storePassword']
                keyAlias = props['keyAlias']
                keyPassword = props['keyPassword']
            }
        }
    }
}

C'est tout ce qu'il y a à faire, mais n'oubliez pas d'exclure votre fichier de clés et votre fichier keystore.properties du contrôle de version .

Quelques points à noter:

  • Le chemin storeFile spécifié dans le fichier keystore.properties doit être relatif au fichier build.gradle votre application. Cet exemple suppose que le fichier de clés se trouve dans le même répertoire que le fichier build.gradle l'application.
  • Cet exemple contient le fichier keystore.properties à la racine du projet. Si vous le placez ailleurs, veillez à changer la valeur dans rootProject.file('keystore.properties') à l'emplacement de votre compte, par rapport à la racine de votre projet.

Méthode B: En utilisant une variable d'environnement

La même chose peut être réalisée sans fichier de propriétés, ce qui rend le mot de passe plus difficile à trouver:

android {

  signingConfigs {
    release {
        storeFile file('/your/keystore/location/key')
        keyAlias 'your_alias'
        String ps = System.getenv("ps")
        if (ps == null) {
             throw new GradleException('missing ps env variable')
        }
        keyPassword ps
        storePassword ps
    }
}

La variable d'environnement "ps" peut être globale, mais une approche plus sûre peut être en l'ajoutant uniquement au shell d'Android Studio.
Dans Linux, cela peut être fait en éditant Desktop Entry Android Studio

Exec=sh -c "export ps=myPassword123 ; /path/to/studio.sh"

Vous pouvez trouver plus de détails dans cette rubrique .