Что такое Gradle и как он помогает Android-разработчику
Программирование • 29 июля 2024 • 5 мин чтения
Что такое Gradle и как он помогает Android-разработчику
Gradle помогает разработчикам создавать, собирать приложения и управлять ими. Рассказываем, что это за инструмент и какие у него есть функции.
Gradle — это система автоматической сборки приложений в Android. Он похож на строителя, который складывает все необходимые файлы и библиотеки в один большой проект.
Gradle представляет собой набор скриптов. При создании приложения не нужно заново писать код для компиляции, который уже кто-то когда-то написал, — он есть внутри Gradle. Большинство проектов для Android собирают в специальной среде разработки Android Studio. В неё уже встроен Gradle, поэтому его не нужно устанавливать отдельно.
Научиться работать с Gradle и другими инструментами для создания приложений можно на курсе «Android-разработчик». Студенты могут с нуля освоить программирование на языках Java и Kotlin — и попрактиковаться на реальных задачах.
У Gradle есть много особенностей, которые помогают Android-разработчикам создавать проекты быстрее.
● gradle.settings. Это файл, который отвечает за настройки Gradle, в том числе за ограничения. Например, он отслеживает, сколько памяти можно потреблять на компьютере, чтобы внезапно не заполнить её всю.
● Gradle Wrapper. Это инструмент, который позволяет собирать Android-проект на разных видах операционных систем.
● Поддержка разных языков программирования. Gradle изначально был ориентирован на Java, но позже стал поддерживать другие языки программирования — например, Kotlin, Scala, Groovy и C/C++.
● Использование направленного ациклического графа. Направленный ациклический граф — это структура данных в виде набора узлов и дуг, где каждая дуга указывает направление от одного узла к другому. В Gradle используется для определения порядка выполнения задач сборки. Это нужно, чтобы не происходило повторных запусков.
Каждый узел представляет собой задачу, которую необходимо выполнить, а дуги показывают, какие задачи должны быть выполнены до начала других задач. Например, если есть задача A, которая должна быть выполнена перед задачей B, то между этими двумя задачами будет установлена дуга, указывающая от A к B.
● Мультипроектные сборки. Gradle удобен при создании крупных мобильных приложений. С его помощью можно разделить проект на несколько модулей, например app, library, и управлять ими.
● Поддержка сборочных скриптов и задач. В Gradle можно создавать собственные задачи и скрипты для выполнения кастомных операций в процессе сборки. Например, написать скрипт на отправку сборки в свой Телеграм-канал.
● Поддержка сборочных конфигураций. В Gradle можно создавать различные сборочные конфигурации (build variants) для разработки, тестирования и выпуска — например, конфигурации для бесплатной и платной версий приложения:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles
getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-DEBUG"
}
}
productFlavors {
free {
applicationId "com.example.myapp.free"
}
paid {
applicationId "com.example.myapp.paid"
}
}
}
Задачи в Gradle описываются в конфигурационных файлах build.gradle. Каждая имеет имя и может принимать параметры, которые определяют её поведение. Например, задача compileJava компилирует Java-код, а задача assemble собирает все артефакты проекта в одну единицу.
Gradle использует направленный ациклический граф для определения порядка выполнения задач. Это значит, что задача может зависеть от других задач и Gradle автоматически вычисляет оптимальный порядок выполнения, чтобы минимизировать время сборки.
В направленном ациклическом графе стрелки указывают, в какой очерёдности должны выполняться задачи
Кроме того, Gradle поддерживает плагины, которые расширяют функциональность сборки — добавляют новые задачи или изменяют поведение существующих.
Зависимости в Gradle — это библиотеки и другие ресурсы, которые нужны проекту для работы. Например, Apache Commons или Google Play Services.
dependencies {
implementation '
com.google.android.gms:play-services-location:17.0.0'
}
Gradle автоматически управляет зависимостями: устанавливает их, обновляет до новых версий и удаляет, когда они больше не нужны. Он также следит за тем, чтобы зависимости были совместимы друг с другом.
Вот несколько примеров зависимостей, которые часто используются в Android-разработке с Gradle:
Если разработчик скачал Android Studio, вместе с ней он скачал и Gradle. В таком случае отдельно ничего устанавливать не нужно.
Но если среда разработки другая и Gradle в ней нет, можно установить его самостоятельно.
Вот как может выглядеть файл build.gradle в Android-проекте
Разберём, как работать с Gradle, на примере создания приложения для заказа еды.
1. Создание нового проекта. В Android Studio нужно выбрать тип проекта «Empty Activity» и указать имя.
2. Добавление зависимостей. В файле build.gradle проекта — добавить зависимости, которые понадобятся для работы приложения. Например, библиотеки для работы с сетью, базы данных, карты.
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.firebase:firebase-core:17.2.1'
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
// Другие зависимости...
}
4. Разработка клиентского приложения. Нужно написать код для клиентской части приложения, который будет взаимодействовать с сервером через API.
5. Тестирование и отладка. Запустить тесты можно в Gradle — с помощью задач test, debug или connectedCheck.
6. Публикация. После завершения разработки и тестирования можно с помощью Gradle собрать финальный Android Package Kit и опубликовать его в Google Play Store.
● Используйте параметр org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8, чтобы контролировать нагрузку на память компьютера.
● Изучите инструмент buildTypes.
Он позволяет делать разные виды сборки с разными параметрами — например, отдельную для тестирования и отдельную для релиза.
● Используйте doFirst и doLast.
Это полезные операторы, которые помогают расширить уже существующие задачи.
Любое приложение, которое создано с использованием Android Studio, может быть примером Gradle-проекта. Пример Java-приложения для бегунов, которое собрано в Gradle:
// build.gradle
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.guava:guava:30.1.1-jre'
implementation 'org.slf4j:slf4j-api:1.7.30'
runtimeOnly 'ch.qos.logback:logback-classic:1.2.3'
}
task run(type: JavaExec) {
main = 'com.example.RunnerApp'
classpath sourceSets.main.runtimeClasspath
}
Приложение использует библиотеки Guava и SLF4J для логирования, а также Logback для логирования в консоль. Код приложения может выглядеть примерно так:
package com.example;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RunnerApp {
private static final Logger logger =
LoggerFactory.getLogger(RunnerApp.class);
public static void main(String[] args) {
logger.info("Starting runner app");
// Здесь может быть код для отслеживания тренировок
}
}
Совет эксперта
Читать также: