Чому в проекті Android Studio є два файли build.gradle?


102

Після імпорту проекту Eclipse в Android Studio я бачу два build.gradleфайли:

1 - <PROJECT_ROOT>\build.gradle
2 - <PROJECT_ROOT>\app\build.gradle

Перша версія коротша, друга версія містить визначення для compileSdkVersionтощо.

Яка мета створення двох окремих файлів? Чи існують окремі завдання з побудови?


Відповіді:


72

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

+1 Дякую, миттєво приймемо вашу відповідь. Чи build.gradleобов'язкова наявність файлу для запуску збірки? Також, чи створює файл верхнього рівня файли підрівень? (Хоча доказів цьому немає.)
Сабунку

Файли build.gradle є обов'язковими, якщо ви хочете створити проект з gradle. Android Studio не вимагає ступінь, але настійно рекомендується. Файл верхнього рівня не викликає допоміжні файли; gradle працює із завданнями, але це важко пояснити в коментарі.
Габріеле Маріоти

Велике спасибі Габріеле, це змусить мене розпочати роботу.
Сабунку

1
Особливо rootProject.ext.compileSdkVersionконструкція дуже інформативна.
Сабунку

2
Чи важливо здійснити об’їзд за допомогою ext {...} або ми повинні безпосередньо застосувати плагін Android та compileSdkVersion до файлу збірки верхнього рівня?
PhilLab

17

З офіційної документації:

Проекти Android Studio містять файл збірки Gradle проекту верхнього рівня, який дозволяє додавати параметри конфігурації, загальні для всіх модулів програми в проекті. Кожен модуль додатків також має власний build.gradleфайл для налаштування збірки, специфічного для цього модуля.

введіть тут опис зображення

Файл збірки проекту

<PROJECT_ROOT>\build.gradleабо Файл збірки проекту призначений для всього проекту, тому він буде використовуватися для глобальних конфігурацій проекту. Типовий файл збірки проектів містить наступне:

  • buildscript, який визначає:
    • сховища та
    • залежності
  • Версія плагіна Gradle

За замовчуванням файл Gradle на рівні проекту використовує buildscript для визначення сховищ Gradle та залежностей . Це дозволяє різним проектам використовувати різні версії Gradle. Підтримувані сховища включають JCenter, Maven Central або Ivy. Цей приклад заявляє, що сценарій збірки використовує сховище JCenter та артефакт залежності залежності від класного шляху, який містить плагін Android для Gradle версії 1.0.1.


Файл збірки модулів

<PROJECT_ROOT>\app\build.gradleабо Файл збірки модулів призначений для конкретного модуля, тому він буде використовуватися для конкретних конфігурацій рівня модулів. Побудови модулів Файл містить наступне:

  • налаштування Android
    • compileSdkVersion
    • buildToolsVersion
  • за замовчуванням Конфігурація та продукт
    • властивості маніфесту, такі як applicationId, minSdkVersion, targetSdkVersion та інформація про тест
  • buildTypes
    • побудувати такі властивості, як налагодження, включення ProGuard, підписання налагодження, суфікс імені версії та тестова інформація
  • залежності

ви можете прочитати офіційні документи тут:

Проекти та модулі будують налаштування

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.