Comment puis-je ajouter des saveurs dans un module avec Android Studio?

J'ai une série de projets qui utilisent le même module, qui contient presque tout le code. Le projet est configuré comme:

project/
  - app/
    - build.gradle
  - libraries/
    - module/
      - build.gradle
  - build.gradle
  - settings.gradle

Les dépendances sont toutes configurées correctement, et je peux créer et exécuter des applications très bien, mais je ne peux qu'ajouter des saveurs au projet, ce qui n'est pas la solution idéale. paramètres.gradle contient les éléments suivants:

include ':app', ':libraries:module'

Dans la construction du répertoire de l'application.gradle fichier, j'ai ajouté le bloc suivant:

productFlavors {
    alpha
    production
}

En utilisant gradle 0.11, cette synchronise et crée assembleAlphaDebug, assembleAlphaRelease, assembleProductionDebug, assembleProductionRelease tâches. Quand j'essaie de le faire dans le module à la place, j'obtiens l'erreur:

Aucune ressource trouvée qui correspond au nom donné (à 'theme' avec la valeur '@style/MyCustomTheme')

Dans le app/src/main/AndroidManifest.xml construit. Pour une raison quelconque, le module n'est pas en cours de construction, de sorte que le thème personnalisé ne fonctionne pas. Ce que je fais mal?

25
demandé sur Phil 2014-06-19 17:17:56

1 réponses

Dans la construction du module de bibliothèque.gradle, vous avez besoin de quelques lignes supplémentaires pour lui dire d'exporter les saveurs et quelle variante de construction à utiliser par défaut si elle n'est pas spécifiée lors de l'inclusion d'un autre module:

android {
    defaultPublishConfig "productionRelease"
    publishNonDefault true

    productFlavors {
        alpha {
        }
        production {
        }
    }
}

Ce bit publishNonDefault n'est nécessaire que si quelqu'un veut dépendre d'autre chose que la variante productionRelease. Sans doute c'est le cas si vous configurez multi-saveurs dans votre bibliothèque, en premier lieu.

Maintenant, si vous ajoutez une dépendance d'un autre module via ceci dans sa construction.gradle:

dependencies {
    compile project(':module')
}

Cela dépendra de la variante productionRelease par défaut. Si vous souhaitez dépendre d'une variante non par défaut:

dependencies {
    compile project(path: ':module', configuration:'alphaDebug')
}
66
répondu Scott Barta 2014-09-18 13:32:34