Що таке Gradle в Android Studio?


1313

Gradle трохи заплутано для мене, а також для будь-якого нового розробника Android. Хтось може пояснити, що таке Gradle в Android Studio і яка його мета? Чому він включений в Android Studio?


4
Дивіться gradle.org
Eng.Fouad

14
Щоб відповісти, чому ви хочете побудувати такий інструмент, як Gradle, перегляньте цю публікацію від Jeff Atwood.
Адам S

829
Коли хтось задає тут питання, що так, чи є в Google багато посилань на це, то вони насправді просять, щоб хтось відповів на це питання простою мовою і поставив її в контекст , наприклад, для чого нам це потрібно? , хто його найбільше використовуватиме, чи нам це потрібно знати, щоб створювати додатки для Android в Android Studio і т. д. Оскільки найчастіше посилання, які ви знайдете про це в Google, знаходяться в "tech-speak", а для початківців це заплутано.
Azurespot

3
@NoniA. Саме мої думки. Я все ще трохи розгублений, чи є gradle лише фоновий процес, який компілює написаний нами код? Крім того, переглядаючи безліч інших відповідей, вони згадують про залежності. Що це? Дуже дякую!

Можна ознайомитись зі стислим і приємним поясненням тут. Представляємо градули . Досить корисно
eRaisedToX

Відповіді:


1531

Коротка відповідь

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

21
Що я не розумію, це те, чому gradle намагається підключитися до Інтернету для кожного окремого проекту, який я роблю, або навіть кожного разу, коли я хочу скласти
AaA

4
Я думав, що IntelliJ вже знав, як будувати проекти Android без необхідності іншої системи збирання.
Арне Евертссон

17
Ще однією ключовою перевагою gradle перед системою (ами) для побудови Android Studio є управління залежностями. Раніше, щоб використовувати бібліотеку Android у проекті, потрібно було б завантажити вихідний код, додати його до свого проекту та скомпілювати його зі своїм проектом. Натомість, з gradle можна додати один рядок до build.gradle, а gradle потім завантажить скомпільовану бібліотеку із загальнодоступного сховища та додасть її у ваш проект. Деякі приклади: blog.teamtreehouse.com/android-libraries-use-every-project Це також працює для стандартних файлів jar jar, замість того, щоб поміщати їх у каталог lib.
Stan Kurdziel

4
Gradle - це жахлива система побудови. Використовуючи Android Studio, я хочу, щоб він піклувався про збірку. Я не розумію, чому додавання деяких класів змушує Gradle робити синхронізацію, перш ніж це стане в нагоді. Робота з Visual Studio для порівняння є приголомшливою (або навіть X-кодом) - не потрібні додаткові шахрайські додатки. IDE будує проект та рішення без необхідності розбиратись у випадкових файлах для налаштувань, необхідних процесу збирання Android часом або за допомогою оновлень старих проектів. Gradle - це найгірша частина досвіду Android.
csmith

162

Це новий інструмент побудови, який Google хоче використовувати для Android. Він використовується завдяки тому, що він більш розтяжний та корисний, ніж мураха. Він призначений для покращення досвіду для розробників.

Ви можете переглянути розмову Xavier Ducrohet з Команди розробників Android на вході / виводу Google тут.

Також є ще одна розмова на Android Studio від Xavier і Tor Norbye, також під час вводу / виводу Google .


4
Я думав, що IntelliJ вже знав, як будувати проекти Android без необхідності іншої системи збирання.
Арне Евертссон

1
Тож gradle є лише фоновим процесом, який компілює написаний мною код? Крім того, переглядаючи безліч інших відповідей, вони згадують про залежності. Що це? Дякуємо стільки Даніелю!

2
@ user5562706 Він не компілює код, але він відповідає за виклик виконавчого файлу, який компілює ваш код. Після компіляції вашого коду він може запустити інше завдання, щоб упакувати його, інше скопіювати у вибраний каталог, а потім інше, щоб завантажити його кудись на сервер ... Це такі завдання Gradle, чи будь-яка збірка система, зробить.
Майкл Беррі

63

Gradle - це система збірки, що працює на Android Studio .

Наприклад, іншими мовами:


23
Коли ви сказали, що Gradleце схоже make, я щойно зрозумів його поняття
user3405291

3
PHING PHP
Yousha Aleayoub

15
Один з найшвидших способів, яким я знайшов, щоб дізнатися, що робить невідомий інструмент і де він потрапляє в конвеєр, - це ввести в Google ім’я інструменту та "vs". Зазвичай результати показують "X проти Y", де Y - це інший інструмент, з яким ви могли б бути більш знайомими.
Джеймс Куанг

webpack для javascript
codepig

47

Ось детальне пояснення щодо того, що Gradleтаке і як ним користуватися в Android Studio.

Вивчення файлів Gradle

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

Файли збірки Gradle

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

  2. Проекти Android Studio складаються з 1 або більше модулів, які є компонентами, які ви можете самостійно створити, протестувати та налагодити. У кожного модуля є власний файл збірки, тому кожен проект Android Studio містить 2 види файлів збірки Gradle.

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

  4. Файл збірки на рівні модуля : У кожного модуля є власний файл збірки Gradle, який містить налаштування збірки, характерні для модуля. Ви витратите більшу частину часу на редагування файлів (-ів) збірки на рівні модуля, а не файлів збірки верхнього рівня вашого проекту.

Щоб переглянути ці build.gradleфайли, відкрийте панель проекту Android Studio (вибравши вкладку Проект) та розгорніть папку сценаріїв Gradle. Перші два елементи в папці сценаріїв Gradle - це файли збірки Gradle на рівні проекту та модуля

Файл збірки Gradle верхнього рівня

Кожен проект Android Studio містить єдиний файл збірки Gradle верхнього рівня. Цей build.gradleфайл є першим елементом, який з’являється в папці сценаріїв Gradle і чітко позначений Project.

Здебільшого вам не потрібно вносити жодних змін у цей файл, але все-таки корисно зрозуміти його вміст та роль, яку він відіграє у вашому проекті.

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

Окрім файлу збірки Gradle на рівні проекту, кожен модуль має власний файл збірки Gradle. Нижче наведена анотована версія основного файлу збірки Gradle на рівні модуля.

Інші файли Gradle

На додаток до файлів build.gradle, ваша папка Gradle Scripts містить деякі інші файли Gradle. Більшу частину часу вам не доведеться редагувати ці файли вручну, оскільки вони автоматично оновлюються під час внесення будь-яких відповідних змін у проект. Однак, непогано зрозуміти роль цих файлів у вашому проекті.

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

Цей файл дозволяє іншим людям створювати ваш код, навіть якщо на їх машині не встановлено Gradle. Цей файл перевіряє, чи встановлена ​​правильна версія Gradle та завантажує необхідну версію, якщо це необхідно.

settings.gradle

Цей файл посилається на всі модулі, що складають ваш проект.

gradle.properties (Властивості проекту)

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

local.properties (SDK Location)

Цей файл повідомляє плагін Android Gradle, де він може знайти вашу установку Android SDK.

Примітка: local.properties містить інформацію, специфічну для локальної установки Android SDK. Це означає, що ви не повинні тримати цей файл під контролем джерела.

Пропоноване читання - Навчальний посібник "Тутпул"

З цього я зрозумів чітке розуміння граду.


1
Зауважте, що відповіді, що стосуються лише посилань, не відштовхують, відповіді на відповідність повинні бути кінцевою точкою пошуку рішення (проти ще однієї зупинки посилань, яка, як правило, з часом зависла). Просимо додати тут окремий конспект, зберігаючи посилання як орієнтир.
Клеопатра

30

Gradle - це один із типів інструменту побудови, який будує вихідний код програми. Отже, це важлива частина Android Studio, і її потрібно встановити, перш ніж розпочати розробку програми.

Нам не доведеться встановлювати його окремо, оскільки Android Studio це робить для нас, коли ми робимо наш перший проект.


4
Що ви маєте на увазі під побудовою вихідного коду програми? Це не робота розробника?
відданийандрейдер

Ця відповідь є абсолютно неправильною в тому, як вона написана. Gradle - це інструмент упаковки, який постачається в комплекті з Android Studio, тому для цього потрібно піклуватися про створення apk. Вихідний код завжди будується компілятором і більше нічого.
AutomEng

З іншого питання, здається, що Gradle не буде працювати належним чином без надійного підключення до Інтернету, це означає, що я повинен викинути Android Studio, поки це не буде вирішено?
Майкл

2
@commissandroider: завдання розробника - писати вихідний код, а не створювати його. В системі використовується Розвитку слово «збирання» означає процес упаковки в скомпільований вихідний код в кінцевий продуктпакет або виконуваний файл )
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. Це допомагає в розгортанні продукту в магазині додатків відповідно до вимог на різних типах пристроїв


ДОБРИЙ СПИСОК

Підручники Вогелла


25

Ви можете знайти все, що вам потрібно знати про Gradle, тут: Посібник користувача Gradle Plugin

Цілі нової системи побудови

Цілями нової системи побудови є:

  • Спростіть повторне використання коду та ресурсів
  • Спростіть створення декількох варіантів програми, або для багатоповерхового розповсюдження, або для різних смаків програми
  • Спростіть налаштування, розширення та налаштування процесу збирання
  • Гарна інтеграція IDE

Чому Градле?

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

Ось деякі його особливості, які змусили нас обрати Gradle:

  • Мова для домену (DSL) для опису та маніпулювання логікою побудови
  • Файли побудови створені на основі Groovy і дозволяють змішувати декларативні елементи через DSL та використовувати код для маніпулювання елементами DSL для забезпечення користувацької логіки.
  • Вбудований менеджмент залежності через Мейвен та / або Плющ.
  • Дуже гнучка. Дозволяє використовувати передовий досвід, але не примушує свій власний спосіб робити.
  • Плагіни можуть відкрити власний DSL та власний API для створення файлів, що використовуються.
  • Хороший API інструментів, що дозволяє інтегрувати IDE

25

Я пишу два підручника, щоб написати відповідь один , два

Gradle - це загальний засіб, декларативний інструмент побудови. Це загальне призначення, оскільки з його допомогою можна будувати майже все, що вам важливо реалізувати в сценарії збірки. Це декларативне значення, оскільки ви не хочете бачити безліч кодів у файлі збірки, який не читабельний і менш ремонтопридатний. Таким чином, хоча Gradle надає ідею конвенцій та просту та декларативну побудову, він також робить інструмент пристосованим та розробникам можливість розширювати. Він також пропонує простий спосіб налаштувати поведінку за замовчуванням та різні гачки, щоб додати будь-які сторонні функції.

Gradle поєднує в собі хороші частини обох інструментів і надає додаткові функції та використовує Groovy як мову, що визначає домен (DSL). Він володіє потужністю та гнучкістю інструмента «Мураха» з такими функціями, як життєвий цикл побудови та простота використання.

Чому Градле? Чому зараз?

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

Скажімо, ви хочете скопіювати файл у певне місце під час створення версії свого проекту. Щоб визначити версію, ви перевіряєте рядок у метаданих, що описують ваш проект. Якщо він відповідає певній схемі нумерації (наприклад, 1.0-RELEASE), ви копіюєте файл з точки А в точку В. З зовнішньої точки зору це може здатися тривіальною задачею. Якщо вам доводиться покладатися на XML, мова побудови багатьох традиційних інструментів, висловити цю просту логіку стає досить складно.

Еволюція інструментів побудови Java

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

У Ant ви робите ціль JAR залежною від цілі компіляції. Мураха не дає ніяких рекомендацій щодо структури свого проекту. Хоча це забезпечує максимальну гнучкість, Ant робить кожен сценарій збірки унікальним і важким для розуміння. Зовнішні бібліотеки, що вимагаються вашим проектом, зазвичай перевіряються на контроль версій, оскільки не існує автоматизованого механізму, який дозволяє їх витягувати з центрального місця.

Maven 1 , що вийшов у липні 2004 року, намагався полегшити цей процес. Він забезпечив стандартизовану структуру проектів і каталогів, а також управління залежностями. На жаль, користувацьку логіку важко реалізувати

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

Gradle поєднує в собі найкращі характеристики інших інструментів побудови.

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

Набір функцій Gradle's Compelling Feature

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

Навіщо будувати ваші Java проекти за допомогою Gradle, а не Ant або Maven?

Інструмент збірки за замовчуванням для Android (і нова зірка інструментів збирання на JVM) призначений для полегшення сценаріїв складних, багатомовних збірок. Чи варто вам змінити його, якщо ви використовуєте Ant або Maven?

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

Gradle не може знати всіх вимог, характерних для вашого підприємства. Розкриваючи гачки на фазах життєвого циклу, Gradle дозволяє контролювати та конфігурувати поведінку виконавчого сценарію.

Градле встановлює словник для своєї моделі, розкриваючи DSL, реалізований в Groovy. При роботі зі складною проблемною областю в цьому випадку завданням побудови програмного забезпечення, вміння використовувати загальну мову для вираження вашої логіки може бути потужним інструментом.

Інший приклад - спосіб вираження залежностей від зовнішніх бібліотек - дуже поширена проблема, вирішена інструментами побудови. Графічний Gradle надає вам два блоки конфігурації для сценарію збирання, які дозволяють визначати залежності та сховища, з яких ви хочете отримати їх. Якщо стандартні елементи DSL не відповідають вашим потребам, ви навіть можете ввести свій власний словник через механізм розширення Gradle.

Інтеграція з іншими інструментами побудови

Градле добре грає з попередниками «Мураха, Мейвен та Плющ», як показано на зображенні нижче.

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

Автоматизація проекту від побудови до розгортання

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

На зображенні: Етапи трубопроводу розгортання.

  • Складання коду

  • Запуск блоку та інтеграційні тести

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

  • Створення розподілу

  • Забезпечення цільового середовища

  • Розгортання результатів

  • Виконання диму та автоматизованих функціональних випробувань

Я пишу два підручника, щоб написати відповідь один , два


1
На додаток до цього, ви можете створювати додатки для Android з командного рядка на вашій машині або на машинах, де Android Studio не встановлено (наприклад, сервери безперервної інтеграції).
jettimadhuChowdary

23

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

Іншим пов'язаним терміном є автоматизація побудови, яка є процесом автоматизації створення програмного забезпечення та пов'язаних з ними процесів, включаючи: складання вихідного коду комп'ютера у двійковий код, упаковку бінарного коду та запуск автоматизованих тестів.

Трохи схожа система складання для інших мов (див. Повний список тут ):

  1. Мураха Apache & Apache Maven - Java
  2. sbt (Simple Build Tool) - для Scala (Play Framework тощо)
  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 npm, або Python's pip, або Debian apkg (і я впевнений, що багато подібних менеджерів пакетів для інших мов і систем) усі прекрасно працюють ... відсутні залежності залежать від минулого.

За винятком Android. Зараз Android Studio є єдиним місцем, де я, здається, переживаю пекло відсутньої залежності.

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

І як би там не було, якщо Gradle - це надпотужна система побудови, чому я все ще керую цілою низкою інших залежностей у менеджера sdk? Чому не може проект, який потребує, скажімо, ndk вказати це у своєму файлі Gradle, щоб він автоматично встановлювався та вбудовувався, коли це потрібно? Чому NDK особливий? Аналогічно для цільових платформ? Чому я встановлюю їх явно в IDE, а не просто перевіряю мій проект проти них і все це впорядковую для мене за кадром?


4
Я повністю згоден, що Gradle - це жахлива система побудови. Саме компонент робить Android Studio набагато гіршим, ніж X-Code або Visual Studio. Я усвідомлюю, що вони повинні "будувати" систему за лаштунками, але я не дуже зобов'язаний знати / піклуватися / розбиратися з їхніми внутрішніми послугами. З іншого боку, Gradle, здається, зривається з кожним оновленням Android Studio і припускає систему, навіть просто додаючи клас. Жоден інший IDE цього не робить.
csmith

14

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

Переваги:

  • Dsl - Доменна мова, заснована на groovy
  • DAG - спрямований ациклічний графік
  • Поступові нарощування
  • Модель розширеного домену
  • Gradle завжди в курсі
  • Перед виконанням завдання Gradle робить знімок введення та виведення завдання.
  • У випадку, якщо знімок змінився або його немає, Гральде повторно виконає це завдання.

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

Через DSL можна налаштувати такі записи маніфесту:

Варіант побудови

За замовчуванням плагін Android автоматично налаштовує проект зі створення як налагодження, так і версії версії програми.

Залежності

  1. Місцеві залежності:

Якщо у вашій локальній файловій системі є двійкові архіви, від яких залежить модуль, наприклад, файли JAR, ви можете оголосити ці залежності у файлі збірки для цього модуля.

  1. Віддалені залежності:

Спочатку сховище має бути додане до списку, а потім залежність повинна бути оголошена таким чином, що Мейвен чи Айві оголошують свої артефакти.


13

Gradle - це мова Groovy JVM, що мураха до Яви. В основному, це інструмент побудови Groovy. На відміну від Ant, він заснований на повній мові Groovy. Наприклад, ви можете написати код сценарію Groovy в сценарії Gradle, щоб зробити щось, а не спиратися на певну мову домену.

Я не знаю конкретної інтеграції IntelliJ, але уявіть, що ви могли б "розширити" Groovy таким чином, щоб ви могли написати конкретні "побудувати" мовні примітиви, і вони просто стали частиною мови Groovy. (Метапрограмування Groovy - це ціла дискусія для себе.) IntelliJ / Google міг би використовувати Gradle для створення дуже високого рівня побудови мови, але це мовна побудова на відкритому стандарті, що розширюється.


2
це не "Інструмент для створення" Groovys "- це багатоцільовий інструмент збірки, DSL побудований поверх groovy
martyglaubitz

10

Gradle - це вдосконалений інструментарій побудови для android, який управляє залежностями та дозволяє визначити власну логіку побудови. особливості схожі

  • Налаштувати, налаштувати та розширити процес збирання.

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

  • Повторне використання коду та ресурсів.

посилатися


9

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

Ось декілька речей, які ви можете зробити з Gradle.

  • Мінімальна конфігурація необхідна для нових проектів, оскільки Gradle має конфігурації за замовчуванням для ваших проектів андроїд-студії.

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

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

  • Якщо ви додасте всю необхідну інформацію, таку як, keyPasswordі keyAliasу свій файл збірки Gradle, ви можете використовувати Gradle для створення підписаних APK-файлів.

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


8

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

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

  • Байт-код
  • Ресурси (зображення, інтерфейс користувача, xml тощо)
  • Файл маніфесту

АПК-файл підписується та передається на пристрій за допомогою ADB (Android Debug Bridge), де він виконується.


6

Gradle - це спеціальний інструмент побудови, який використовується для створення APK або відомий як набір пакетів додатків.


4

автор @Brian Gardner:

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

Особливість Gradle:

  1. Управління залежністю
  2. Використання мурахи з Gradle
  3. Плагіни Gradle
  4. Плагін Java
  5. Плагін для Android
  6. Багатопроектні побудови

3

Gradle - це те, що дозволяє автоматизувати створення складних проектів Android, які включають 10 тисяч тисяч рядків коду з різних джерел, проектів, бібліотек тощо. Він може умовно генерувати декілька оптимізованих APK на основі безлічі специфікацій конфігурації - якщо ви зацікавившись, інші відповіді надають більш детальну інформацію про цей аспект Gradle.

Однак якщо ви новачок у розробці Android, Gradle у 99% випадків зупиняє ваш проект. Це непроборлива, складна система, яка ефективно обтяжує процес збирання Android і по суті робить його недоступним недосвідченим розробникам, тобто для того, щоб створити простий додаток для Android на початковому рівні, малодосвідчуваному новачкові може знадобитися вивчити та зрозуміти багато речей, на які вони не торгувалися. як от:

  • Структура та екосистема Android APK
  • Android Studio
  • Класи Java та залежності
  • Groovy
  • Сценарії побудови Gradle
  • Багато інших складних і цікавих технологій

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

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

Очевидним є його відсутність (будь ласка, повідомте мене, чи є така річ) - початковий рівень, легкий IDE зі зменшеним набором функцій, який одночасно спрощує процес збирання, не затушовуючи його (так що не netbeans або затемнення), можливо, все ще використовуйте Gradle (що було не так з Ant). Слід спростити створення APK, які відповідають декільком загальним конфігураціям та використовують структуру проекту, яка може перетворитись на повноцінний проект Android Studio, якщо ви вирішите скористатись цим способом.


1

Простіше кажучи, Gradle - це інструмент, який надає Android Studio для реалізації двох важливих процесів:

  1. Побудувати наші проекти
  2. Пакуйте AndroidManifest.xml, папку res та двійковий код у спеціально відформатований поштовий файл під назвою APK

1

Результати пошуку Рекомендований фрагмент з Інтернету Android | будувати. градле. Gradle - це система збирання (з відкритим кодом), яка використовується для автоматизації побудови, тестування, розгортання тощо. Наприклад, просте завдання з копіювання деяких файлів з одного каталогу в інший може виконувати сценарій збирання Gradle перед фактичною збіркою процес відбувається.


1

В Android Studio Gradle використовується для побудови наших прикладних проектів для Android, отже грає роль системи складання. Перед Android Studio, у програмі Eclipse, ми збирали та створювали програми за допомогою інструмента командного рядка, який незабаром перейняли кроки на основі GUI для створення та запуску програм Android у затемненні за допомогою ANT. Кожен інструмент розробки додатків для Android має збирати ресурси, вихідний код Java, зовнішні бібліотеки та комбінувати їх у остаточний APK.

Gradle - це система збирання, яка відповідає за збірку, тестування, розгортання та перетворення коду у файли .dex і, отже, запуск програми на пристрої.

Оскільки Android Studio поставляється із попередньо встановленою системою Gradle, для створення нашого проекту немає необхідності встановлювати додаткові програмні засоби для виконання. Щоразу, коли ви натискаєте наБіжи кнопку в студії Android, завдання gradle автоматично запускається і починає складати проект, і після того, як gradle виконає своє завдання, додаток запускається в AVD або на підключеному пристрої.

Така система збирання, як Gradle, не є компілятором, лінкером тощо, але вона контролює і контролює роботу компіляції, зв’язування файлів, запуску тестових випадків і, в кінцевому рахунку, зв’язування коду в apk-файл для вашої програми Android.

Існує два файли build.gradle для кожного проекту студії Android, один - для програми та інший для файлів збірки проекту (рівень модуля) .

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

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

Тепер давайте пролити трохи світла на файли gradle.

setu.gradle Файл settings.gradle (налаштування Gradle) використовується для визначення всіх модулів, які використовуються у вашій програмі.

build.gradle (рівень проекту) Файл верхнього рівня (модуля) build.gradle - файл збірки на рівні проекту, який визначає конфігурації збірки на рівні проекту. Цей файл застосовує конфігурації для всіх модулів в проекті Android.

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

Примітка: Якщо певна програма розробляється у варіаціях для окремих модулів, таких як Smart Phone, Tablet або TV, тоді слід створити окремі файли gradle для всіх. Ви навіть можете запустити систему Gradle через інструмент командного рядка . Для нього використовуються наступні команди:

./gradlew збірка - (проект збірки)
./gradlew чиста збірка - (збірка проект повної подряпина)
./gradlew чистої збірки - (запустити тест)
./gradlew обгортки - (щоб побачити всі доступні завдання)


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.