Gradle build для множества проектов Android (включая библиотеки)
У меня есть 2 приложения для Android с 5 модулями Android (проект библиотеки Android). Всего 7 проектов Eclipse. Я хочу включить сборку Gradle для них. я добавил build.gradle
в корневой папке и перечислил весь проект в settings.gradle
include ':app1'
include ':app2'
...
Однако я обнаружил, что мне нужно скопировать и вставить раздел ниже в каждом из 7 проектов
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 1
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
... // and so on like source folders configuration
}
Причина: когда я добавляю apply plugin: 'android'
внутри корня build.gradle
(см. Не удалось найти метод android() в корне многомодульного проекта),
тогда я не могу apply plugin: 'android-library'
для проектов библиотек (см. https://stackru.com/questions/23864292/minimal-gradle-configuration-for-android-library-in-multimodule-project)
Но это то, чего я хочу избежать, указав разные версии инструментов Android и Android в разных местах.
Как я могу минимизировать эту конфигурацию, чтобы иметь как можно больше вещей в одном build.gradle
Конфигурационный файл
2 ответа
Вы можете использовать свой build.gradle
в корне, или вы можете определить некоторые значения в gradle.properties
в корневой папке для достижения вашей области.
Например:
корень /build.gradle
:
ext {
compileSdkVersion = 19
buildToolsVersion = "19.0.3"
}
модуль /build.gradle
:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
ИЛИ используя свойства
корень /gradle.properties
:
VERSION_NAME=1.0.1
VERSION_CODE=11
модуль /build.gradle
:
android {
defaultConfig {
versionName project.VERSION_NAME
versionCode Integer.parseInt(project.VERSION_CODE)
}
Другой вариант был бы, как предложил Питер Нидервизер
либо добавьте некоторую логику в корневой скрипт, чтобы применить нужный плагин к каждому подпроекту (есть разные способы сделать это), либо переместите общие части в скрипт с именем
android.gradle
и применить этот сценарий к каждому подпроекту после применения правильного плагина для этого проекта (все в сценарии сборки подпроекта).
Связанные документы - Глава 56. Сборки нескольких проектов