Как заставить подпроект gradle использовать rootToolsVersion / compileSdkVersion корневого проекта?

Ищете какой-то умный способ сделать это только один раз, например

allprojects { android { buildToolsVersion '18.0.1' compileSdkVersion 18 defaultConfig { targetSdkVersion 18 } } } 

В противном случае мне нужно выполнить эту задачу в каждом подпроекте (например, в справочной библиотеке, такой как volley или viewpagerindicator) каждый раз, когда доступно новое обновление SDK.

Обычно корневой проект не содержит кода и, следовательно, вы будете использовать subprojects . Также вам придется применить плагин Android до блока android {} . Кроме этого, я ожидаю, что это сработает.

Я ответил еще на один вопрос:

Я нашел решение здесь .

Скопируем его здесь на всякий случай:

У вас root build.gradle add

 ext { compileSdkVersion = 20 buildToolsVersion = "20.0.0" } subprojects { subproject -> afterEvaluate{ if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) { android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion } } } } 

Это применит compileSdkVersion и buildToolsVersion к любым вашим Android-модулям.

И в зависимости от вашего основного проекта build.gradle меняются зависимости:

 compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion 

В основном вы определяете их один раз и можете использовать из любого места.

Приветствия.