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?
Vous devez vous connecter pour publier un commentaire.
C'est en fait une restriction sur la façon dont le android-plugin gradle est structuré et il y a une solution documentée à le android outils de site web.
La solution proposée est:
Un pense que j'ai remarqué, c'est que cela ne fonctionne pas sur les anciennes versions de gradle (j'ai essayé avec 1.10 et il a eu une erreur). Avec Gradle 2.1 cela semble fonctionner correctement.
Il y a un problème mineur avec user4118620 de réponse... au moins sur Gradle 2.10 lorsque je l'ai utilisé.
Afin d'avoir la clé visibles à l'android modules. Nous avons besoin de placer le poste en vertu de la sous-projet portée
À la racine gradle fichier dont vous avez besoin pour ajouter les éléments suivants
À chacun des submodules il vous suffit alors de suivre ce qu'il a mentionné plus tôt
Vous pouvez trouver les docs sur le gradle multibuild sur le lien suivant
https://docs.gradle.org/current/userguide/multi_project_builds.html#sub:adding_specific_behavior