Comment puis-je spécifier chaque sourceSource buildType?
J'ai 2 saveurs d'une application qui ont chacun leurs propres google maps (v1) à des fins de débogage et de publication (sens 4 touches au total). Donc je voudrais savoir si je peux spécifier sourceSets basé sur la buildType et productFlavor. Essentiellement, je me demande comment je peux obtenir quelque chose comme ceci:
src
├── debug
│ └── flavor1
│ └── res
│ └── values
│ └── gmaps_key.xml
├── release
│ └──flavor1
│ └── res
│ └── values
│ └── gmaps_key.xml
Où gradle utilisera le src/<currentBuldType>/<currentProductFlavor>/*
dans le cadre de son sourceSet.
Essentiellement, je veux qu'elle alors que si je lance gradle assembleFlavor1Debug
il comprendra tout sous src/main/*
src/flavor1/*
et src/debug/flavor1/*
.
Mon build.gradle est super simple:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.0'
}
}
apply plugin: 'android'
android {
compileSdkVersion 8
productFlavors {
flavor1 {
packageName 'com.flavor1'
}
flavor2 {
packageName 'com.flavor2'
}
}
}
Toute pensée? Ou peut-être une meilleure approche de cette?
source d'informationauteur smoak
Vous devez vous connecter pour publier un commentaire.
Pour l'intégration de l'API Google Maps, vous pouvez vérifier ma gradle exemple de code ici : https://github.com/shakalaca/learning_gradle_android/tree/master/07_tricks
Fondamentalement faire une petite astuce dans
android.applicationVariants.all
au cours de lamergeResources
phase, et placez la clé API dans strings.xml sous différentes flaver/buildtype combinaison dossier.Il m'est arrivé de revenir à ce en raison d'un commentaire sur ma réponse et réalisé que cette réponse est superflu (encore mieux que la accepté un qui l'est encore plus). Pour chaque productFlavor et buildType, la combinaison et la personne source ensembles existent déjà. c'est à dire
src/{buildType}
src/{productFlavor}
etsrc/{productFlavor}{buildType}
sont déjà disponibles, les dossiers de la source.Donc, essentiellement, tout ce qui était nécessaire pour l'OP était de mettre les ressources en
src/flavor1Debug
qui est l'équivalent de lasrc/debug/flavor1
que l'OP envisage.VIEILLE RÉPONSE:
J'ai fait quelque chose de similaire avec
buildConfig
mais j'espère qu'il devrait travailler avecsourceSets
.Fondamentalement, vous définissez le commun des trucs à la
productFlavors
niveau dans une variable, et continuez d'ajouter des choses que vous vous déplacez vers le bas.Je n'ai pas testé cette. Je pense que vous pourriez avoir besoin d'utiliser
android.sourceSets
au lieu de simplementsourceSets
.J'ai également nécessaire de définir les ressources distincts pour les
productFlavors
j'ai donc utilisé une déclaration distincte de retard dans le fichier build. Comme:Vous devez simplement être en mesure d'utiliser
android.sourceSets.flavor1.debug
à la place si vous en avez besoin.Également note que, selon le Android Gradle guide de l'utilisateurà l'aide de
srcDir
ajoute le répertoire par défaut des sources etsrcDirs
remplace.