Статьи

Входы и выходы Gradle

Будучи первой интегрированной средой разработки (IDE), полностью посвященной Android, Android Studio, поддерживаемая Google, представляет собой захватывающую перспективу для разработчиков Android. Но это также означает, что нужно освоить некоторые новые технологии, особенно систему сборки Gradle.

В этой статье вы познакомитесь с новой системой сборки Android, от основ того, что представляет собой Gradle и чем он занимается, до детального изучения некоторых наиболее важных файлов Gradle и изучения процесса выполнения и мониторинга задач Gradle.

Вы также познакомитесь с различными окнами инструментов Gradle в Android Studio и узнаете, как добавлять зависимости в проект, причем все это без необходимости в предыдущем опыте Gradle.

Первым шагом в освоении новой системы сборки Android является понимание того, что такое Gradle и почему его включение в Android Studio является такой хорошей новостью для разработчиков Android.

Gradle — это автоматизированный инструментарий для сборки, который может интегрироваться во множество различных сред с помощью плагинов. В Android Studio интеграция с Gradle достигается с помощью точно названного плагина Android Gradle.

Если вы никогда ранее не использовали Gradle, это может показаться разочаровывающим барьером для входа, когда вы собираетесь перейти на Android Studio. Тем не менее, у Gradle есть что предложить разработчикам Android, поэтому стоит потратить некоторое время на изучение всех возможностей Gradle. Вот лишь некоторые из вещей, которые вы можете сделать с Gradle.

Gradle имеет набор параметров конфигурации по умолчанию, которые автоматически применяются к каждому проекту, который вы создаете в Android Studio. Если вы разрабатываете проект, который не придерживается этих правил конфигурации по умолчанию, Gradle легко настроить.

Зависимости могут быть модулями, файлами JAR или библиотеками, и они могут быть расположены либо в локальной файловой системе, либо на удаленном сервере.

Gradle автоматически создает тестовый каталог и тестовый APK из тестовых источников вашего проекта и может запускать ваши тесты во время процесса сборки.

Если вы добавите всю необходимую информацию, такую ​​как keyPassword и keyAlias , в свой файл сборки Gradle, вы можете использовать Gradle для создания подписанных APK.

Gradle может генерировать несколько APK с разными пакетами и создавать конфигурации из одного модуля. Эта функция особенно удобна для разработчиков Android по нескольким причинам:

Большая часть разработки для платформы Android — поддержка как можно большего количества различных устройств Android и версий операционной системы Android. В магазине Google Play даже есть поддержка нескольких APK , поэтому вы можете создавать несколько версий своего приложения, где каждая версия ориентирована на свою конфигурацию устройства, предлагая их в виде одного списка Play store.

Вот тут-то и появляется Gradle. Вы можете использовать новую систему сборки Android для генерации нескольких вариантов APK из одного модуля. Просто дайте этим вариантам одинаковое имя пакета, и вы сможете загрузить их в тот же список Google Play.

Иногда вам может понадобиться перечислить несколько версий вашего приложения в магазине Play, например, если вы предлагаете бесплатную и «Pro» версию своего приложения. Опять же, вы можете использовать Gradle для создания нескольких APK из одного модуля и присвоить каждому APK отдельное имя пакета. Затем вы можете загрузить каждый APK в магазин Play отдельно.

Всякий раз, когда вы создаете проект в Android Studio, система сборки автоматически генерирует все необходимые файлы сборки Gradle.

Поскольку вы будете сталкиваться с одним и тем же набором файлов Gradle при каждом создании проекта Android Studio, мы создадим базовый пример проекта, а затем более внимательно рассмотрим эти автоматически созданные файлы.

Первый шаг — создание вашего примера проекта:

  1. Запустите Android Studio.
  2. Нажмите Начать новый проект Android Studio .
  3. Дайте вашему проекту имя, введите домен и выберите, где будет храниться ваш пример проекта. Нажмите Далее.
  4. Убедитесь, что выбран только Телефон и планшет , и примите настройки SDK по умолчанию. Нажмите Далее.
  5. Выберите « Пустое действие» и нажмите « Далее».
  6. Придерживайтесь настроек по умолчанию и нажмите Готово.

Файлы сборки Gradle используют домен-специфический язык или DSL для определения пользовательской логики сборки и взаимодействия со специфичными для Android элементами плагина Android для Gradle.

Проекты Android Studio состоят из одного или нескольких модулей, которые можно создавать, тестировать и отлаживать независимо. Каждый модуль имеет свой собственный файл сборки, поэтому каждый проект Android Studio содержит два типа файлов сборки Gradle:

  • Файл сборки верхнего уровня. Здесь вы найдете параметры конфигурации, общие для всех модулей, составляющих ваш проект.
  • Файл сборки на уровне модуля : каждый модуль имеет свой собственный файл сборки Gradle, который содержит специфичные для модуля настройки сборки. Вы потратите большую часть своего времени на редактирование файлов сборки уровня модуля, а не файла сборки верхнего уровня проекта.

Чтобы взглянуть на эти файлы build.gradle, откройте панель « Проект» в Android Studio (выбрав вкладку « Проект ») и разверните папку « Сценарии Gradle ». В нашем примере проекта первые два элемента в списке — это файлы сборки верхнего уровня и уровня модуля вашего проекта.

Первые два элемента в папке Gradle Scripts - это файлы сборки Gradle уровня проекта и уровня модуля.

В нашем примере проекта есть только один файл сборки уровня модуля, но на снимке экрана ниже показано, как папка Gradle Scripts может выглядеть для проекта с несколькими модулями.

Пример того, как выглядит папка Gradle Scripts для проекта с несколькими модулями

Каждый проект Android Studio содержит один файл сборки Gradle верхнего уровня. Этот файл build.gradle является первым элементом, который появляется в папке Gradle Scripts и четко помечен как Project.

В большинстве случаев вам не нужно вносить какие-либо изменения в этот файл, но все равно полезно понимать его содержимое и роль, которую он играет в вашем проекте. Ниже приведена аннотированная версия типичного файла сборки верхнего уровня.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
buildscript {
 
//Project-level Gradle build files use buildscript to define dependencies.//
 
    repositories {
 
        jcenter()
    }
 
//This file relies on the jJCenter repository.//
 
    dependencies {
 
   classpath ‘com.android.tools.build:gradle:1.0.0’
 
//Project is dependent on version 1.0.0 of the Android plugin for Gradle.//
 
    }
}
 
allprojects {
 
//Defines the dependencies required by your application.//
 
    repositories {
        jcenter()
    }
}
 
//Application depends on the jCenter repository.//

В дополнение к файлу сборки Gradle уровня проекта каждый модуль имеет собственный файл сборки Gradle. Ниже приведена аннотированная версия базового файла сборки Gradle на уровне модуля.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
apply plugin: ‘com.android.application’
 
//Since this project is an Android app, the build.gradle file utilises the Android plugin.//
 
android {
 
//The following section configures all your project’s Android-specific parameters, and tells Gradle which version of Android it should build your project with.
 
    compileSdkVersion 21
 
//The API your project is targeting.//
 
    buildToolsVersion «21.1.1»
 
////The version of the build tools you want to use.//
 
    defaultConfig {
 
        applicationId «com.example.jessica.myapplication»
 
//Defines your application’s ID.
 
        minSdkVersion 16
 
//The minimum API required by your project.//
 
        targetSdkVersion 21
 
//The version of Android you’re developing your application for.//
         
versionCode 1
 
        versionName «1.0»
    }
 
    buildTypes {
        release {
 
//’BuildTypes’ controls how your app is built and packaged.
 
            minifyEnabled true
 
//Gradle runs ProGuard during the build process.//
 
            proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
 
//Applies the default ProGuard settings from the Android SDK.//
 
        }
    }
}
 
dependencies {
 
//Declares the dependencies for the current module.//
 
   compile fileTree(dir: ‘libs’, include: [‘*.jar’])
 
//Although you can add JAR files by compiling them individually, this can be time-consuming if you have lots of JARs.
 
  compile ‘com.android.support:appcompat-v7:21.0.3’
 
//To create more dependencies, add them to the depencies closure.//
 
}

В дополнение к файлам build.gradle ваша папка Gradle Scripts содержит некоторые другие файлы Gradle. В большинстве случаев вам не нужно будет вручную редактировать эти файлы, так как они будут обновляться автоматически при внесении любых соответствующих изменений в ваш проект. Тем не менее, это хорошая идея, чтобы понять роль этих файлов в вашем проекте.

Этот файл позволяет другим людям создавать ваш код, даже если у них на компьютере не установлен Gradle. Этот файл проверяет, установлена ​​ли правильная версия Gradle, и при необходимости загружает необходимую версию. В нашем примере приложения gradle-wrapper.properties содержит следующее:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
distributionBase=GRADLE_USER_HOME
 
//Determines whether the unpacked wrapper distribution should be stored in the project, or in the Gradle user home directory.//
 
distributionPath=wrapper/dists
 
//The path where the Gradle distributions required by the wrapper are unzipped.//
 
zipStoreBase=GRADLE_USER_HOME
 
zipStorePath=wrapper/dists
 
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
 
//The URL where the correct version of Gradle should be downloaded from.//

Этот файл ссылается на все модули, которые составляют ваш проект. Поскольку наш пример проекта имеет один модуль, этот файл очень прост, как вы можете видеть ниже.

1
include ‘:app’

Этот файл содержит информацию о конфигурации всего вашего проекта. По умолчанию он пуст, но вы можете применить к своему проекту широкий спектр свойств, добавив их в этот файл.

Этот файл сообщает плагину Android Gradle, где он может найти вашу установку Android SDK. Например:

1
sdk.dir=/Users/jessica/Library/Android/sdk

Обратите внимание, что local.properties содержит информацию, относящуюся к локальной установке Android SDK. Это означает, что вы не должны держать этот файл под контролем исходного кода.

Теперь, когда вы знакомы со всеми автоматически генерируемыми файлами Gradle, пришло время перейти к взаимодействию с системой сборки Gradle. Хорошей новостью является то, что вы можете взаимодействовать с Gradle напрямую из пользовательского интерфейса Android Studio.

Вокруг вертикальных и горизонтальных краев Andorid Studio расположены вкладки, которые открывают различные окна инструментов. В следующих нескольких разделах я познакомлю вас с некоторыми окнами инструментов для Android в Studio Studio и покажу, как взаимодействовать с системой сборки Gradle через эти окна.

Вы можете использовать окно задач Gradle для просмотра и выполнения различных задач, связанных с компиляцией вашего проекта в исполняемое приложение.

Чтобы открыть окно задач Gradle, перейдите на вкладку Gradle вдоль правой стороны установки Android Studio. Если вы настроили пользовательский интерфейс Android Studio и больше не можете найти вкладку Gradle , вы можете вместо этого выбрать View> Tool Windows> Gradle .

На вкладке «Задачи Gradle» дважды щелкните свой проект, а затем модуль. Вы увидите список всех задач Gradle, связанных с этим модулем.

Выберите вкладку Gradle, чтобы открыть окно задач Gradle

Если дважды щелкнуть задачу в окне «Задачи Gradle», она начнет выполняться, а результат отобразится в другом окне Gradle, консоли Gradle .

Консоль Gradle отображает вывод задач Gradle по мере их выполнения вместе с любыми сообщениями об ошибках или предупреждениями.

Чтобы открыть консоль Gradle, выберите вкладку « Консоль Gradle » в правом нижнем углу вашей IDE. Если вы настроили пользовательский интерфейс Android Studio и больше не можете найти эту вкладку, вы всегда можете вместо этого выбрать Вид> Панель инструментов Windows> Консоль Gradle .

Давайте возьмем Консоль Gradle для вращения. В окне «Задачи Gradle» найдите задачу сборки , которая создает готовую к распространению версию выпуска вашего приложения, и дважды щелкните по ней. По мере выполнения задачи сборки вывод задачи отображается в консоли Gradle.

Затем консоль Gradle либо уведомит вас о том, что ваш проект успешно собран, либо отобразит сообщение «сборка не удалась» вместе с информацией о том, почему ваша сборка не удалась.

Пример вывода задачи сборки в Gradle Console

Вы также можете запускать задачи Gradle из встроенного терминала Android Studio. Если вы точно знаете, какую задачу Gradle вы хотите выполнить, Терминал обычно намного быстрее и удобнее, чем просматривать списки задач в консоли Gradle.

Чтобы открыть терминал, перейдите на вкладку « Терминал » в левом нижнем углу Android Studio или выберите « Просмотр»> «Инструменты Windows»> «Консоль Gradle» . Терминал откроется с текущим выбранным каталогом. Затем вы можете выполнить задачи Gradle, набрав их в Терминале и нажав клавишу Return или Enter на клавиатуре.

В этом разделе мы рассмотрим, как вы можете использовать Gradle для управления зависимостями модулей вашего проекта, локальными двоичными и удаленными двоичными зависимостями.

Когда дело доходит до добавления зависимостей в ваш проект, Gradle предлагает вам несколько вариантов.

Соответствующий файл build.gradle будет обновлен автоматически.

Откройте файл build.gradle и добавьте новое правило сборки в закрытие зависимостей. Например, если вы хотите добавить Google Play Services, раздел зависимостей вашего проекта будет выглядеть примерно так:

1
2
3
4
5
6
7
dependencies {
 
      compile fileTree(dir: ‘libs’, include: [‘*.jar’])
 
    compile ‘com.google.android.gms:play-services:6.5.+’
 
  }

На панели « Проект» Control + щелкните модуль, к которому вы хотите добавить зависимость, и выберите « Открыть настройки модуля» .

Добавить зависимость через пользовательский интерфейс Android Studio

Выберите вкладку Зависимости , а затем кнопку + в нижнем левом углу. Вы можете выбрать один из следующих вариантов:

  • Зависимость библиотеки
  • Зависимость файла
  • Зависимость модуля

Затем вы можете ввести дополнительную информацию о зависимости, которую вы хотите добавить в свой проект. Например, если вы выбираете Зависимость от библиотеки , Android Studio отображает список библиотек, которые вы можете выбрать.

После того, как вы добавили свою зависимость, проверьте файл build.gradle уровня модуля. Он должен был автоматически обновиться, чтобы включить новую зависимость.

В этой статье вы познакомились со всеми автоматически сгенерированными файлами сборки Gradle, которые вы найдете в типичном проекте Android Studio, в частности с файлами сборки Gradle верхнего уровня и уровня модуля. Вы также узнали, как напрямую взаимодействовать с системой сборки Gradle из пользовательского интерфейса Android Studio.

Если вы хотите узнать больше о Gradle, вы найдете много дополнительной информации на веб-сайте разработчиков Android и на веб-сайте Gradle .