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

1314

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

androidcodehunter
источник
4
Смотрите gradle.org
Eng.Fouad
14
Чтобы ответить, почему вам нужен инструмент для сборки, такой как Gradle, прочитайте этот пост от Джеффа Этвуда.
Адам С.
829
Когда кто-то задает здесь вопрос, на котором да, у него много ссылок в Google, то, что он на самом деле просит, это чтобы кто-то ответил на вопрос простым языком и поместил его в контекст , например, зачем он нам нужен кто будет его использовать чаще всего, нужно ли нам знать об этом для создания приложений Android в Android Studio и т. д. Поскольку чаще всего ссылки, которые вы найдете об этом в Google, находятся в «техническом разговоре», и для новичка это сбивает с толку.
Azurespot
3
@NoniA. Именно мои мысли. Я все еще немного растерялся, разве это просто фоновый процесс, который компилирует написанный мной код? Также, посмотрев на множество других ответов, они упоминают зависимости. Что это? Огромное спасибо!
Можно посмотреть краткое и приятное объяснение здесь . Весьма полезно
eRaisedToX

Ответы:

1532

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Гагандип Сингх
источник
11
Я должен сказать, что Gradle доставлял мне проблемы при переносе проекта AndroidStudio из одного места в другое. Несоответствия версий, отсутствующие модули, еще много чего ... это доставляло мне много времени. Я закончил тем, что заново создал скелет проекта и вырезал / вставил части кода, которые были из старого проекта в новый. И это под Windows для источника и назначения. Я собираюсь перенести его сейчас в лабораторию на базе Linux.
jfmessier
22
Чего я не понимаю, так это того, почему gradle пытается подключиться к Интернету для каждого отдельного проекта, который я делаю, или даже каждый раз, когда я хочу его скомпилировать
AaA
4
Я думал, что IntelliJ уже знает, как создавать проекты Android без необходимости в другой системе сборки.
Арне Эвертссон
18
Другим ключевым преимуществом gradle по сравнению с системами сборки до Android Studio является управление зависимостями. Ранее, чтобы использовать библиотеку Android в проекте, нужно было скачать исходный код, добавить его в свой проект и скомпилировать его с вашим проектом. Вместо этого, с помощью gradle можно добавить одну строку в build.gradle, а затем gradle загрузит скомпилированную библиотеку из публичного репозитория и добавит ее в ваш проект. Некоторые примеры: blog.teamtreehouse.com/android-libraries-use-every-project Это также работает для стандартных файлов jar Java вместо размещения их в каталоге lib.
Стэн Курджиэль
4
Gradle - ужасная система сборки. При использовании Android Studio я хочу, чтобы он позаботился о сборке. Я не понимаю, почему добавление некоторых классов заставляет Gradle выполнить синхронизацию, прежде чем это будет полезно. Работать с Visual Studio для сравнения - это здорово (или даже X-Code) - никаких лишних дополнений не требуется. Среда IDE создает проект и решение без необходимости возиться с произвольными файлами для настроек, которые иногда требуются процессу сборки Android, или путем обновления старых проектов. Gradle - худшая часть опыта Android.
ксмит
162

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

Вы можете посмотреть выступление Ксавье Дюкроэ из команды разработчиков Android на Google I / O здесь.

Ксавье и Тор Норби также рассказывают о Android Studio, также во время ввода-вывода Google .

daniel_c05
источник
4
Я думал, что IntelliJ уже знает, как создавать проекты Android без необходимости в другой системе сборки.
Арне Эвертссон
1
Так является ли gradle просто фоновым процессом, который компилирует написанный мной код? Также, посмотрев на множество других ответов, они упоминают зависимости. Что это? Большое спасибо Дэниел!
2
@ user5562706 Он не компилирует код, но отвечает за вызов исполняемого файла, который компилирует ваш код. После компиляции кода он может запустить другую задачу для ее упаковки, другую - скопировать его в каталог по вашему выбору, а затем, возможно, другую, чтобы загрузить его на сервер где-нибудь ... Это такие задачи Gradle или любая сборка Система, сделаем.
Майкл Берри
63

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

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

kenju
источник
23
Когда вы сказали, Gradleчто похоже на make, я только что получил его концепцию
user3405291
3
PHING of PHP
Юша Алеауб
15
Один из самых быстрых способов узнать, что делает неизвестный инструмент и куда он попадает в конвейер, - ввести в Google название инструмента и «vs». Результаты обычно показывают «X против Y», где Y - другой инструмент, с которым вы, возможно, более знакомы.
Джеймс Куанг
Веб-пакет для JavaScript
codepig
47

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

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

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

Файлы сборки Gradle

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

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

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

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

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

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

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

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

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

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

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

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

gradle-wrapper.properties (версия Gradle)

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

settings.gradle

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

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

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

local.properties (Расположение SDK)

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

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

Предлагаемое чтение - Tutsplus Tutorial

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

Пармешвар С
источник
1
Обратите внимание, что ответы только на ссылки не приветствуются, поэтому ответы SO должны быть конечной точкой поиска решения (по сравнению с еще одной остановкой ссылок, которая, как правило, устаревает со временем). Пожалуйста, рассмотрите возможность добавления отдельного краткого обзора здесь, сохраняя ссылку в качестве ссылки.
Клеопатра
30

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

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

Каран
источник
4
Что вы подразумеваете под сборкой исходного кода программы? Разве это не работа разработчика?
совершеноандройдер
Этот ответ совершенно неверен в том смысле, в котором он сформулирован. Gradle - это инструмент для упаковки, который поставляется в комплекте с Android Studio, поэтому он заботится о создании apk. Исходный код всегда создается компилятором и ничем иным.
AutomEng
Но из другого вопроса звучит так, что Gradle не будет работать должным образом без надежного подключения к Интернету, означает ли это, что я должен выбросить Android Studio, пока это не будет исправлено?
Майкл
2
@committedandroider: задача разработчика - писать исходный код, а не создавать его. В системе используется Развитию слово «сборки» означает процесс упаковки в скомпилированный исходный код в конечный продуктпакет или исполняемый файл )
MestreLion
1
@MestreLion лол я был очень смущен , потому что тогда люди использовали «строительный» со ссылкой на написание исходного кода для их работы- я построил этот чат - сервер, это приложение для ...
committedandroider
26

Определение :: 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. Это помогает при развертывании продуктов в магазине приложений в соответствии с требованиями для нескольких типов устройств.


ХОРОШАЯ ССЫЛКА

Вогелла Учебники

Devrath
источник
25

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

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

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

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

Почему Градл?

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

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

  • Domain Specific Language (DSL) для описания и манипулирования логикой сборки
  • Файлы сборки основаны на Groovy и позволяют смешивать декларативные элементы через DSL и использовать код для манипулирования элементами DSL для обеспечения собственной логики.
  • Встроенное управление зависимостями через Maven и / или Ivy.
  • Очень гибкий Позволяет использовать лучшие практики, но не заставляет действовать по-своему.
  • Плагины могут предоставлять собственный DSL и собственный API для использования в файлах сборки.
  • Good Tooling API, позволяющий интегрировать IDE
Махди Рашиди
источник
25

Я ссылаюсь на два урока, чтобы написать ответ один , два

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

Gradle объединяет в себе все преимущества обоих инструментов, предоставляет дополнительные функции и использует Groovy в качестве языка, специфичного для домена (DSL). Он обладает мощью и гибкостью инструмента Ant с такими функциями Maven, как жизненный цикл сборки и простота использования.

Почему Градл? Почему сейчас?

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

Допустим, вы хотите скопировать файл в определенное место при создании релизной версии вашего проекта. Чтобы определить версию, вы проверяете строку в метаданных, описывающую ваш проект. Если он соответствует определенной схеме нумерации (например, 1.0-RELEASE), вы копируете файл из точки A в точку B. С внешней точки зрения это может показаться тривиальной задачей. Если вам приходится полагаться на XML, язык сборки многих традиционных инструментов, выражающих эту простую логику, становится довольно сложным.

Эволюция инструментов сборки Java

Логика сборки Java должна быть описана в XML. XML отлично подходит для описания иерархических данных, но ему не хватает выражения программного потока и условной логики. По мере усложнения сценария сборки поддержание кода сборки становится кошмаром.

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

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

Gradle вписывается в это поколение инструментов сборки и удовлетворяет многим требованиям современных инструментов сборки (рисунок 1). Это обеспечивает выразительный DSL, соглашение по конфигурации подхода и мощное управление зависимостями. Это делает правильный шаг, чтобы отказаться от XML и представить динамический язык Groovy для определения вашей логики сборки. Звучит убедительно, не так ли?

Gradle сочетает в себе лучшие функции других инструментов сборки.

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

Необыкновенный набор функций Gradle

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

Зачем создавать свои проекты Java с Gradle, а не с Ant или Maven?

Инструмент сборки по умолчанию для Android (и новая звезда инструментов сборки в JVM) предназначен для упрощения создания сценариев сложных многоязычных сборок. Стоит ли переходить на него, если вы используете Ant или Maven?

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

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

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

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

Интеграция с другими инструментами сборки

Gradle хорошо играет с муравьями предшественника, Maven и Ivy, как показано на рисунке ниже.

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

Автоматизация вашего проекта от сборки до развертывания

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

На изображении: этапы конвейера развертывания.

  • Компиляция кода

  • Работающие юнит и интеграционные тесты

  • Выполнение статического анализа кода и создание тестового покрытия

  • Создание дистрибутива

  • Обеспечение целевой среды

  • Развертывание результата

  • Выполнение дымовых и автоматических функциональных испытаний

Я ссылаюсь на два урока, чтобы написать ответ один , два

Фарханой
источник
1
Кроме того, вы можете создавать свои приложения Android из командной строки на своем компьютере или на компьютерах, где Android Studio не установлена ​​(например, серверы непрерывной интеграции).
jettimadhuChowdary
23

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

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

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

  1. Apache Ant и Apache Maven - Java
  2. sbt (Simple Build Tool) - для Scala (игровая среда и т. д.)
  3. AAP - инструмент для сборки на основе Python
  4. Грабли (Apache Builder) - Рубин
  5. Лейнинген для Clojure

источник
17

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

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

  • скачать проект с зависимостями, перечисленными в project.clj.
  • Лейнинген получает зависимости благодаря Clojars и Maven.
  • Проект компилируется.

Типичная Android Studio / Gradle опыт:

  • "Импортировать мой проект Eclipse".
  • ОК, проект импортирован.
  • Градл делает тхан ... подожди ... подожди ... подожди ... Градл закончил.
  • Скомпилировать ... не могу скомпилировать, потому что я не знаю, что такое X / не могу найти библиотеку Y.

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

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

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

За исключением Android. Android Studio - теперь единственное место, где я до сих пор испытываю адский недостаток зависимостей.

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

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

Interstar
источник
4
Я полностью согласен с тем, что Gradle - ужасная система сборки. Это компонент, который делает Android Studio намного хуже, чем X-Code или Visual Studio. Я понимаю, что они должны «строить» систему за кулисами, но мне не обязательно знать / заботиться / возиться с их внутренностями. Gradle, с другой стороны, кажется, ломается с каждым обновлением Android Studio и тормозит систему, даже просто добавляя класс. Никакая другая IDE не делает этого.
Ксмит
14

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

Преимущества:

  • Dsl - предметно-ориентированный язык, основанный на groovy
  • DAG - Направленный ациклический граф
  • Инкрементные сборки
  • Расширяемая модель домена
  • Gradle всегда в курсе
  • Перед выполнением задачи Gradle делает снимок ввода и вывода своей задачи.
  • В случае, если моментальный снимок изменился или не существует, Gralde повторно выполнит эту задачу.

Манифест записей

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

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

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

зависимости

  1. Местные зависимости:

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

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

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

SKallmann
источник
13

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

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

user500123
источник
2
это не «инструмент сборки Groovys» - это многоцелевой инструмент сборки, DSL которого построен на основе Groovy
martyglaubitz
10

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

  • Настройка, настройка и расширение процесса сборки.

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

  • Повторное использование кода и ресурсов.

обращаться

AndEngine
источник
9

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

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

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

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

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

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

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

Зумры Мохамед
источник
8

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

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

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

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

Акаш Чандвани
источник
6

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

Самарт Шах
источник
4

по @ Брайан Гарднер:

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

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

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

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

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

  • Android APK структура и экосистема
  • Android Studio
  • Java Classpaths и зависимости
  • Groovy
  • Скрипты сборки Gradle
  • Много других сложных и интересных технологий

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

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

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

flurbius
источник
1

Проще говоря, Gradle - это инструмент, предоставляемый Android Studio для реализации двух важных процессов:

  1. Строить наши проекты
  2. Упакуйте файл AndroidManifest.xml, папку res и двоичный код в специально отформатированный zip-файл APK
S.Voulgaris
источник
1

Результаты поиска Избранные фрагменты из Интернета Android | строить. Gradle. Gradle - это система сборки (с открытым исходным кодом), которая используется для автоматизации сборки, тестирования, развертывания и т. Д. ... Например, простая задача скопировать некоторые файлы из одного каталога в другой может быть выполнена скриптом сборки Gradle перед фактической сборкой. процесс происходит.

Али Мазахери
источник
1

В Android Studio Gradle используется для создания наших проектов приложений для Android, следовательно, играет роль системы сборки. До Android Studio, в Eclipse мы использовали для компиляции и сборки приложений с использованием инструмента командной строки, который вскоре был принят на основе графического интерфейса для создания и запуска приложений Android в Eclipse с использованием ANT. Каждый инструмент разработки приложений для Android должен компилировать ресурсы, исходный код Java, внешние библиотеки и объединять их в окончательный APK.

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

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

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

Есть два файла build.gradle для каждого проекта Android Studio, один из которых предназначен для приложения, а другой - для файлов сборки уровня проекта (уровня модуля) .

В процессе сборки компилятор берет исходный код, ресурсы, внешние библиотеки JAR-файлов и файл AndroidManifest.xml (который содержит метаданные о приложении) и преобразует их в файлы .dex (исполняемые файлы Dalvik) , которые включают в себя байт-код . Этот байт-код поддерживается всеми устройствами Android для запуска вашего приложения. Затем APK Manager объединяет файлы .dex и все другие ресурсы в один файл apk. APK Packager подписывает apk отладки или выпуска, используя соответствующее хранилище ключей отладки или выпуска.

Debug apk обычно используется для тестирования, или мы можем сказать, что он используется только на стадии разработки. Когда ваше приложение оснащено нужными функциями и вы готовы опубликовать приложение для внешнего использования, вам требуется APK-версия выпуска, подписанная с использованием хранилища ключей выпуска.

Теперь давайте рассмотрим некоторые файлы Gradle.

setting.gradle Файл setting.gradle (настройка Gradle) используется для указания всех модулей, используемых в вашем приложении.

build.gradle (уровень проекта) Файл build.gradle верхнего уровня (модуля) - это файл сборки уровня проекта, который определяет конфигурации сборки на уровне проекта. Этот файл применяет конфигурации ко всем модулям в проекте приложения для Android.

build.gradle (уровень приложения) Файл уровня приложения build.gradle находится в каждом модуле проекта Android. Этот файл включает имя вашего пакета в виде applicationID, имени версии (apk version), кода версии, минимального и целевого sdk для конкретного модуля приложения. Когда вы включаете внешние библиотеки (не файлы jar), вам нужно упомянуть об этом в файле gradle уровня приложения, чтобы включить их в ваш проект в качестве зависимостей приложения.

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

./gradlew build - (сборка проекта)
./gradlew clean build - (сборка проекта с нуля)
./gradlew clean build - (запуск теста)
./gradlew wrapper - (чтобы увидеть все доступные задачи)

Supriya
источник
0

Gradle = Groovy + Cradle Hans Dockter комментарий на форуме

Путаница немного ненужна, когда ее можно было просто назвать «Сборка» или что-то в Android Studio.

Нам нравится усложнять себе жизнь в сообществе разработчиков.

James_UK_DEV
источник