Почему в проекте Android Studio есть два файла build.gradle?
После импорта проекта Eclipse в Android Studio я вижу два файла build.gradle
:
1 - <PROJECT_ROOT>\build.gradle
2 - <PROJECT_ROOT>\app\build.gradle
Первая версия короче, вторая версия содержит определения для compileSdkVersion
и т.д.
В чем заключается назначение двух отдельных файлов? Существуют ли отдельные задачи сборки?
Ответы
Ответ 1
<PROJECT_ROOT>\app\build.gradle
специфичен для модуля приложения.
<PROJECT_ROOT>\build.gradle
является "файлом сборки верхнего уровня" , где вы можете добавить параметры конфигурации, общие для всех подпроектов/модулей.
Если вы используете другой модуль в своем проекте, в качестве локальной библиотеки у вас будет другой файл build.gradle
:
<PROJECT_ROOT>\module\build.gradle
В примере в файле верхнего уровня вы можете указать эти общие свойства:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}
ext {
compileSdkVersion = 23
buildToolsVersion = "23.0.1"
}
В app\build.gradle
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
Ответ 2
Из официальной документации:
Проекты Android Studio содержат файл сборки проекта Gradle верхнего уровня, который позволяет добавлять параметры конфигурации, общие для всех модулей приложения в проекте. Каждый модуль приложения также имеет собственный файл build.gradle
для настроек сборки, специфичных для этого модуля.
![enter image description here]()
Файл сборки проекта
<PROJECT_ROOT>\build.gradle
или Файл сборки проекта для всего проекта, поэтому он будет использоваться для глобальных конфигураций проектов.
Типичный файл сборки проекта содержит следующее:
- buildscript, который определяет:
- репозитории и
- зависимостей
- Gradle Версия плагина
По умолчанию файл Gradle на уровне проекта использует buildscript для определения репозиториев Gradle и зависимостей. Это позволяет различным проектам использовать разные версии Gradle. Поддерживаемые репозитории включают JCenter, Maven Central или Ivy. В этом примере объявляется, что в сборке script используется репозиторий JCenter и артефакт зависимости элемента classpath, который содержит плагин Android для Gradle версии 1.0.1.
Файл сборки модуля
<PROJECT_ROOT>\app\build.gradle
или Файл сборки модуля предназначен для специального модуля, поэтому он будет использоваться для определенных конфигураций уровня модуля.
Файл сборки модуля содержит следующее:
- Настройки Android
- compileSdkVersion
- buildToolsVersion
- defaultConfig и productFlavors
- проявлять свойства, такие как applicationId, minSdkVersion, targetSdkVersion и тестовые данные
- buildTypes
- создавать такие свойства, как отладка, включение ProGuard, подпись отладки, суффикс имени версии и тестовая информация.
- зависимостей
вы можете прочитать официальные документы здесь:
Настройки сборки проектов и модулей