Gradle версия Force build для сторонних библиотек?
Как заставить библиотеку использовать инструменты сборки sdk 19.1.0 или выше без наложения/ручного редактирования файла build.gradle для библиотеки?
Я продолжаю получать эту ошибку при использовании библиотек...
Error:The SDK Build Tools revision (.......) is too low for project ':somelibrary'. Minimum required is 19.1.0
Ответы
Ответ 1
Нелегкий способ сделать это не в моем понимании. Тонны людей используют библиотечные проекты, которые им не принадлежат, должны строить с Дженкинсом или иметь другие причины, чтобы не трогать их и не хотят раскошеливать их для личного использования.
В любом случае, я нашел решение здесь.
Скопирует его здесь на всякий случай:
У вас 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
В основном вы определяете их один раз и можете использовать из любого места.
Приветствия.
Ответ 2
Если вы хотите обновлять значения compileSdkVersion
и buildToolsVersion
только тогда, когда значение buildToolsVersion
слишком мало, вы можете сначала сравнить номер версии подпроекта и обновлять только при необходимости. Таким образом, вы вносите минимальные изменения в другие проекты и имеете меньше проектов, чтобы проверить, если что-то пойдет не так.
Итак, допустим, что Android Studio говорит вам, что вам нужна минимальная версия инструментов сборки 25.0.0
, затем в вашем корневом build.gradle
, вот как вы будете проверять каждый подпроект buildToolsVersion
и изменять его только если он меньше 25.0.0
:
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android") && VersionNumber.parse(project.property("android").buildToolsVersion) < VersionNumber.parse("25.0.0")) {
android {
compileSdkVersion 25
buildToolsVersion '25.0.0'
}
}
}
}