Comment faire pour modifier l'application Android du nom de package lors de l'assemblage avec Gradle?
Est-il possible de modifier le nom du package d'une application Android à l'aide de Gradle?
J'ai besoin de compiler les deux copies de la même application, d'avoir un unique nom du package (pour que je puisse les publier dans le marché deux fois).
Vous devez vous connecter pour publier un commentaire.
Vous pourriez donc quelque chose comme cela
Vous pouvez également modifier le champ
android.defaultConfig.applicationId
si vous voulez faire un off construit.Prises à partir de: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration
gradle assembleFlavor1Debug
ougradle assembleFlavor2Release
.gradle tasks
est également utile.packageName
a été renomméapplicationId
(etflavorGroups
=>flavorDimensions
) dans Android plugin Gradle version 1.0. (Pensez à mettre à jour la réponse.)packageName
n'est pas le même queapplicationId
, voir tools.android.com/tech-docs/new-build-system/...Comme une alternative plus simple à l'aide de produit saveurs comme dans d'Ethan répondre, vous pouvez également personnaliser construire des types.
Comment choisir entre les approches:
(Je suppose que vous pouvez également combiner les deux approches, ce qui aurait pour résultat de chaque établir la variante distinctes ayant le nom du paquet, mais je n'ai pas testé.)
Type de Build configuration
Pour debug type de build, et tous les autres non-libération types de définir
applicationIdSuffix
qui seront ajoutés à la valeur par défaut du nom du package.(Avant Android plugin Gradle la version 0.11 ce paramètre a été connu comme
packageNameSuffix
.)Ci-dessus,
debug
etrelease
sont par défaut de construire des types dont certains aspects sont configurés, tandis quebeta
est entièrement personnalisé type de build. Pour construire les différents types, utilisationassembleDebug
,assembleBeta
, etc, comme d'habitude.De même, vous pouvez utiliser
versionNameSuffix
pour remplacer la valeur par défaut nom de la version de AndroidManifest (que je trouve très utile!). E. g. "0.8" → "0.8-BETA", comme défini ci-dessus.Ressources:
Moi-même j'ai été en utilisant
productFlavors
jusqu'à présent pour cet objectif précis, mais il semble de construire type de personnalisation peut être plus proche de mes besoins, de plus il garde la construire config plus simple.Mise à jour (2016): depuis, j'ai utilisé cette approche dans tous mes projets, et je pense que c'est certainement le chemin à parcourir. J'ai aussi eu inclus dans Android Meilleures Pratiques guide par Futurice.
gradle assembleDebug
, il ne produira quemyapp-debug-unaligned.apk
. La construction d'un type personnalisé commebeta
ci-dessus,assembleBeta
produira à la fois demyapp-beta-unaligned.apk
etmyapp-beta.apk
(aligné c'est à dire optimisé), moins, vous pouvez définirzipAlign false
pour ce type. Voir "Les propriétés possibles et leurs valeurs par défaut" dans le Guide de l'Utilisateur. Je suppose qu'il est généralement acceptable d'utiliser seulement zipAlign uniquement pour réel release.applicationIdSuffix
vous spécifiquement changer l'ID de l'application (nom de paquet), ce qui signifie que vous certainement peut de bêta et de débogage installé en même temps. En plus, ma réponse montre comment personnaliser le nom de version (que vous avez peut par exemple montrer l'intérieur de l'application) à l'aide deversionNameSuffix
.Avec le plugin gradle version 1.0.0+, vous devez utiliser identificateur applicationid comme indiqué dans le guide de migration
Donc dans votre construction.gradle, on doit maintenant l'utiliser:
De Ethan réponse, à la fois flavorGroups et packageName les deux ne sont plus disponibles. Ci-dessous fonctionne en Mars 2015.