Что такое gradle в Android Studio

Обновлено: 30.09.2022

Обязательные факты о файлах Gradle в Android Studio

Введение:

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

Сначала давайте рассмотрим базовый обзор Gradle, например, создание задачи, импорт файла Gradle.build в студию Android и его запуск, использование подключаемого модуля и т. д. Затем мы рассмотрим распространенное использование Gradle в Android.

Обзор Gradle:

  1. файлы, созданные при импорте файла Gradle.build в студию Android

new->import project-> Файл Gradle.build с пользовательскими задачами

2. Плагин Application упрощает создание исполняемого приложения JVM. Это позволяет легко запускать приложение локально во время разработки и упаковывать приложение в виде TAR и/или ZIP, включая сценарии запуска для конкретной операционной системы.

Применение подключаемого модуля приложения также неявно применяет подключаемый модуль Java. Основной исходный набор фактически является «приложением».

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

Чтобы использовать подключаемый модуль приложения, включите в скрипт сборки следующее:

Распространенное использование Gradle в Android

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

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

2. Плагин для Android позволяет нам управлять зависимостями для каждого варианта. Ознакомьтесь с темой: Конфигурация зависимостей для каждого варианта в статье здесь.

3. Подключаемый модуль Android может переписывать ресурсы и записи манифеста в зависимости от варианта: Прочитайте тему: Configuration Generated Tasks в статье здесь .

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

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

5. Progarding. Подключаемый модуль Android может помочь уменьшить размер вашего приложения, удалив неиспользуемый код и ресурсы. Это делается с помощью инструмента Proguard.

Proguard может делать много интересных вещей, в том числе запутывать ваш код,
давая всем вашим классам и методам бессмысленные имена. В основном это
интересно, если вы действительно беспокоитесь о том, что ваш код подвергнется реинжинирингу. В этом проекте мы настроили два новых типа сборки, один из которых включил
минификацию (минификация — это процесс удаления ненужных элементов и переписывания кода для уменьшения размера файла) и сжатие ресурсов, а один из них не включил . Вы можете сделать гораздо больше для оптимизации APK с помощью Proguard. Следующие ресурсы являются хорошей отправной точкой.

6. Тестирование: Тестирование бывает двух типов: модульные тесты и инструментальные тесты. первые выполняются на JVM и, следовательно, быстрее, но менее точны. Позже они выполняются на устройстве Android, поэтому медленнее, но точнее. Gradle может помочь в создании различных вариантов приложения или библиотек для повторного использования. Следовательно, каждый модуль или разновидность должны пройти тестирование. Например, если у меня есть бесплатная и платная версии приложения, у меня будут папки test free, AndroidTestFree, testPaid и AndroidTestPaid для создания соответствующего теста. посмотрите короткое видео здесь.

<р>7. Поддержка Multidex: у нас могут быть сотни классов с сотнями методов в каждом. Ничто не мешает большому проекту стать таким большим, особенно если у вас много больших зависимостей. При компиляции мы получим ошибку типа: проблема с записью вывода: слишком много ссылок на методы: 70936; максимум 65536.

Причина в том, что виртуальная машина Android на самом деле не запускает байт-код Java, она запускает байт-код Dalvik, и после компиляции Java есть этап сборки, на котором байт-код Java превращается в байт-код Dalvik. Этот шаг называется Dexing. Частью этого процесса является составление таблицы каждого метода в приложении, которая индексируется двумя байтами. Это означает, что мы ограничены 65 тысячами методов.

К счастью, мы можем попросить Gradle просто разбить эту таблицу на несколько
таблиц, просто установив для multiDexEnabled значение true. Если мы добавим эту строку в defaultConfig в build.gradle модуля и снова скомпилируем, ошибка исчезнет.


8. Многопроектные сборки и создание библиотеки: мы можем столкнуться с ситуацией, когда приложению необходимо иметь несколько проектов, например, когда в приложение может быть встроено несколько игр/приложений, и нам нужно повторно использовать код в разных частях приложения. . Чтобы избежать шаблонного кода, мы можем использовать библиотеки. Таким образом, в основном наше приложение будет иметь корневой каталог, и все модули находятся в нем. Каждый модуль независим от другого. Если мы хотим использовать модуль, мы реализуем его зависимость в файле build.gradle модуля, который хочет использовать другой модуль. Ознакомьтесь с кодом GitHub, чтобы лучше понять его, и ознакомьтесь с документацией, чтобы узнать, как создать модуль.


Библиотека Android структурно аналогична модулю приложения Android. Он может включать все необходимое для создания приложения, включая исходный код, файлы ресурсов и манифест Android. Однако вместо того, чтобы компилироваться в APK, работающий на устройстве, библиотека Android компилируется в файл Android Archive (AAR), который можно использовать в качестве зависимости для модуля приложения Android. Файл JAR может использоваться другими проектами, отличными от Android или Java, но файлы AAR могут использоваться только проектами Android, и у них есть свои собственные файлы build.gradle и manifest. Дополнительную информацию о многопроектных сборках Gradle можно найти здесь.

Вывод:

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

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

Создать что угодно


Пишите на Java, C++, Python или на другом языке. Пакет для развертывания на любой платформе. Используйте монорепо или мультирепо. И положитесь на непревзойденную универсальность Gradle, чтобы построить все это.

Автоматизировать все


Используйте богатый API Gradle и зрелую экосистему плагинов и интеграций, чтобы добиться амбициозных целей в области автоматизации. Смоделируйте, интегрируйте и систематизируйте поставку вашего программного обеспечения от начала до конца.

Доставлять быстрее


Увеличьте масштаб разработки с помощью элегантных и молниеносно быстрых сборок. От предотвращения компиляции до расширенного кэширования и т. д. Мы неустанно добиваемся производительности, чтобы ваша команда могла непрерывно работать.

Нам доверяют миллионы разработчиков

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

Оставайтесь в потоке

Наслаждайтесь первоклассной поддержкой Gradle в выбранной вами среде IDE.

Сделайте шаг

Рассматриваете возможность перехода с Maven? У нас есть ресурсы, чтобы помочь.

Услышать от пользователей



В LinkedIn мы хотим радикально изменить определение и устранить эти недостатки в системе как при выпуске программного обеспечения, так и при ежедневной разработке программного обеспечения. Существует много шума вокруг непрерывной доставки и развертывания, и я думаю, что Gradle играет важную роль на стороне разработки, на микроуровне и в повседневной работе над устранением недостатков в системе.
< /p>


Продолжайте в том же духе. Gradle — один из моих самых любимых инструментов, и найти разработчика, который еще не использует Gradle, — все равно, что найти киномана, который еще не видел Крестного отца: «Боже мой! смотри!"

Будьте в курсе

Присоединяйтесь к более чем 80 000 ежемесячным подписчикам новостной рассылки Gradle.

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

Gradle – это инструмент автоматизации сборки с открытым исходным кодом, достаточно гибкий для создания практически любого типа программного обеспечения. Ниже приводится общий обзор некоторых из его наиболее важных функций:

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

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

Gradle работает на JVM, и для его использования у вас должен быть установлен Java Development Kit (JDK). Это бонус для пользователей, знакомых с платформой Java, поскольку вы можете использовать стандартные API-интерфейсы Java в своей логике сборки, такие как настраиваемые типы задач и плагины. Это также упрощает запуск Gradle на разных платформах.

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

Gradle берет листок из книги Maven и упрощает создание распространенных типов проектов, таких как проекты Java, за счет реализации соглашений. Примените соответствующие плагины, и вы легко получите тонкие скрипты сборки для многих проектов. Но эти соглашения не ограничивают вас: Gradle позволяет вам переопределять их, добавлять собственные задачи и вносить множество других изменений в ваши сборки на основе соглашений.

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

Несколько основных IDE позволяют импортировать сборки Gradle и взаимодействовать с ними: Android Studio, IntelliJ IDEA, Eclipse и NetBeans. Gradle также поддерживает создание файлов решений, необходимых для загрузки проекта в Visual Studio.

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

Пять вещей, которые вам нужно знать о Gradle

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

1. Gradle — универсальный инструмент сборки

.

Gradle позволяет вам создавать любое программное обеспечение, потому что он делает мало предположений о том, что вы пытаетесь создать или как это должно быть сделано. Наиболее заметным ограничением является то, что управление зависимостями в настоящее время поддерживает только Maven- и Ivy-совместимые репозитории и файловую систему.

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

2. Базовая модель основана на задачах

Gradle моделирует свои сборки как ориентированные ациклические графы (DAG) задач (единиц работы). Это означает, что сборка, по сути, настраивает набор задач и связывает их вместе — на основе их зависимостей — для создания этой DAG. После создания графа задач Gradle определяет, какие задачи необходимо запустить и в каком порядке, а затем приступает к их выполнению.

На этой диаграмме показаны два примера графиков задач, один абстрактный, а другой конкретный, с зависимостями между задачами, представленными стрелками:

Пример графиков задач

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

Сами задачи состоят из:

Действия — части работы, которые что-то делают, например копируют файлы или компилируют исходный код

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

Выходные данные — файлы и каталоги, которые изменяются или генерируются действиями

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

Вы сами выбираете, какую задачу запускать.Сэкономьте время, указав задачу, которая делает то, что вам нужно, но не более того. Если вы просто хотите запустить модульные тесты, выберите задачу, которая это делает — обычно test . Если вы хотите упаковать приложение, в большинстве сборок для этого есть задача сборки.

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

3. Gradle имеет несколько фиксированных фаз сборки

Важно понимать, что Gradle оценивает и выполняет скрипты сборки в три этапа:

Настраивает среду для сборки и определяет, какие проекты будут в ней участвовать.

Создает и настраивает график задач для сборки, а затем определяет, какие задачи необходимо выполнить и в каком порядке, в зависимости от задачи, которую хочет запустить пользователь.

Запускает задачи, выбранные в конце этапа настройки.

Эти этапы составляют жизненный цикл сборки Gradle.

Этапы сборки Gradle отличаются от этапов Maven. Maven использует свои фазы, чтобы разделить выполнение сборки на несколько этапов. Они выполняют ту же роль, что и граф задач Gradle, но менее гибки.

Концепция жизненного цикла сборки Maven во многом похожа на задачи жизненного цикла Gradle.

Хорошо разработанные сценарии сборки состоят в основном из декларативной конфигурации, а не из императивной логики. Понятно, что эта конфигурация оценивается на этапе настройки. Тем не менее, многие такие сборки также имеют действия с задачами — например, через блоки doLast <> и doFirst <> — которые оцениваются на этапе выполнения. Это важно, потому что код, оцененный на этапе настройки, не увидит изменений, происходящих на этапе выполнения.

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

4. Gradle расширяется во многих отношениях

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

Gradle предоставляет несколько механизмов, позволяющих расширить его, например:

Если вы хотите, чтобы сборка выполняла какую-то работу, которую не может выполнить существующая задача, вы можете просто написать свой собственный тип задачи. Обычно лучше всего поместить исходный файл для пользовательского типа задачи в каталог buildSrc или в упакованный подключаемый модуль. Затем вы можете использовать настраиваемый тип задачи точно так же, как любой из предоставляемых Gradle.

Действия с пользовательскими задачами.

Вы можете подключить пользовательскую логику сборки, которая выполняется до или после задачи с помощью методов Task.doFirst() и Task.doLast().

Дополнительные свойства проектов и задач.

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

Условия — это эффективный способ упростить сборки, чтобы пользователям было легче их понимать и использовать. Это можно увидеть в сборках, использующих стандартные структуры проектов и соглашения об именах, таких как сборки Java. Вы можете написать свои собственные подключаемые модули, которые обеспечивают соглашения — им просто нужно настроить значения по умолчанию для соответствующих аспектов сборки.

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

5. Скрипты сборки работают с API

Сценарии сборки Gradle легко рассматривать как исполняемый код, потому что они таковыми и являются. Но это деталь реализации: хорошо разработанные сценарии сборки описывают какие шаги, необходимые для сборки программного обеспечения, а не как эти шаги должны работать. Это работа для пользовательских типов задач и плагинов.

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

Тем не менее есть одна область, в которой полезно рассматривать скрипт сборки как исполняемый код: для понимания того, как синтаксис скрипта сборки сопоставляется с API Gradle. Документация по API, состоящая из справочника Groovy DSL и Javadocs, содержит список методов и свойств, а также ссылки на замыкания и действия.Что это означает в контексте скрипта сборки? Ознакомьтесь с учебником Groovy Build Script Prime, чтобы узнать ответ на этот вопрос, чтобы вы могли эффективно использовать документацию по API.

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

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

Содержание

Обзор Gradle

Gradle – это набор инструментов для автоматизированной сборки, который позволяет настраивать способ сборки проектов и управлять им с помощью набора файлов конфигурации сборки. Это включает в себя определение того, как должен быть построен проект, какие зависимости должны быть выполнены для успешного построения проекта и каким должен быть конечный результат (или результаты) процесса сборки.

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

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

Правила конфигурации для сборки проекта объявляются в файлах и сценариях сборки Gradle на основе языка программирования Groovy.


сообщить об этом объявлении

Gradle и Android Studio

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

Разумные значения по умолчанию

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

Зависимости

Еще одной ключевой областью функциональности Gradle являются зависимости. Рассмотрим, например, модуль в проекте Android Studio, который инициирует намерение загрузить другой модуль в проекте. Фактически, первый модуль зависит от второго модуля, поскольку приложение не сможет собраться, если второй модуль не может быть найден и запущен во время выполнения. Эту зависимость можно объявить в файле сборки Gradle для первого модуля, чтобы второй модуль был включен в сборку приложения, или пометить ошибку в случае, если второй модуль не может быть найден или собран. Другими примерами зависимостей являются библиотеки и файлы JAR, от которых зависит проект при компиляции и запуске.

Зависимости Gradle можно разделить на локальные и удаленные. Локальная зависимость ссылается на элемент, присутствующий в локальной файловой системе компьютерной системы, на которой выполняется сборка. Удаленная зависимость относится к элементу, который находится на удаленном сервере (обычно называемом репозиторием).

Удаленные зависимости для проектов Android Studio обрабатываются с помощью другого инструмента управления проектами под названием Maven. Если удаленная зависимость объявлена ​​в файле сборки Gradle с использованием синтаксиса Maven, то зависимость будет автоматически загружена из указанного репозитория и включена в процесс сборки. Например, следующее объявление зависимости вызывает добавление библиотеки AppCompat в проект из репозитория Google:

Варианты сборки

Помимо зависимостей, Gradle также поддерживает варианты сборки для проектов Android Studio. Это позволяет создавать несколько вариантов приложения из одного проекта. Android работает на множестве различных устройств с различными типами процессоров и размеров экрана. Чтобы ориентироваться на как можно более широкий диапазон типов и размеров устройств, часто бывает необходимо создать несколько различных вариантов приложения (например, один с пользовательским интерфейсом для телефонов, а другой — для экранов размером с планшет). Благодаря использованию Gradle это стало возможным в Android Studio.

Записи манифеста

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

Подписание APK

В главе «Создание, тестирование и загрузка пакета Android App Bundle» рассказывается о создании файла APK с подписанным выпуском с использованием среды Android Studio. Также можно включить информацию о подписи, введенную через пользовательский интерфейс Android Studio, в файл сборки Gradle, чтобы подписанные APK-файлы можно было создавать из командной строки.

Поддержка ProGuard

ProGuard – это инструмент, входящий в состав Android Studio, который оптимизирует, сжимает и запутывает байт-код Java, чтобы сделать его более эффективным и трудным для обратного проектирования (метод, с помощью которого логика приложения может быть идентифицирована другими посредством анализа скомпилированного кода). байт-код Java). Файлы сборки Gradle позволяют контролировать, запускается ли ProGuard в вашем приложении при его сборке.

Файл сборки Gradle верхнего уровня

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

Каждый проект содержит один файл сборки Gradle верхнего уровня. Этот файл указан как build.gradle (проект:

), и его можно найти в окне инструментов проекта, как показано на рис. 89-1:

По умолчанию содержимое файла сборки Gradle верхнего уровня выглядит следующим образом:

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

Файлы сборки Gradle на уровне модуля

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

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

Как видно из содержимого файла, файл сборки начинается с объявления использования подключаемого модуля приложения Gradle для Android:

Вы читаете пример главы из Android Studio 3.2 Edition этой книги.

Купите полностью обновленную версию этой публикации Android Studio Bumble Bee Edition в электронной книге (29,99 долл. США) или в печатном формате (46,99 долларов США)

Элементы, объявленные в разделе defaultConfig, определяют элементы, которые должны быть сгенерированы в файле AndroidManifest.xml модуля во время сборки. Эти настройки, которые можно изменить в файле сборки, берутся из настроек, введенных в Android Studio при первом создании модуля:

Раздел buildTypes содержит инструкции о том, следует ли и как запускать ProGuard для APK-файла при сборке окончательной версии приложения:

В текущих настройках ProGuard не будет запускаться при сборке Module1. Чтобы включить ProGuard, необходимо изменить запись runProguard с false на true. Файл proguard-rules.pro можно найти в каталоге модуля проекта. Изменения, внесенные в этот файл, переопределяют настройки по умолчанию в файле proguard-android.txt, который находится в каталоге установки Android SDK в папке sdk/tools/proguard.

Поскольку в этом файле не объявлен тип сборки отладки, будут использоваться значения по умолчанию (собраны без ProGuard, подписаны с помощью ключа отладки и с включенными символами отладки).

Дополнительный раздел под названием productFlavors также может быть включен в файл сборки модуля, чтобы можно было создать несколько вариантов сборки.

Наконец, в разделе зависимостей перечислены все локальные и удаленные зависимости, от которых зависит модуль. Первая зависимость выглядит следующим образом:

Это стандартная строка, которая сообщает системе Gradle, что любой файл JAR, расположенный в подкаталоге lib модуля, должен быть включен в сборку проекта. Если, например, файл JAR с именем myclasses.jar присутствует в папке GradleDemo/Module1/lib проекта, этот файл JAR будет рассматриваться как зависимость модуля и включен в процесс сборки.

Последние строки зависимостей в приведенном выше примере файла обозначают библиотеки Android, которые необходимо включить из репозитория Android:

Обратите внимание, что объявление зависимости может включать номера версий, чтобы указать, какая версия библиотеки должна быть включена.

Настройка параметров подписи в файле сборки

Глава «Создание, тестирование и загрузка пакета Android App Bundle» этой книги описывает шаги, связанные с настройкой ключей и созданием подписанного APK-файла выпуска с использованием пользовательского интерфейса Android Studio. Эти параметры также могут быть объявлены в разделе signingSettings файла build.gradle. Например:

Приведенный выше пример встраивает информацию о пароле ключа непосредственно в файл сборки. Альтернативой этому подходу является извлечение этих значений из переменных системной среды:

Еще один подход заключается в настройке файла сборки таким образом, чтобы Gradle запрашивал ввод паролей в процессе сборки:

Запуск задач Gradle из командной строки

Каждый проект Android Studio содержит инструмент-оболочку Gradle, позволяющий вызывать задачи Gradle из командной строки. Этот инструмент находится в корневом каталоге каждой папки проекта. Хотя эта оболочка является исполняемой в системах Windows, для ее использования необходимо включить разрешение на выполнение в Linux и macOS. Чтобы включить разрешение на выполнение, откройте окно терминала, измените каталог на папку проекта, для которого требуется оболочка, и выполните следующую команду:

После того, как файл получит права на выполнение, для запуска нужно будет либо добавить расположение файла в переменную окружения $PATH, либо имя с префиксом ./. Например:

Gradle рассматривает создание проекта с точки зрения ряда различных задач. Полный список задач, доступных для текущего проекта, можно получить, выполнив следующую команду из каталога проекта (не забудьте поставить перед командой префикс ./, если работаете в macOS или Linux):

Чтобы создать отладочную версию проекта, подходящую для тестирования устройства или эмулятора, используйте параметр assembleDebug:

В качестве альтернативы для создания версии выпуска приложения:

Обзор

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

Вы читаете пример главы из Android Studio 3.2 Edition этой книги.

Купите полностью обновленную версию этой публикации Android Studio Bumble Bee Edition в электронной книге (29,99 долл. США) или в печатном формате (46,99 долларов США)

Читайте также: