Signer son application avec Gradle

Envie de publier votre application sur le play store ou d’utiliser un service Google ? et bien sachez que il sera obligatoire de signer votre application.

2 options s’offrent à vous, cliquer sur Build > Generate Signed APK et remplir à chaque fois toujours les mêmes informations, ou la méthodes dont je vais vous parler lors de ce tutoriel.

Le saviez vous ?

La publication d’une application nécessite qu’elle soit signée, afin de pouvoir authentifier sa provenance, et donc être sure lors de la mise à jour de l’application que le nouveau build est bien issu de la même équipe dé développement.

Cette authentification est souvent nécessaire lors de l’accès aux services google, tel que Google Maps.

Créer un KeyStore

Pour signer votre application sous Android, il est nécessaire de disposer d’un KeyStore, notre gardien des clés 🙂

Je vais vous montrer les deux façons de le créer : avec Android studio ou en ligne de commande.

En ligne de commande

Si votre application s’appelle ListViewSample :

keytool -keystore NOM_DU_KEYSTORE -genkey -alias NOM_DU_PROJET

Ce qui donne :

keytool -keystore MyKeyStore.jks -genkey -alias ListViewSample

Capture d’écran 2015-06-30 à 17.55.44

 

Ce qui générera le fichier MyKeyStore.jks

Depuis Android Studio

Dans les menus d’Android Studio, sélectionnez Build, puis Generate Signed APK…

Capture d’écran 2015-06-30 à 17.58.01

Indiquez ensuite le module à exporter, nous choisirons ici app, étant notre module principal

Capture d’écran 2015-06-30 à 17.58.17

 

Nous souhaitons créer un keystore, clickez donc sur Create new…

Capture d’écran 2015-06-30 à 17.58.28

 

Puis comme la version terminal, remplissez les champs suivants (les champs Certificate ne sont pas tous obligatoires)

Capture d’écran 2015-06-30 à 17.59.25

Ce qui générera le fichier MyKeyStore.jks

Signer son application

Avec gradle, nous pouvons directement signer l’application lors de sa compilation. Pour se faire il suffit de lui indiquer l’emplacement de notre fichier .jks, ainsi que les mots de passe à utiliser.

Commençons par placer notre fichier MyKeystore.jks dans le module app/

Capture d’écran 2015-07-01 à 13.17.36

Deuxième étape, définit une méthode de signature dans les signingConfigs de la section android de notre build.gradle
Pensez à indiquer le storePassword, l’alias à utiliser (keyAlias) ainsi que la clé du associée à cet alias (keyPassword).

signingConfigs {
    release {
        storeFile file(project.file("MyKeyStore.jks"))
        storePassword "myStorePassword"
        keyAlias "ApkSignSample"
        keyPassword "myPassword"
    }
}

Enfin, utiliser cette signature lors de la compilation en mode release : android/buildTypes/release

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

        //puis on l'utilise afin de signer notre apk en mode release
        signingConfig signingConfigs.release
    }
}

Ce qui donne au complet :

app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.0"

    defaultConfig {
        applicationId "com.tutosandroidfrance.apksignsample"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    //on créé une signature de release
    signingConfigs {
        release {
            storeFile file(project.file("MyKeyStore.jks"))
            storePassword "myStorePassword"
            keyAlias "ApkSignSample"
            keyPassword "myPassword"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

            //puis on l'utilise afin de signer notre apk en mode release
            signingConfig signingConfigs.release
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
}

Générer un APK signé

Afin de générer votre apk depuis gradle, il vous suffit d’exécuter la commande suivante dans le terminal

./gradlew assembleRelease

L’apk sera placé dans le repertoire app/build/output/apk/app-release.apk

Il est aussi possible d’utiliser les raccourcis gradle d’Android Studio afin d’utiliser assembleRelease

Capture d’écran 2015-07-01 à 13.34.45

Les sources de ce tutoriel sont disponibles sur github

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *