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'
            }
        }
    }
}