У меня есть проект Android с gradle с четырьмя подмодулями - две библиотеки и два приложения. Я пытался упростить файлы build.gradle каждого подмодуля, переместив некоторые из общих кодов/конфигураций в файл build.gradle верхнего уровня и используя subprojects {}
, чтобы сделать этот код доступным для каждого подмодуля.
Структура файловой системы выглядит следующим образом:
Root
|- App1/
|- App2/
|- Lib1/
|- Lib2/
|- build.gradle
|- settings.gradle
Проблема заключается в том, что если я добавлю раздел android {}
в подпроекты, то gradle выполняются задачи. Например, это мой файл build.gradle верхнего уровня:
subprojects { project ->
android {
buildToolsVersion "20.0.0"
}
}
Запуск gradle возвращает это:
Что пошло не так: Возникла проблема оценки корневого проекта "андроид". Не удалось найти метод android() для аргументов [build_7dngpra6ldok366maq0on77r7e $_run_closure3_closure5 @43d95624] в корневом проекте 'android'.
Я искал похожие сообщения, и некоторые люди предлагают добавить строку apply plugin: 'android'
в каждый подпроект, чтобы разоблачить отсутствующий метод android()
, о котором жалуется gradle. Однако это решение не работает для меня, потому что оно эффективно добавит этот проект в библиотеку, для которого вместо этого требуется apply plugin: 'android-library'
.
Есть ли способ использовать android {}
внутри subprojects {}
, когда у вас есть приложения и библиотеки в одном проекте?