Ne pouvait pas trouver la méthode d'android() pour les arguments lors de la construction du projet Android à partir de gradle

J'ai un gradle-fondé du projet Android avec 4 submodules - deux bibliothèques et les deux applications. J'ai essayé de simplifier la construction.gradle fichiers de chaque sous-module en déplaçant certains de de la code partagé/configurations à haut niveau de construction.gradle fichier et utiliser subprojects {} pour faire de ce code à la disposition de chaque sous-module.

La structure du système de fichiers ressemble à ceci:

Root
 |- App1/
 |- App2/
 |- Lib1/
 |- Lib2/
 |- build.gradle
 |- settings.gradle

Le problème est que si j'ajoute un android {} section pour les sous-projets puis gradle tâches ne. Par exemple, ceci est mon premier niveau de construction.gradle fichier:

subprojects { project ->
  android {
    buildToolsVersion "20.0.0"
  }
}

L'exécution de gradle retourne ceci:

Ce qui s'est passé:
Un problème est survenu l'évaluation de projet racine 'android'.
Ne pouvait pas trouver la méthode d'android() pour les arguments [build_7dngpra6ldok366maq0on77r7e$_run_closure3_closure5@43d95624] sur la racine du projet 'android'.

J'ai cherché pour des postes similaires et certaines personnes suggèrent d'ajouter la ligne apply plugin: 'android' pour chaque sous-projet afin d'exposer le manque android() méthode que gradle est de se plaindre. Cependant, cette solution ne fonctionne pas pour moi, car il serait effectivement ajouter cette ligne à la bibliothèque de projet, qui nécessitent apply plugin: 'android-library' à la place.

Est-il un moyen d'utiliser android {} à l'intérieur de subprojects {} lorsque vous utilisez des applications et des bibliothèques dans le même projet?

InformationsquelleAutor Mike Laren | 2014-10-07