web-dev-qa-db-fra.com

Android Studio: comment créer un deuxième type de construction de débogage

Je veux créer un deuxième type de construction qui devrait fonctionner exactement comme le type de débogage déjà existant. Actuellement, j'ai deux types de construction: debug et release. Le fichier de débogage peut être exécuté en un seul clic et est automatiquement signé avec le magasin de clés de débogage. Je compile manuellement la version de publication à l'aide de l'assistant Build -> Generate signed APK.

Donc, pour cloner le type de construction de débogage, j'ai d'abord ajouté un deuxième type de construction nommé "local" au fichier build.graddle de l'application:

buildTypes {
    ...
    debug {
        debuggable true
        minifyEnabled false
    }
    local {
        debuggable true
        minifyEnabled false
    }
}

Ensuite, j'ai créé app/src/local/res et ajouté des fichiers.

Ensuite, je fais une resynchronisation de niveau et sélectionnez le nouveau type de construction dans l'onglet de gauche: build type tab

Enfin, je clique sur le bouton d'exécution et je m'attendais à ce qu'il fonctionne. Cet article d'aide IntelliJ indique que la configuration de signature de débogage est la configuration par défaut:

Cela signifie que si vous ne configurez pas d'artefact manuellement et que Sélectionnez l'option Déployer l'APK par défaut dans la configuration d'exécution/de débogage: Application Android, IntelliJ IDEA utilisera les valeurs prédéfinies dans le certificat pour le généré

Au lieu de cela, cette boîte de dialogue est affichée:

run dialog

Lorsque je clique sur le bouton Réparer, la boîte de dialogue de configuration de la signature s'ouvre pour l'ensemble du module de l'application. Cependant, je ne veux pas signer cet apk pour publication, il me faut le signer avec le cert. De débogage. De plus, j'ai remarqué qu'une nouvelle tâche assembleLocal gradle a été créée, mais qu'elle génère un apk non aligné. Dans ce dossier, je peux voir que les apks de débogage habituels sont générés correctement dans leurs versions finale et non alignée.

Comment sur Terre puis-je simplement cloner le type de construction de débogage?

17
Mister Smith

Vous pouvez spécifier dans le fichier build.gradle laquelle signingConfig doit être utilisée avec buildType.

Pour vous connecter en utilisant la même signingConfig que le debug buildType par défaut, utilisez ce qui suit:

buildTypes {
    local {
        signingConfig signingConfigs.debug
    }

    /* NOTE: the debug block is not required because it is a default
     * buildType configuration; all of its settings are defined implicitly
     * by Android Studio behind the scenes.
     */
}

Si vous préférez utiliser un magasin de clés personnalisé situé sur votre système local, utilisez plutôt les éléments suivants:

signingConfigs {
    local {
        storeFile file("/path/to/custom.keystore")
        storePassword "password"
        keyAlias "MyLocalKey"
        keyPassword "password"
    }
}

buildTypes {
    local {
        signingConfig signingConfigs.local
    }
}
25
Gabriele Mariotti

En outre, vous pouvez rendre votre type de construction similaire au débogage en utilisant:

initWith(buildTypes.debug)

Voici un exemple:

...
buildTypes {

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://theidasworld.com"'
    }
    debug {
        versionName 'APP BETA'
        buildConfigField "Integer", "PIN", "0000"  
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://debug.theidasworld.com"'
    }
    inspection {
        initWith(buildTypes.debug) // keep versionName and PIN from 'debug'
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://inspection.theidasworld.com"'
    }
}
...
24
ivan.panasiuk

Une autre façon pourrait être d'utiliser des saveurs.

Exemple:

producFlavors{

app1{}

app2{}

}
1
Azrael94