Што такое Gradle ў Android Studio?

Gradle з'яўляецца трохі заблытаным для мяне, а таксама для новага распрацоўніка Android. Можа хто-небудзь растлумачыць, што Gradle ў Android Studio і якая яго мэта? Чаму Gradle уключаны ў Android Studio?

1045
См gradle.org
дададзена аўтар Eng.Fouad, крыніца
Калі хто-то задае пытанне тут, што так, сапраўды ёсць шмат спасылак у Google пра гэта, што яны сапраўды просяць для кагосьці, каб адказаць на гэтае пытанне з <�б> простая мова і змясціць яго ў <�Ь > кантэкст , напрыклад, навошта нам гэта трэба, хто будзе выкарыстоўваць яго больш за ўсё, мы павінны ведаць яго для стварэння Android прыкладанняў у Android Studio і г.д. Таму што часцей за ўсё спасылкі вы знойдзеце пра гэта на Google у «тэхнічна казаць» і для пачаткоўца гэта збівае з толку.
дададзена аўтар Azurespot, крыніца
Для адказу <�я> чаму </я> вы хочаце інструмент зборкі, такія як Gradle, праверце гэты пост ад Jeff Atwood.
дададзена аўтар Adam S, крыніца
Можа глядзець на кароткай і Ніцы тлумачэння тут Уводзячы Gradle . вельмі карысна
дададзена аўтар eRaisedToX, крыніца
@NoniA. Дакладна мае думкі. Я яшчэ крыху заблытаўся, гэта Gradle толькі фонавы працэс, які кампілюе код, які я напісаў? Акрамя таго, пасля таго, гледзячы на ​​мноства іншых адказаў, яны згадваюць залежнасці. Што гэта? Вялікі дзякуй!
дададзена аўтар user5562706, крыніца

26 адказы

Кароткі адказ

Gradle сістэма зборкі.

доўгі адказ

Перад Android Studio вы карыстаецеся Eclipse, для мэт развіцця, і, хутчэй за ўсё, вы не ведаеце, як пабудаваць свой Android APK без Eclipse.

Вы можаце зрабіць гэта ў камандным радку, але вы павінны даведацца, што робіць кожны інструмент (ах, AAPT) у SDK. Зацьменне выратаваў нас ад усіх гэтых нізкага ўзроўню, але важных, фундаментальных дэталяў, падаўшы нам сваю ўласную сістэму зборкі.

Зараз вы ніколі не задумваліся, чаму Рэз тэчка знаходзіцца ў тым жа каталогу, што і ЦСІ тэчкі?

Гэта дзе сістэма зборкі ўваходзіць у карціну. Сістэма зборкі аўтаматычна прымае ўсе зыходныя файлы ( .java або .xml ), затым прымяняе прылады экспарту (напрыклад, прымае Java файлы класаў і пераўтворыць іх у декс файлы), і групы, усе яны ў адзін сціснуты файл, наш любімы APK.

Гэтая сістэма зборкі выкарыстоўвае некаторыя пагадненні: прыклад аднаго, каб паказаць каталог, які змяшчае зыходныя файлы (у Eclipse, гэта \ SRC тэчка) або файлы рэсурсаў (у Eclipse, гэта \ Рэз тэчка).

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

Gradle яшчэ адзін <�моцны> сістэма пабудовы , які прымае лепшыя рысы ад іншых сістэм зборкі і аб'ядноўвае іх у адно цэлае. Яна ўдасканальвалася на аснове ад іх недахопаў. Гэта <�моцны> JVM на аснове пабудовы сістэмы , што гэта азначае, што вы можаце напісаць свой уласны сцэнар у Java, якая Android студыя робіць выкарыстанне.

Адна халодная рэч аб Gradle з'яўляецца тое, што гэта <�моцны> убудова сістэма . Гэта азначае, што калі ў вас ёсць свой уласны мова праграмавання, і вы хочаце аўтаматызаваць задачу стварэння якой-небудзь пакет (выхад як баночка для Java) з крыніц, то вы можаце напісаць поўны убудова ў Java або Groovy (або Котлін см тут ), і распаўсюдзіць яго на астатняй свет.

Чаму Google выкарыстоўваць?

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

Вы, напэўна, бачылі build.gradle файл (ы) у вашым праекце. Гэта значыць, дзе вы можаце пісаць скрыпты для аўтаматызацыі задач. Код, які вы бачылі ў гэтых файлах Groovy код. Калі вы пішаце System.out.println ( «Hello Gradle»); , то ён будзе друкаваць на кансолі.

Што вы можаце зрабіць у сцэнары зборкі?

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

1260
дададзена
Тое, што я не разумею, чаму Gradle спрабуе падлучыцца да Інтэрнэту для кожнага асобнага праекта, што я раблю ці нават кожны раз, калі я хачу, каб скампіляваць
дададзена аўтар AaA, крыніца
«Гэта азначае, што калі ў вас ёсць свой уласны мова праграмавання ... Вы можаце напісаць поўны убудова ў Java або Groovy». Там няма такога паняцця, як «свой уласны мова праграмавання». Вы павінны выкарыстоўваць Groovy.
дададзена аўтар AndroidDev, крыніца
<�Код> build.gradle друкуе "Hello Gradle." Гэта было ўзрушаюча.
дададзена аўтар Pratik Butani, крыніца
Я думаў, што IntelliJ ўжо ведаў, як будаваць Android праекты без неабходнасці для іншай сістэмы зборкі.
дададзена аўтар Arne Evertsson, крыніца
Я думаю, што Gradle з'яўляецца «.jar» апрацоўшчык для распрацоўшчыкаў - Ці спрабуе быць. Што гэта трэба рабіць са стварэннем APK файлаў. Зацьменне не можа ў адзіночку экспартаваць у APK, але Gradle мог? - Гэта, здаецца, адзіная кропка рэчывы вы даеце ў гэтым адказе.
дададзена аўтар Lealo, крыніца
На якой мове напісана build.gradle?
дададзена аўтар Malwinder Singh, крыніца
Яшчэ адным важным перавагай Gradle над папярэдняй сістэмай Android студыі зборкі (ов) кіраванне залежнасцямі. Раней выкарыстоўваць Android бібліятэку ў праекце, можна было б загрузіць зыходны код, дадайце яго ў свой праект і скампіляваць яго з вашым праектам. Замест гэтага, з Gradle можна дадаць адзін радок у build.gradle і Gradle запампуе скампіляваныя бібліятэкі з публічнай сховішчы і дадаць яго ў свой праект. Некаторыя прыклады: blog.teamtreehouse.com/android-libraries-use-every-project Гэта таксама працуе для стандартных Java файлаў .jar замест таго, каб пакласці іх у Lib каталога.
дададзена аўтар Stan Kurdziel, крыніца
Хіба гэта не магчыма працаваць у студыі АНДРОІД без выкарыстання Gradle?
дададзена аўтар WSS, крыніца
@СПАДАРЫНЯ. Цытата з каментара вышэй па: Gagandeep Сінгх «кода, які вы бачылі ў гэтых файлах з'яўляецца завадным кодам.» Groovy з'яўляецца пашырэннем Java: en.wikipedia.org/wiki/Groovy_%28programming_language%29 </а>
дададзена аўтар Sold Out, крыніца
Выдатная інфармацыя ... ачысьціў паняцце ... Але, Што з'яўляецца прычынай паводзін ляноты ў Gradle ў працэсе будаўніцтва ??? А ёсць нейкія фактары, якія могуць паскорыць Gradle зборкі?
дададзена аўтар Shachi, крыніца
Gradle страшная сістэма зборкі. Пры выкарыстанні Android Studio, я хачу, каб клапаціцца пра зборку. Я не разумею, чаму даданне некаторых класаў прымушае Gradle рабіць сінхранізацыю, перш чым ён можа быць карысны. Праца з Visual Studio у параўнанні з'яўляецца дзіўным (ці нават X-Code) - ня дерьмовый дапаўненні неабходна. IDE стварае праект і рашэнне без неабходнасці важдацца вакол у выпадковых файлах для налады, якія неабходныя ў працэсе зборкі Android у разы або праз абнаўленне старых праектаў. Gradle з'яўляецца найгоршай часткай Android вопыту.
дададзена аўтар csmith, крыніца
Так Gradle проста фонавы працэс, які кампілюе код, які я напісаў? Акрамя таго, пасля таго, гледзячы на ​​мноства іншых адказаў, яны згадваюць залежнасці. Што гэта? Дзякуе так шмат Gagandeep!
дададзена аўтар user5562706, крыніца
Ды Gradle яшчэ адзін фонавы працэс, які збірае code.Dependency не што іншае, як шлях баночка файл або зыходны шлях кода, які вы хочаце выкарыстоўваць у вашым праекце ў простым фармаце.
дададзена аўтар Gagandeep Singh, крыніца
Вы можаце напісаць свой уласны убудова ў Java Або Groovy
дададзена аўтар Gagandeep Singh, крыніца
@ User1700737: Для стварэння просты студыі андроіда АПК прадугледжаны больш Gradle, так што калі вы спытаеце мяне, то няма неабходнасці ўдавацца ў вантробы Gradle, наколькі проста пакаленне APK з'яўляецца cencerned. Gradle пабудавана сістэма і дапамагае дасягнуць складаных, залежных задач на адным дыхання і аўтаматызаваны спосабе.
дададзена аўтар Gagandeep Singh, крыніца
Gradle гэта крутая рэч, калі мы выкарыстоўваем яго, напрыклад, я пабудаваў сістэму з дапамогай Gradle, якая заснавана на задачы запуску кірхі устр або прад версія кода і аўто здзяйсняе APK ў SVN, а затым паведамленні электроннай пошты, APK і паведамленне ідэнтыфікатары электроннай пошты, настроеных ў самой Gradle. Так што мае ручныя задачы больш.
дададзена аўтар Gagandeep Singh, крыніца
Я павінен сказаць, што Gradle дае мне праблемы, прымаючы праект AndroidStudio з аднаго месца ў іншае. Несупадзенне версій, якія адсутнічаюць модуляў, этажэркі ... гэта дае мне цяжкі час. Я ў канчатковым выніку ўзнавіць шкілет праекта і рэзкі/ўстаўкі часткі кода, якія былі са старога праекта ў новы. І гэта пад Windows, для абодвух крыніц і прызначэння. Я збіраюся перанесьці яго зараз пад лабараторыяй ў Linux аснове.
дададзена аўтар jfmessier, крыніца

Гэта новы інструмент для зборкі, што Google хоча выкарыстоўваць для Android. Ён выкарыстоўваецца з-за яго больш пашыраецца, і больш карысна, чым мурашка. Ён прызначаны для павышэння вопыту распрацоўшчыкаў.

Вы можаце прагледзець размова па Xavier Ducrohet з распрацоўшчыкаў Team Android на Google I/O тут.

Існуе таксама яшчэ адна размова на Android Studio Ксавье і Tor Norbye, таксама падчас Google I/O .

137
дададзена
@ User5562706 Гэта не кампіляваць код, але ён адказвае за выклік выкананага файла, які кампілюецца код. Пасля кампіляцыі кода, ён можа запусціць яшчэ адну задачу, каб спакаваць яго ўверх, іншы, каб скапіяваць яго ў дырэкторыю па вашаму выбару, а затым, магчыма, іншы, каб загрузіць яго на сервер дзе-небудзь ... Гэта тыя віды заданняў Gradle, або любы зборкі сістэма будзе рабіць.
дададзена аўтар Michael Berry, крыніца
Я думаў, што IntelliJ ўжо ведаў, як будаваць Android праекты без неабходнасці для іншай сістэмы зборкі.
дададзена аўтар Arne Evertsson, крыніца
Так Gradle проста фонавы працэс, які кампілюе код, які я напісаў? Акрамя таго, пасля таго, гледзячы на ​​мноства іншых адказаў, яны згадваюць залежнасці. Што гэта? Дзякую так шмат Даніэля!
дададзена аўтар user5562706, крыніца

Gradle is a build system running on Android Studio.

У іншых мовах, напрыклад:

35
дададзена
Калі вы сказалі, Gradle падобны зрабіць , я толькі што атрымаў яго канцэпцыі
дададзена аўтар user3405291, крыніца
Просты адказ !!!
дададзена аўтар Kalanidhi, крыніца
Phing з <�б> PHP
дададзена аўтар Yousha Aleayoub, крыніца

Ніжэй прыводзіцца падрабязнае тлумачэнне аб тым, што Gradle і як выкарыстоўваць яго ў андроіда студыі.

<�Моцны> Вывучэнне Gradle файлаў

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

<�Моцны> Gradle зборкі файлаў

  1. Gradle будаваць файлы выкарыстоўваць Domain Specific Language або DSL , каб вызначыць звычай будаваць логіку і ўзаемадзейнічаць з Android канкрэтных элементы Android убудова для Gradle.

  2. Android Студыйныя праекты складаецца з 1 або больш модуляў, якія кампаненты, якія вы можаце ствараць, тэставаць і адладжваць незалежна адзін ад аднаго. кожны модуль мае свой уласны файл зборкі, таму кожны праект Android Studio змяшчае 2 выгляду Gradle файлаў зборкі.

  3. <�моцны> Top-Level Пабудуйце Выява: Тут вы знойдзеце варыянты канфігурацыі, якія з'яўляюцца агульнымі для ўсіх модуляў, якія робяць да вашага праекта.

  4. <�моцны> Модуль ўзроўню зборкі файла: Кожны модуль мае свой уласны Gradle пабудаваць файл, які змяшчае параметры зборкі асобных модуляў. Вы будзеце марнаваць большасць ваш час пабудаваць файл для рэдагавання ўзроўню модуля (ов), а не на зборкі верхняга ўзроўню файл праекта.

Для таго, каб зірнуць на гэтыя build.gradle файлы, адкрытыя панэлі Project Android праграмы Studio (выбраўшы ўкладку Project) і адкрыйце папку Gradle Scripts. Першыя два элемента ў тэчцы Gradle Сцэнарыі праекта ўзроўню і ўзроўню модуля Gradle файлаў зборкі

<�Моцны> Top-Level Gradle Пабудуйце Файл

Кожны праект Android Studio змяшчае адзін, верхняга ўзроўню Gradle пабудаваць файл. Гэта build.gradle файл з'яўляецца першым элементам, які з'яўляецца ў тэчцы Gradle Сцэнарыі і выразна пазначаны праект.

<�Р> Вялікую частку часу, вам не трэба ўносіць якія-небудзь змены ў гэты файл, але   гэта яшчэ карысна, каб зразумець яго ўтрыманне і ролю, якую яна гуляе   у рамках вашага праекта.

<�Моцны> Модуль ўзроўню Gradle зборкі файлаў

У дадатак да праекту ўзроўню Gradle стварэння файла, кожны модуль мае Gradle пабудаваць файл самастойна. Ніжэй прыводзіцца анатаваны варыянт базавага модуля, ўзроўню Gradle стварэння файла.

<�Моцны> Іншыя Gradle Файлы

У дадатак да build.gradle файлаў, папка Gradle Сцэнарыі змяшчае некаторыя іншыя файлы Gradle. Большая частка часу вам не давядзецца ўручную рэдагаваць гэтыя файлы, яны будуць аўтаматычна абнаўляцца пры унясенні любых адпаведных змяненняў у праект. Тым не менш, гэта добрая ідэя, каб зразумець ролю, якую гэтыя файлы гуляюць у вашым праекце.

<�Моцны> gradle-wrapper.properties (Gradle Version)

Гэты файл дазваляе іншым людзям будаваць свой код, нават калі яны не маюць Gradle устаноўлены на сваёй машыне. Гэты файл правярае, ўстаноўлена Ці правільная версія Gradle і загружае патрэбную версію, калі гэта неабходна.

<�Моцны> settings.gradle

Гэты файл спасылаецца на ўсе модулі, якія ўваходзяць у склад праекта.

<�Моцны> gradle.properties (Уласцівасці праекта)

<�Р> Гэты файл утрымлівае інфармацыю аб канфігурацыі для ўсяго праекта.   Гэта па змаўчанні пуста, але вы можаце ўжыць шырокі спектр уласцівасцяў для   Ваш праект, дадаўшы іх у гэты файл.

<�Моцны> local.properties (SDK Location)

Гэты файл паведамляе убудова Android Gradle, дзе ён можа знайсці свой Android SDK ўстаноўкі.

Note: local.properties contains information that's specific to the local installation of the Android SDK. This means that you shouldn't keep this file under source control.

Suggested reading - Tutsplus Tutorial

Я атрымаў дакладнае разуменне Gradle ад гэтага.

29
дададзена
Звярніце ўвагу, што спасылку толькі адказы збянтэжаныя, SO адказы павінны быць канчатковай кропкай пошуку для вырашэння (у параўнанні з яшчэ адным прыпынкам спасылак, якія, як правіла чарсцвее на працягу доўгага часу). Калі ласка, разгледзіце магчымасць дадання аўтаномнага канспект тут, захоўваючы спасылку ў якасці спасылкі.
дададзена аўтар kleopatra, крыніца

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

Мы не павінны ўсталяваць яго асобна, так як Android-студыя робіць гэта для нас, калі мы робім наш першы праект.

25
дададзена
Што вы маеце на ўвазе, пабудаваўшы зыходны код праграмы? Хіба гэта не працы дэвелапера?
дададзена аўтар committedandroider, крыніца
@MestreLion лол я быў вельмі зьбянтэжаны, таму што тады людзі выкарыстоўвалі «будынак» са спасылкай на напісанне зыходнага кода для іх працы- я пабудаваў гэты чат-сервер, гэта дадатак для ...
дададзена аўтар committedandroider, крыніца
Адказ на гэтае пытанне зусім няправільна так, як гэта сфармулявана. Gradle з'яўляецца інструментам ўпакоўкі, якая пастаўляецца ў камплекце з Android Studio, так што ён бярэ на сябе гэты будынак APK. Зыходны код заўсёды будуецца кампілятарам і больш нічога.
дададзена аўтар AutomEng, крыніца
Але з іншага пытанне, гэта гучыць як Gradle не будзе працаваць належным чынам без надзейнага інтэрнэт conneciton, робіць гэта азначае, што я павінен выкінуць Android студыі, пакуль гэта не фіксуецца?
дададзена аўтар Michael, крыніца
@committedandroider: праца распрацоўніка з'яўляецца <�я> запісы </я> зыходны код, а не <�я> пабудаваць . У сістэме Развіццю мы выкарыстоўваем слова "Будуюць" азначае працэс <�я> ўпакоўка клавішы <�я> скампіляваны </я> зыходны код у канчатковы <�я> прадукт (а <�я> пакет або <�я> выкананы файл )
дададзена аўтар MestreLion, крыніца

DEFINITION:: Gradle can be described a structured building mechanism where it provides a developer the tools and flexibility to manage the resources of a project to create builds that are smaller in size, targeting specific requirements for certain devices of certain configurations


BASIC CONFIGURATIONS

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

LIBRARIES:: We can add android libraries or any other third party libraries in addition as per requirements easy which was a tedious task earlier. If the library does not fit for the existing project, The developer is shown a log where the person can find a appropriate solution to make changes to the project so that the library can be added. Its just one line of dependency


<�Моцны> генерацыі Разнавіднасці Будаваў

Combining build types with build flavours to get varities of build varients

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

<�Моцны> памяншэнне памеру

Gradle дапамагае паменшыць памер генераванага пабудаваць шляхам выдалення невыкарыстоўваемых рэсурсаў таксама невыкарыстоўваныя рэчы з інтэграваных бібліятэк


MANAGING PERMISSIONS

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


<�Моцны> будуе для некаторых прыладах

Мы можам кіраваць генератарнай пабудаваць для некаторых прылад, якія ўключаюць у сябе пэўныя шчыльнасці і пэўныя ўзроўні API. Гэта дапамагае пры разгортванні прадукту ў краме прыкладанняў у адпаведнасці з патрабаваннямі па некалькіх тыпах прылад


<�Моцны> ДОБРА ССЫЛКА

Vogella Падручнікі

20
дададзена
Проста «кампенсуючыя» тут для ўсіх downvotes, якія прыходзяць у на іншае пытанне. Я спадзяюся, што вы лічыце, каб трымаць гэтае пытанне вакол ;-)
дададзена аўтар GhostCat, крыніца

You can find everything you need to know about Gradle here: Gradle Plugin User Guide

Мэты новай сістэмы зборкі

     <�Р> Мэты новай сістэмы зборкі з'яўляюцца:      
      
  • Зрабіць гэта лёгка для паўторнага выкарыстання кода і рэсурсаў
  •   
  • Зрабіць гэта лёгка стварыць некалькі варыянтаў прыкладання, альбо для некалькіх APK размеркавання або для розных густаў прыкладання
  •   
  • Зрабіць гэта лёгка наладзіць, пашырыць і наладзіць працэс зборкі
  •   
  • Добрая інтэграцыя IDE
  •   
     

Чаму Gradle?

     <�Р> Gradle з'яўляецца перадавой сістэмай зборкі, а таксама перадавыя зборкі   інструментар, які дазваляе ствараць уласную логіку зборкі з дапамогай убудоў.      <�Р> Вось некаторыя з яго асаблівасцяў, якія прымусілі нас выбраць Gradle:      
      
  • Domain Specific Language (DSL), каб апісаць і кіраваць логікай пабудовы
  •   
  • Пабудаваць файлы Groovy на аснове і забяспечыць змешванне дэкларатыўных элементаў праз DSL і з дапамогай кода для маніпулявання DSL элементаў   каб забяспечыць уласную логіку.
  •   
  • Убудаванае кіраванне залежнасцямі праз Maven і/або плюшч.
  •   
  • Вельмі гнуткі. Дазваляе выкарыстоўваць лепшыя практыкі, але не навязвае свой уласны спосаб рабіць рэчы.
  •   
  • Убудовы могуць выставіць свой уласны DSL і іх уласны API для зборкі файлаў для выкарыстання.
  •   
  • Добры Інструментальнае API дазваляе IDE інтэграцыі
  •   
19
дададзена

Gradle з'яўляецца сістэма зборкі . сістэмы зборкі з'яўляюцца праграмныя сродкі, прызначаныя для аўтаматызацыі працэсу кампіляцыі праграмы. Пабудаваць сістэмы пастаўляюцца ў розных формах, і выкарыстоўваюцца для розных задач зборкі праграмнага забеспячэння. У той час як іх асноўная мэта складаецца ў тым, каб эфектыўна ствараць выкананыя файлы.

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

Мала падобная сістэма зборкі для іншых моў (гл поўнага спісу тут ):

  1. Apache Ant & Apache Maven - Java
  2. sbt (Simple Build Tool) - for Scala (Play framework etc)
  3. A-A-P - Python based build tool
  4. Rake (Apache Builder) - Ruby
  5. Leiningen for Clojure
17
дададзена

Рызыкуючы быць дыскурсыўнай я думаю за гэтым стаіць пытанне аб тым, чаму вопыт Android-студыя/Gradle так дрэнна.

Тыповы вопыт Clojure:

  • загрузіць праект з залежнасцямі, пералічаных у project.clj.
  • Leiningen атрымлівае залежнасці дзякуючы Clojars і Maven.
  • кампілюе праект.

Тыповы вопыт Android Студыя/Gradle:

  • «Праект Імпарт майго Зацьменне».
  • OK праект імпартуецца.
  • Gradle робіць гэта Тханг ... чакаць ... чакаць ... чакаць ... Gradle скончыў.
  • Кампіляцыя ... не можа скампіляваць, таму што я не ведаю, што такое Х/не можа знайсці бібліятэку Y.

Я не ўпэўнены, што гэта памылка Gradle ў дакладнасці. Але «імпарт з праекта Eclipse," здаецца даволі пластовае. Для ўсіх меркаваных вытанчанасці Gradle і вартасцяў навалы сістэмы Android студыя проста не здаецца імпартаваць залежнасці зборкі або будаваць-працэс з Eclipse, вельмі добра.

Ён не кажа вам, калі гэта не ўдалося імпартаваць поўны граф залежнасцяў. Android-студыя не дае карысную інфармацыю або парады аб тым, як вырашыць гэтую праблему. Ён не кажа вам, дзе вы можаце ўручную шукаць у тэчках Eclipse. Ён не кажа вам, якія бібліятэкі, здаецца, адсутнічае. Або дапамагчы вам знайсці Maven і г.д. для іх.

У 2016 годзе такіх рэчаў, як Leiningen/Clojars або НПМ вузла або Піп Пайтона, або apkg Debian (і я ўпэўнены, што шмат падобных мэнэджараў пакетаў для іншых моў і сістэм) усе працуюць выдатна ... зніклыя залежнасцяў засталіся ў мінулым.

За выключэннем Android. Android-студыя цяпер адзінае месца, дзе я да гэтага часу, здаецца, адчуваю пекла якая адсутнічае залежнасці.

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

І ў любым выпадку, калі Gradle гэта за супер-магутную сістэму зборкі, чаму я да гэтага часу кіраўнік цэлую масу іншых залежнасцяў у мэнэджару SDK? Чаму не праект, які павінен, скажам, НДК пазначыць гэта ў сваім Gradle файл, так што ён атрымлівае аўтаматычна ўсталёўваецца і ўбудаваны супраць, калі гэта неабходна? Чаму NDK асаблівае? Аналагічна для мэтавых платформаў? Чаму я іх усталёўцы непасрэдна ў IDE, а не проста праверыць мой праект супраць іх і маючы ўсё гэта сартуецца для мяне за кулісамі?

14
дададзена
Я цалкам згодны, што Gradle страшная сістэма зборкі. Гэта кампанент, які робіць Android Studio, значна горш, чым X-Code або Visual Studio. Я разумею, што яны павінны "стварыць» сістэму за кулісамі, але я на самой справе не патрабуецца ведаць/догляд/падпраўляй іх вантроб. Gradle з другога боку, здаецца, перапынак з кожным абнаўленнем Android студыі і балота ўніз сістэмы нават проста дадаўшы клас. Ніякі іншы IDE ня робіць.
дададзена аўтар csmith, крыніца

Gradle is an advanced build system as well as an advanced build toolkit allowing to create custom build logic through plugins!

Перавагі:

  • Dsl - Дамен канкрэтнага мовы, заснаваны на завадны
  • DAG - Накіраваны ацыклічныя граф
  • інкрэментаванага будуе
  • мадэль прадметнай вобласці Extensible
  • Gradle заўсёды ў курсе
  • Перад тым, як задача быць выкананне, Gradle робіць здымак яго задача-х ўваход і выхад.
  • У выпадку, калі здымак змяніўся або не існуе, Gralde будзе паўторна выканаць гэтую задачу.

Manifest запісу

Праз DSL можна наладзіць наступныя маніфест запіс:

<�Моцны> Будаваць варыянт

Па змаўчанні Android убудова аўтаматычна настройвае праект на пабудаваць як адладкі і версію выпуску прыкладання.

<�Моцны> Залежнасці

  1. Мясцовыя залежнасці:
<�Р> Калі ў вас ёсць бінарныя архівы ў вашай лакальнай файлавай сістэме, што модуль   залежыць, напрыклад, JAR-файлы, вы можаце абвясціць гэтую залежнасць у   файл зборкі для гэтага модуля.
  1. Дыстанцыйныя Залежнасці:
<�Р> Першы рэпазітар павінен быць дададзены ў спіс, а затым   залежнасць павінна быць аб'яўлена такім чынам, што Maven або Ivy абвясціць іх   артэфакты.
10
дададзена

Адным з пераваг Gradle, што я знайшоў:

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

9
дададзена

Gradle з'яўляецца мова Groovy JVM, што мурашка на Java. У асноўным, гэта інструмент для зборкі ў Groovy. У адрозненне ад Ant, ён заснаваны на поўным Groovy мове. Можна, напрыклад, напісаць Groovy код сцэнара ў сцэнары Gradle, каб зрабіць што-то, а не спадзявацца на пэўным мове дамена.

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

8
дададзена
гэта не «Groovys пабудаваць інструмент» - гэта мульты інструмент мэты зборкі якога DSL пабудаваны на вяршыні заваднога
дададзена аўтар martyglaubitz, крыніца

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

Вось некалькі рэчаў, якія вы можаце зрабіць з Gradle.

  • <�моцны> Мінімальная канфігурацыя Патрабуецца для новых праектаў, паколькі Gradle мае канфігурацыі па змаўчанні для вашых АНДРОІД праектаў студыі.

  • <�моцны> залежнасці дэкларацыя. Вы можаце абвясціць залежнасці банка файлы або файлы бібліятэкі, размешчаныя ў лакальным або выдаленым серверы.

  • <�моцны> Gradle аўтаматычна генеруе тэставы каталог і тэст APK ад крыніцы вашага праекта.

  • <�моцны> Калі вы дадаеце усю неабходную інфармацыю, напрыклад, keyPassword і keyAlias ​​, на ваш Gradle пабудаваць файл, вы можаце выкарыстоўваць Gradle для генеравання падпісаныя APK-.

  • <�Літый> <�р> <�моцны> Gradle можа генераваць некалькі файлаў APK з рознымі пакета і ствараць канфігурацыі з аднаго модуля. </Моцны> </р>
7
дададзена

I refer two tutorial to write the Answer one,two

Gradel is a general purpose, declarative build tool. It is general purpose because it can be used to build pretty much anything you care to implement in the build script. It is declarative since you don't want to see lots of code in the build file, which is not readable and less maintainable. So, while Gradle provides the idea of conventions and a simple and declarative build, it also makes the tool adaptable and developers the ability to extend. It also provides an easy way to customize the default behavior and different hooks to add any third-party features.

<�Р> Gradle спалучае ў сабе добрыя часткі абодвух інструментаў і дае дадатковыя магчымасці і выкарыстоўвае Groovy як Domain Specific Language (DSL). Ён мае сілу і гнуткасць Ant інструмента з асаблівасцямі Maven, такіх як зборка жыццёвага цыкла і прастаты выкарыстання.

<�Моцны> Чаму Gradle? Чаму цяпер?

Адказ інструмента для зборкі з'яўляецца даданне функцыянальнасці сцэнарыяў з дапамогай нестандартных механізмаў пашырэння. Вы ў канчатковым выніку змешвання кода сцэнарыяў з xml або выкліку знешніх скрыптоў з вашай зборкі логікі. Лёгка ўявіць сабе, што вам трэба дадаць больш і больш карыстацкага кода на працягу доўгага часу. У выніку, вы непазбежна ўвесці выпадковую складанасць і рамонтапрыдатнасць выходзіць акно.

<�Р> Дапушчальны, вы хочаце, каб скапіяваць файл у пэўным месцы, калі вы ствараеце версію выпуску вашага праекта. Каб вызначыць версію, вы правяраеце радок у метададзеных, якія апісваюць праект. Калі ён адпавядае канкрэтнай схеме нумарацыі (напрыклад, 1,0-RELEASE), скапіяваць файл з кропкі А ў кропку В. З вонкавага пункту гледжання, гэта можа гучаць як нетрывіяльная задача. Калі вы павінны спадзявацца на XML, мова зборкі многіх традыцыйных інструментаў, які выказвае гэтую простую логіку становіцца даволі складана.

<�Моцны> Эвалюцыя Java Build Tools

<�Р> логік Java зборкі павінен быць апісаны ў XML. xml выдатна падыходзіць для апісання іерархічных дадзеных, але не дацягвае на выраз праграмнага патоку і ўмоўную логікі. Як скрыпт зборкі расце ў складанасці, захоўваючы код будынка ператвараецца ў кашмар.

In Ant, you make the JAR target depend on the compile target. Ant doesn't give any guidance on how to structure your project. Though it allows for maximum flexibility, Ant makes each build script unique and hard to understand. External libraries required by your project are usually checked into version control because there is no automated mechanism to pull them from a central location.

Maven 1, released in July 2004, tried to ease that process. It provided a standardized project and directory structure, as well as dependency management. Unfortunately, custom logic is hard to implement

Gradle fits right into that generation of build tools and satisfies many requirements of modern build tools (Figure 1). It provides an expressive DSL, a convention over configuration approach, and powerful dependency management. It makes the right move to abandon xml and introduce the dynamic language Groovy to define your build logic. Sounds compelling, doesn't it?

<�Моцны> Gradle спалучае ў сабе лепшыя рысы іншых інструментаў зборкі.

enter image description here

<�Моцны> Прымус Асаблівасць Gradle ў Set

enter image description here

<�Моцны> Чаму пабудаваць свой Java праектаў з Gradle Замест Ant або Maven?

<�моцны> Інструмент зборкі па змаўчанні для Android (і новая зорка зборкі інструментаў на JVM) прызначана для палягчэння сцэнарыяў комплексу, шматмоўныя будуе. Калі вы зменіце яго, хоць, калі вы выкарыстоўваеце Ant або Maven?

The key to unlocking Gradle's power features within your build script lies in discovering and applying its domain model, as shown in below image. enter image description here

Gradle не можа ведаць усе патрабаванні, спецыфічныя для вашага прадпрыемства зборкі. Выяўляючы гакі на фазы жыццёвага цыкла, Gradle дазваляе для маніторынгу і налады паводзін выканання білд сцэнара.

<�моцны> Gradle ўсталёўвае тэрміналогію для сваёй мадэлі, агаляючы DSL рэалізавана ў Groovy. Калі мы маем справу са складанай праблемнай вобласцю, у гэтым выпадку, задача пабудовы праграмнага забеспячэння, магчымасць выкарыстоўваць агульную мову, каб выказаць сваю логіку можа быць магутным інструментам.

     <�Р> Іншым прыкладам з'яўляецца тое, як вы можаце выказаць залежнасці для знешніх бібліятэк, вельмі распаўсюджаная праблема вырашаецца шляхам зборкі інструментаў. З-з-скрынкі Gradle забяспечвае вас з двума блокамі канфігурацыі для вашага сцэнара зборкі, якія дазваляюць вызначыць залежнасці і рэпазітароў, якія вы хочаце, каб атрымаць іх з. Калі стандартныя DSL элементы не адпавядаюць вашым патрэбам, вы можаце нават уявіць свой уласны слоўнікавы запас з дапамогай механізму пашырэння Gradle ст.

<�Моцны> Інтэграцыя з іншымі інструментамі Будаўніцтвы

Gradle добра гуляе са сваімі папярэднікамі Ant, Maven і Ivy, як паказана на малюнку ніжэй.

enter image description here

<�Моцны> Аўтаматызацыя вашага праекта ад зборкі для разгортвання

enter image description here

<�Моцны> У малюнку :. Этапы трубаправода разгортвання

  • Кампіляцыя кода

  • Запуск блока і інтэграцыі тэстаў

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

  • Стварэнне размеркавання

  • <�Літый> <�р> Provisioning мэтавай асяроддзя </р> <�Літый> <�р> Разгортванне Поставочной </р>
  • Выкананне дыму і аўтаматызаваныя функцыянальныя тэсты

I refer two tutorial to write the Answer one,two

7
дададзена
У дадатку да гэтага, Вы можаце стварыць свой Android дадатак з каманднага радка на кампутары ці на кампутарах, дзе не ўстаноўлены Android Studio (напрыклад, бесперапынныя сервера інтэграцыі).
дададзена аўтар jettimadhuChowdary, крыніца

Gradle is an advanced build toolkit for android that manages dependencies and allows you to define custom build logic. features are like 1. Customize, configure, and extend the build process. 2. Create multiple APKs for your app with different features using the same project. 3. Reuse code and resources. refer this link http://developer.android.com/sdk/installing/studio-build.html

7
дададзена

У Android Studio, Gradle з'яўляецца інструментам карыстацкай зборкі выкарыстоўваецца для пабудовы АНДРОІД пакетаў (APK-файлаў) ад кіравання залежнасцямі і забяспечваючы карыстацкую логіку пабудовы.

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

  • Байт-код
  • Рэсурсы (малюнкі, карыстацкі інтэрфейс, xml і г.д.) </літый>
  • файл маніфесту

Файл APK атрымлівае падпісаны і штурхнуў на прыладу з дапамогай ADB (Android Debug Bridge), дзе ён запускаецца на выкананне.

7
дададзена

Сістэма зборкі Gradle прызначана для падтрымкі складаных сцэнараў у стварэнні Android-прыкладанняў:

Multi-distribution: the same application must be customized for several clients or companies

Multi-apk: supporting the creation of multiple apk for different device types while reusing parts of the code

6
дададзена

Gradle гэта інструмент для зборкі на заказ і выкарыстоўваюцца для стварэння APK або вядомы як камплект пакета прыкладных праграм.

5
дададзена

by @Brian Gardner:

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

<�Моцны> Асаблівасць Gradle:

  1. Упраўленне залежнасцяў
  2. Выкарыстанне Ant з Gradle
  3. Gradle Убудовы
  4. Java Plugin
  5. Android Plugin
  6. Multi-Project Будуе
3
дададзена

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

Аднак, калі вы пачатковец у Android развіваецца, Gradle ў 99% выпадкаў з'яўляецца тое, што <�моцны> прыпынку Ваш праект ад будаўніцтва. Гэта недаступная розуму, складаная сістэма, якая эфектыўна заблытвае працэс зборкі Android і, па сутнасці робіць яго недаступным для нявопытных распрацоўшчыкаў, гэта значыць для таго, каб пабудаваць просты пачатковы ўзровень Android App нічога не падазравалы пачаткоўцу, магчыма, спатрэбіцца вывучыць і зразумець многія рэчы, якія яны не выгандляваць такія як:

  • Android APK структура і экасістэмы
  • Android студыі
  • Java і шлях да класаў залежнасцяў
  • Groovy
  • Gradle скрыпты зборкі
  • Многія іншыя складаныя і цікавыя тэхналогіі

Усе гэтыя рэчы цікавыя і карысныя для Android распрацоўшчыкаў ведаць, але яны далёкія ад простага і ўяўляюць сур'ёзную перашкоду для выхаду на рынак. Я падазраю, што натхніла OP, каб задаць гэтае пытанне з'яўляецца пачуццё расчаравання, якое непазбежна трапляе ў праяўляльнік неафіта прабыўшы занадта доўга спрабуе атрымаць простае прыкладанне для стварэння і быць пастаянна сарваныя Gradle. Праблема пагаршаецца вычварэнску пераважнай колькасцю высока тэхнічнай дакументацыі, якая даступная для ўсіх гэтых тэхналогій. Акрамя таго, для вялікай колькасці патрэбаў у галіне развіцця Gradle з'яўляецца празмернасцю.

У якасці альтэрнатывы можна напісаць скрыпт, які будуе свой праект па аўтаматызацыі інструментаў, даступных у Android SDK. Вартасці такога падыходу шмат, для пачатку яго, верагодна, лепшы спосаб вывучыць і зразумець працэс зборкі і экасістэмы Android, і гэта дазваляе цалкам кантраляваць тое, як будуецца ваша прыкладанне. Аднак такі падыход з'яўляецца больш прыдатным для глыбока неаплатным тэхналогій галовак, чым да неспрактыкаваным недоносков паспрабаваць АНДРОІД.

Што кідаецца ў вочы яго адсутнасць (калі ласка, паведаміце мне, калі ёсць такая рэч) з'яўляецца пачатковага ўзроўню, лёгкі IDE са скарочаным наборам функцый, які адначасова спрашчае працэс зборкі, а не засланяючы яго (так не NetBeans або Eclipse), што, магчыма, да гэтага часу выкарыстоўваць Gradle (што было няправільна з Ant). Гэта павінна зрабіць яго лёгка ствараць APK-якія адпавядаюць некалькі агульных канфігурацый і выкарыстоўваць структуру праекта, якая можа развівацца да поўнага праекта Android студыі, калі вы вырашыце прыняць яго такім чынам.

2
дададзена

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

Асаблівасці Gradle:

  1. Domain Specific Language (DSL), каб апісаць і кіраваць логікай пабудовы
  2. Пабудаваць файлы Groovy на аснове і дазваляюць змешваць дэкларатыўныя элементы праз DSL і з дапамогай кода для кіравання DSL элементы, каб забяспечыць уласную логіку.
  3. Убудаванае кіраванне залежнасцямі праз Maven і/або плюшч. Вельмі гнуткі.
  4. Дазваляе выкарыстоўваць лепшыя практыкі, але не навязвае свой уласны спосаб рабіць рэчы.
  5. Убудовы могуць выставіць свой уласны DSL і іх уласны API для файлаў зборкі для выкарыстання.
  6. Добры Інструментальнае API дазваляе IDE інтэграцыі
0
дададзена

Gradle = Groovy + Cradle Hans Dockter forum comment

Блытаніна крыху непатрэбная, калі ён мог бы проста называлі «Складанне» ці нешта ў Android Studio.

Мы хацелі б зрабіць рэчы цяжка для сябе ў супольнасці развіцця.

0
дададзена

Gradle з'яўляецца аўтаматычнай зборкай інструментара, які дазваляе шлях, у якім пабудаваныя быць сканфігураваны і кіруюцца з дапамогай набору файлаў канфігурацыі зборкі праектаў. Гэта ўключае ў сябе вызначэннем таго, як праект будзе пабудаваны, тое, што павінна быць выканана залежнасці для праекта, каб пабудаваць і паспяхова, што канчатковы вынік (або вынікі) працэс зборкі павінен быць. Сіла Gradle заключаецца ў гнуткасці, якую яна забяспечвае распрацоўніку. Сістэма Gradle з'яўляецца аўтаномным, на аснове каманднага радка сераду, якая можа быць інтэграваная ў іншых асяроддзях за кошт выкарыстання убудоў. У выпадку Android Studio, Gradle інтэграцыя забяспечваецца праз адпаведную назву Android Studio Plug-In.

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

Правілы канфігурацыі для стварэння праекта абвешчаныя ў Gradle стварэння файлаў і сцэнараў на аснове мовы праграмавання Groovy.

0
дададзена

Gradle з'яўляецца аўтаматычнай зборкай інструментара, які дазваляе шлях, у якім пабудаваныя быць сканфігураваны і кіруюцца з дапамогай набору файлаў канфігурацыі зборкі праектаў. Гэта ўключае ў сябе вызначэннем таго, як праект будзе пабудаваны, тое, што павінна быць выканана залежнасці для праекта, каб пабудаваць і паспяхова, што канчатковы вынік (або вынікі) працэс зборкі павінен быць. Сіла Gradle заключаецца ў гнуткасці, якую яна забяспечвае распрацоўніку. Сістэма Gradle з'яўляецца аўтаномным, на аснове каманднага радка сераду, якая можа быць інтэграваная ў іншых асяроддзях за кошт выкарыстання убудоў. У выпадку Android Studio, Gradle інтэграцыя забяспечваецца праз адпаведную назву Android Studio Plug-In.

0
дададзена

Прасцей кажучы, Gradle гэта інструмент, які прадастаўляецца Android Studio для рэалізацыі двух важных працэсаў:

  1. Пабудаваць нашы праекты
  2. Пакет AndroidManifest.xml, рэс тэчку, і двайковы код ў спецыяльна адфарматаваны паштовы файл пад назвай APK
0
дададзена

<�Код> Android сістэма пабудовы кампілюе рэсурсы прыкладання і зыходны код, і пакуе іх у APK - , што вы можаце праверыць, разгортваць, падпісваць і распаўсюджваць. <�Код> Android Studio выкарыстоўвае Gradle , пашыраны набор інструментаў зборкі, аўтаматызаваць і кіраваць працэсам зборкі, у той час як дазваляе вызначыць гнуткія прыстасаваныя пабудовы канфігурацый. Кожная канфігурацыя зборкі можа вызначыць свой уласны набор кода і рэсурсаў, у той час як паўторнае выкарыстанне дэталяў, агульныя для ўсіх версій прыкладання. <�Код> Android убудова для Gradle працуе з пабудовай набору інструментальных сродкаў для забеспячэння працэсаў і наладжвальныя параметры, якія з'яўляюцца спецыфічнымі для стварэння і тэставанні Android прыкладання.

0
дададзена