Что такое Gradle в Android Studio?

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

Короткий ответ

Gradle – это система сборки.

Длительный ответ

До того, как Android Studio вы использовали Eclipse для своих целей разработки, и, скорее всего, вы не знали, как построить свой Android APK без Eclipse.

Вы можете сделать это в командной строке, но вам нужно узнать, что делает каждый инструмент (dx, aapt) в SDK. Eclipse спас нас всех от этих низких уровней, но важные, фундаментальные детали, предоставив нам собственную систему сборки.

Теперь вы когда-нибудь задумывались, почему папка res находится в том же каталоге, что и ваша папка src ?

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

В этой сборке используются некоторые условные обозначения: пример одного – указать каталог, содержащий исходные файлы (в Eclipse это папка \src ) или файлы ресурсов (в Eclipse это папка \res ).

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

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

Одна крутая вещь о градиенте заключается в том, что это плагиновая система . Это означает, что если у вас есть собственный язык программирования и вы хотите автоматизировать задачу создания какого-либо пакета (выходного JAR для Java) из источников, вы можете написать полный плагин в Java или Groovy (или Kotlin, см. Здесь ), и Распространить его на остальной мир.

Почему Google использовал его?

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

Вы, должно быть, видели файл build.gradle в своем проекте. Здесь вы можете писать сценарии для автоматизации своих задач. Код, который вы видели в этих файлах, – это код Groovy. Если вы пишете System.out.println("Hello Gradle!"); То он будет печататься на консоли.

Что вы можете сделать в скрипте сборки?

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

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

Здесь вы можете посмотреть разговор Xavier Ducrohet из группы разработчиков Android в Google I / O.

Существует также еще один разговор на Android Studio от Xavier и Tor Norbye, также во время ввода / вывода Google .

1 – Фоновая справочная информация.

2 – Концепции Gradle .

3 – Фаза инициализации.

4 – Фаза инициализации (продолжение).

5 – Что такое « Gradle ?

6 – Фаза конфигурации.

Gradle

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

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

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

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

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

Смотрите эту ссылку

Gradle – это система сборки, работающая на Android Studio .

На других языках, например:

  • Ant и Maven из Java
  • Рейк Руби
  • AAP of C
  • NAnt из .NET
  • Сделать в Linux

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

Изучение файлов Gradle

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

Файлы Gradle Build

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

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

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

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

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

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

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

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

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

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

Другие файлы Gradle

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

Gradle-wrapper.properties (Gradle Version)

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

settings.gradle

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

Gradle.properties (Свойства проекта)

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

Local.properties (Местоположение SDK)

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

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

Для более подробной информации –

Читайте: http://code.tutsplus.com/tutorials/the-ins-and-outs-of-gradle–cms-22978

Я получил ясное понимание градиента от этого.

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

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

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

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

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

  1. Apache Ant & Apache Maven – Java
  2. Sbt (Simple Build Tool) – для Scala (среда воспроизведения и т. Д.)
  3. AAP – инструмент построения на основе Python
  4. Рейк (Apache Builder) – Ruby
  5. Leiningen для Clojure

Здесь вы можете найти все, что вам нужно знать о Gradle: Руководство пользователя плагина Gradle

Цели новой системы сборки

Целями новой системы сборки являются:

  • Упрощение повторного использования кода и ресурсов
  • Упростите создание нескольких вариантов приложения, будь то для распространения нескольких apk или для разных вариантов приложения
  • Упростите настройку, расширение и настройку процесса сборки.
  • Хорошая интеграция IDE

Почему Gradle?

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

Вот некоторые из его особенностей, которые заставили нас выбрать Gradle:

  • Специфический язык домена (DSL) для описания и управления логикой сборки
  • Файлы сборки основаны на Groovy и позволяют смешивать декларативные элементы через DSL и использовать код для управления элементами DSL для предоставления пользовательской логики.
  • Встроенное управление зависимостями через Maven и / или Ivy.
  • Очень гибкий. Позволяет использовать лучшие практики, но не заставляет свой собственный способ делать что-то.
  • Плагины могут выставлять свои собственные DSL и свой собственный API для использования файлов сборки.
  • Хороший инструмент API, позволяющий интегрировать IDE

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

Типичный опыт Clojure:

  • Загрузите проект с зависимостями, перечисленными в project.clj.
  • Leiningen получает зависимости благодаря Clojars и Maven.
  • Компиляция проекта.

Типичный опыт работы с Android Studio / Gradle:

  • Msgstr "Импортировать проект Eclipse".
  • Проект OK импортирован.
  • Грейдл делает это так … подождите … подождите … подождите … Грейдл закончил.
  • Компилировать … не удается скомпилировать, потому что я не знаю, что X есть / не может найти библиотеку Y.

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

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

В 2016 году такие вещи, как Leiningen / Clojars или npm узла или пипс Python или Debian apkg (и я уверен, что многие подобные менеджеры пакетов для других языков и систем) работают прекрасно … Отсутствующие зависимости ушли в прошлое.

Кроме Android. Android Studio теперь единственное место, где я все еще, кажется, испытываю недостаток адвентизма.

Я склонен сказать, что это ошибка Google. Они сломали экосистему Android (и тысячи существующих проектов Android / онлайн-уроки), когда они кавалерии решили перейти от Eclipse к Android Studio / Gradle без создания надежного процесса преобразования. Люди, чьи проекты работают в Eclipse, не адаптируют их к AS (по-видимому, потому что это боль для них). И люди, пытающиеся использовать эти проекты в AS, сталкиваются с теми же проблемами.

И вообще, если Gradle – это супер-мощная система сборки, почему я все еще управляю множеством других зависимостей в sdk-менеджере? Почему проект, который не нуждается, например, ndk, указывает это в своем файле Gradle, чтобы он автоматически устанавливался и включался при необходимости? Почему NDK особенный? Точно так же для целевых платформ? Почему я устанавливаю их явно в среде IDE, а не просто проверяю свой проект на них и все это сортируется для меня за кулисами?

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

Dsl – специфический для домена язык, основанный на groovy

DAG-направленный ациклический граф

Инкрементальные сборки

Расширяемая модель домена Gradle всегда актуальна!

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

Если моментальный снимок изменился или он не существует, Gralde снова выполнит эту задачу.

Манифеста. Через DSL можно настроить следующие записи манифеста:

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

Dependencies-

Локальные зависимости:

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

Удаленные зависимости:

Сначала репозиторий должен быть добавлен в список, а затем зависимость должна быть объявлена ​​так, чтобы Maven или Ivy объявляли свои артефакты.

Одно из преимуществ Gradle, которое я нашел, это:

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

ОПРЕДЕЛЕНИЕ :: Gradle можно охарактеризовать как структурированный механизм построения, где он предоставляет разработчику инструменты и гибкость для управления ресурсами проекта для создания smaller in size строений, targeting specific requirements для определенных устройств определенных конфигураций


ОСНОВНЫЕ КОНФИГУРАЦИИ

  1. minimumSdk
  2. maximumSdk
  3. targettedSdk
  4. versionCode
  5. versionName

БИБЛИОТЕКИ :: Мы можем добавлять библиотеки android или любые другие сторонние библиотеки в дополнение к требованиям, которые были утомительной задачей ранее. Если библиотека не подходит для существующего проекта, разработчику отображается журнал, в котором человек может найти подходящее решение для внесения изменений в проект, чтобы библиотека могла быть добавлена. Его только одна линия зависимости


ГЕНЕРИРУЮЩИЕ СОРТОВ ПОСТРОЕНИЙ

Сочетание типов сборки со встроенными атрибутами для получения разновидностей переменных сборки

  ==================== ==================== | BuildTypes | | ProductFlavours | -------------------- ====================== -------------------- | Debug,Production | || || | Paid,Free,Demo,Mock| ==================== || || ==================== || || VV VV ================================================================= | DebugPaid, DebugFree, DebugDemo, DebugMock | | ProductionPaid, ProductionFree, ProductionDemo, ProductionMock | ================================================================= 

СОКРАЩЕНИЕ РАЗМЕРА

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


УПРАВЛЕНИЕ РАЗРЕШЕНИЯМИ

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


ПОСТРОЕНИЯ ДЛЯ НЕКОТОРЫХ УСТРОЙСТВ

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


ХОРОШАЯ СПРАВКА

Учебники Vogella

Gradle относится к языку JVM Groovy, какой муравей относится к Java. По сути, это инструмент построения Groovy. В отличие от Ant, он основан на полном языке Groovy. Например, вы можете написать код сценария Groovy в сценарии Gradle, чтобы сделать что-то, а не полагаться на определенный язык домена.

Я не знаю специфической интеграции IntelliJ, но представьте, что вы можете «расширить» Groovy таким образом, чтобы вы могли писать конкретные примитивы языка «build», и они просто стали частью Groovy. (Метапрограммирование Groovy представляет собой целую дискуссию для себя.) IntelliJ / Google может использовать Gradle для создания высокоуровневого языка сборки, но это язык, основанный на расширяемом открытом стандарте.

В Android Studio Gradle – это настраиваемый инструмент сборки, используемый для сборки пакетов android (файлы apk) путем управления зависимостями и предоставления пользовательской логики сборки.

Файл APK (пакет приложений для Android) представляет собой специально отформатированный zip-файл, который содержит

  • Байт-код
  • Ресурсы (изображения, пользовательский интерфейс, xml и т. Д.)
  • Файл манифеста

Файл apk подписывается и помещается на устройство с использованием ADB (Android Debug Bridge), где он выполняется.

Gradle – это усовершенствованный инструментарий сборки для android, который управляет зависимостями и позволяет вам определять пользовательскую логику сборки. Функции: 1. Настроить, настроить и расширить процесс сборки. 2. Создайте несколько APK для своего приложения с различными функциями, используя тот же проект. 3. Повторное использование кода и ресурсов. Ссылайтесь на эту ссылку http://developer.android.com/sdk/installing/studio-build.html

Система сборки Gradle предназначена для поддержки сложных сценариев при создании приложений для Android:

Мультираспределение : одно и то же приложение должно быть настроено для нескольких клиентов или компаний

Multi-apk: поддержка создания нескольких apk для разных типов устройств при повторном использовании частей кода

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

Вот несколько вещей, которые вы можете сделать с помощью gradle.

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

  • Декларация о зависимости. Вы можете объявлять файлы jar зависимости или файлы библиотек, размещенные на локальном или удаленном сервере.

  • Gradle автоматически создает тестовый каталог и тестовый APK из источника вашего проекта.

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

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

By @Brian Gardner:

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

Особенность Gradle:

  1. Управление зависимостями
  2. Использование Ant от Gradle
  3. Плагины Gradle
  4. Плагин Java
  5. Плагин Android
  6. Многопроектные сборки

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

Для более фундаментального и глубокого понимания процесса gradle и build system этот курс udacity создан самими инженерами Gradle.

Gradle для Android и Java

Град – это то, что нужно, чтобы вы не спали ночью, а не «колыбелью», которая должна помочь вам спать

Intereting Posts