Мастеринг Градле за Андроид: Задаци Градле и Котлин

Аутор: Lewis Jackson
Датум Стварања: 11 Може 2021
Ажурирати Датум: 1 Јули 2024
Anonim
Retrofit Tutorial #3 - Parsing JSON using Retrofit - [Movie App]
Видео: Retrofit Tutorial #3 - Parsing JSON using Retrofit - [Movie App]

Садржај


Уместо Јава, КСМЛ или Котлин, ове датотеке за изградњу Градле користе Гроови-темељен језик специфичан за домену (ДСЛ). Ако нисте упознати са Гроови-ом, онда ћемо редовно прегледавати сваку од тих датотека за изградњу Градле-а, тако да ћете до краја овог чланка бити удобан за читање и писање једноставног Гроови кода.

Градле има за циљ да вам олакша живот, пружајући сет подразумеваних подешавања која често можете да користите уз минималну ручну конфигурацију - када сте спремни да направите пројекат, једноставно притисните тастер „Покрени“ Андроид Студио и Градле ће покренути поступак прављења за тебе.

Упркос Градлеовом приступу „конвенције о конфигурацији“, ако његове подразумеване поставке не задовољавају ваше потребе, тада можете да прилагодите, конфигуришете и проширите поступак израде, па чак и прилагодите подешавања Градле-а за обављање врло специфичних задатака.


Будући да се скрипте Градле налазе у њиховим сопственим датотекама, можете у било ком тренутку да измените поступак израде апликације, без потребе да додирнете изворни код апликације. У овом туториалу ћемо модификовати процес састављања користећи ароме, варијанте састављања и прилагођени задатак Градле - а све без икад додирните наш код за пријаву.

Истраживање градбених датотека Градле

Сваки пут када креирате пројекат, Андроид Студио ће генерисати исту колекцију датотека за изградњу. Чак и ако увезете постојећи пројекат у Андроид Студио, биће још увек направите ове исте датотеке Градле и додајте их у свој пројекат.

Да бисте започели боље разумевање Градле и Гроови синтаксе, погледајмо линију по линију сваке Андроид-ове датотеке за изградњу Градле.

1. сеттингс.градле

Датотека сеттингс.градле је место где ћете дефинисати све модуле своје апликације по имену, користећи кључну реч „укључи“. На пример, ако сте имали пројекат који се састоји од „апликације“ и „сецондМодула“, датотека за подешавање.градле изгледала би овако:


укључују: апп,: сецондмодуле роотПројецт.наме = МиПројецт

У зависности од величине вашег пројекта, ова датотека може бити знатно дужа.

Током процеса састављања, Градле ће прегледати садржај датотеке за подешавање вашег пројекта.градле и идентификовати све модуле које треба да укључи у процес састављања.

2. буилд.градле (ниво пројекта)

Датотека буилд.градле на нивоу пројекта налази се у коријенском директоријуму вашег пројекта и садржи подешавања на која ће се применити све ваше модуле (које Градле назива и „пројектима“).

Ову датотеку требало би да користите за дефинисање додатака, складишта, зависности и опција конфигурације које се односе на сваки модул током вашег Андроид пројекта. Имајте на уму да ако дефинишете било које задатке Градле у датотеци буилд.градле на нивоу пројекта, онда је и даље могуће надјачати или проширити ове задатке за појединачне модуле уређивањем њихових одговарајућих ниво модула буилд.градле датотека.

Типична датотека буилд.градле на нивоу пројекта изгледаће отприлике овако:

буилдсцрипт {репозиторији {гоогле () јцентер ()} зависности {цласспатх цом.андроид.тоолс.буилд:градле:3.5.0-алпха06 // НАПОМЕНА: Овде не постављајте зависности од апликације; они припадају // у појединачном модулу буилд.градле датотеке}} аллпројецтс {репозиторији {гоогле () јцентер ()}} задатак чишћења (унесите: Делете) {делете роотПројецт.буилдДир}

Ова датотека буилд.градле на нивоу пројекта је подељена у следеће блокове:

  • Буилдсцрипт. Ово садржи подешавања која су потребна за извођење градње.
  • Спремишта. Градле је одговоран за лоцирање зависности вашег пројекта и стављање на располагање у вашем састављању. Међутим, не долазе све зависности из истог спремишта, тако да ћете морати да дефинишете сва спремишта у којима Градле треба да претражује, како бисте преузели зависности вашег пројекта.
  • Зависности. Овај одељак садржи ваше овисности о додацима, које се преузимају и смештају у вашу локалну кеш меморију. Требао би не дефинишите све зависности модула унутар овог блока.
  • Аллпројецтс. Овдје ћете дефинирати спремишта којима би требала бити доступна све модула вашег пројекта

3. буилд.градле (ниво модула)

Ово је датотека буилд.градле на нивоу модула, која је присутна у сваком модулу у току вашег пројекта. Ако се ваш Андроид пројекат састоји од више модула, онда ће се такође састојати од више датотека на нивоу модула буилд.градле.

Свака датотека буилд.градле на нивоу модула садржи назив пакета вашег пројекта, име верзије и код верзије, плус минимални и циљни СДК за овај одређени модул.

Датотека буилд.градле на нивоу модула такође може имати свој јединствени скуп упутстава и зависности о састављању. На пример, ако креирате апликацију са компонентом Веар ОС, ваш пројекат Андроид Студио састојат ће се од засебног паметног телефона / таблета и модула Веар - будући да циљају потпуно различите уређаје, а ови модули се драстично разликују зависности!

Основна датотека буилд.градле на нивоу модула обично изгледа овако:

примењују плугин: цом.андроид.апплицатион Андроид {цомпилеСдкВерсион 28 дефаултЦонфиг {апплицатионИд "цом.јессицатхорнсби.спеецхтотект" минСдк верзија 23 таргетСдкВерсион 28 код верзије 1 Назив верзије "1.0" тестИнструментатионРуннер "андроидк.тест.руннер.АндроидЈУнитРуннер"} буилдТипес {Објављујемо {минифиЕнаблед лажне прогуардФилес гетДефаултПрогуардФиле (прогуард-андроид-оптимизе.ткт), прогуард-рулес.про}}} зависности {имплементација филеТрее (дир: либс, укључују:) имплементација андроидк.аппцомпат: аппцомпат: 1.0.2 имплементација андроидк.цонстраинтлаиоут: цонстраинтлаиоут: 1.1. 3 тестИмплементација: јунит: 4.12 андроидТестИмплементатион андроидк.тест.ект: јунит: 1.1.0 андроидТестИмплементатион андроидк.тест.еспрессо: еспрессо-цоре: 3.1.1}

Погледајмо ближе сваки од ових одељка:

  • примените додатак. Ово је листа додатака потребних за изградњу овог модула. Додатак цом.андроид.апплицатион потребан је за постављање специфичног Андроид процеса израде, тако да се то аутоматски додаје.
  • андроид. Овде би требало да поставите све опције модула специфичне за платформу.
  • цомпилеСдкВерсион. Ово је ниво АПИ-ја са којим је састављен овај модул. Не можете да користите функције АПИ-ја веће од ове вредности.
  • буилдТоолсВерсион. Ово указује на верзију преводиоца. У Градле 3.0.0 и новијим, буилдТоолсВерсион није обавезан; ако не одредите вредност буилдТоолсВерсион, Андроид Студио ће подразумевано задња верзија верзије алата за изградњу.
  • дефаултЦонфиг. Ово садржи опције које ће се применити на све верзије апликације ваше апликације, као што су верзије за уклањање грешака и издања.
  • апплицатионИд. Ово је јединствени идентификатор ваше апликације.
  • минСдкВерсион. Овај параметар дефинише најнижи ниво АПИ који овај модул подржава.
  • таргетСдкВерсион. Ово је максимални ниво АПИ-ја на који је тестирана ваша апликација. У идеалном случају требали бисте тестирати апликацију помоћу најновијег АПИ-ја, што значи да ће вредност таргетСдкВерсион увек бити једнака вредности цомпилеСдкВерсион.
  • версионЦоде. Ово је бројчана вредност за верзију ваше апликације.
  • версионНаме. Ово је корисни низ који представља верзију ваше апликације.
  • буилдТипес. Андроид подразумевано подржава две врсте састављања: уклањање погрешака и издање. Можете да користите блокове „дебуг“ и „релеасе“ да одредите подешавања за вашу апликацију.
  • зависности. Овде ћете дефинисати све библиотеке од којих овај модул зависи.

Изјава зависности вашег пројекта: Локалне библиотеке

Можете да омогућите додатне функционалности својим Андроид пројектима додавањем једне или више зависности пројеката. Ове зависности могу бити локалне или се могу чувати у удаљеном складишту.

Да бисте изјавили о зависности од локалне ЈАР датотеке, мораћете да додате тај ЈАР у директориј „либс“ вашег пројекта.

Затим можете модификовати датотеку буилд.градле на нивоу модула да бисте прогласили зависност од ове датотеке. На пример, овде проглашавамо зависност од „милибрари“ ЈАР-а.

имплементационе датотеке (либс / милибрари.јар)

Алтернативно, ако је ваша мапа „либс“ садржавала неколико ЈАР-ова, можда би било лакше једноставно навести да ваш пројекат зависи од свих датотека које се налазе у мапи „либс“, на пример:

имплементација филеТрее (дир: либс, инцлуде:)

Додавање зависности састављања: Удаљена спремишта

Ако се библиотека налази у удаљеном складишту, тада ћете морати да извршите следеће кораке:

  • Дефинишите спремиште у којем се налази та зависност.
  • Прогласите зависност појединца.

Спајање на удаљено спремиште

Први корак је рећи Градлеу које спремиште (или складиште) треба да провери, како би се преузеле све зависности вашег пројекта. На пример:

спремишта {гоогле () јцентер ()}}

Овде, линија "јцентер ()" осигурава да Градле ће проверити спремиште ЈЦентер, које је бесплатно јавно јавно складиште које се налази у бинтраи-у.

Алтернативно, ако ви или ваша организација одржавате лично складиште, тада бисте требали да додате УРЛ овог репозиторија у декларацију зависности. Ако је складиште заштићено лозинком, тада ћете такође морати да наведете своје податке за пријаву, на пример:

спремишта {мавенЦентрал () мавен {// Конфигуришите циљни УРЛ // урл "хттп://репо.мицомпани.цом/миприватерепо"} мавен {акредитиви {корисничко име миУсернаме лозинка миПассворд} урл "хттп://репо.мицомпани.цом / миприватерепо "}

Ако је зависност присутна у више спремишта, тада ће Градле одабрати „најбољу“ верзију ове зависности, засновану на факторима као што су старост сваког спремишта и статичка верзија.

Изјава удаљене зависности

Следећи корак је проглашавање зависности у датотеци буилд.градле на нивоу модула. Ове податке додајете у блок „зависности“ користећи било шта од следећег:

  • Имплементација. Ово је нормална зависност која вам је потребна кад год градите пројекат. Зависност о „имплементацији“ биће присутна широм све ваше градње.
  • Тестимплементација. Ово је зависност која је потребна да бисте саставили тест извора ваше апликације и покренули ЈВМ тестове. Када означите зависност као „Тестимплементација“, Градле ће знати да не треба извршавати задатке за ову зависност током нормалне градње, што може помоћи да се смањи време израде.
  • Андроидтестимплементација. Ово је зависност која је потребна приликом покретања тестова на уређају, на пример, Еспрессо оквир је уобичајена „Андроидтестимплементација“.

Ми дефинишемо удаљену зависност, користећи једну од горе наведених кључних речи, а затим атрибуте групе, имена и верзије зависности, на пример:

зависности {имплементација филеТрее (дир: либс, укључују:) имплементација андроидк.аппцомпат: аппцомпат: 1.0.2 имплементација андроидк.цонстраинтлаиоут: цонстраинтлаиоут: 1.1.3 тестИмплицатион јунит: јунит: 4.12 андроидТестИмплементатион андроидк.тест.ект: јунит: 1.1.0 андроидТестИмплементатион андроидк.тест.еспрессо: еспрессо-цоре: 3.1.1}

Генерисање више АПК-ова: Како створити варијанте прављења

Понекад ћете можда требати да креирате више верзија своје апликације. На пример, можда желите да објавите бесплатну верзију и плаћену верзију, која укључује неке додатне функције.

Ово је задатак за изградњу који вам Градле може помоћи, па погледајмо како бисте изменили процес прављења да бисте створили више АПК-ова из једног пројекта:

  • Отворите датотеку стрингс.кмл и избришите изворни низ имена апликације.
  • Затим одредите имена сваког укуса производа који желите да креирате; у овом случају користим:

Моја бесплатна апликација Моја плаћена апликација

  • Отворите АндроидМанифест.кмл датотеку и замените андроид: лабел = ”@ стринг / апп_наме” са:

андроид: лабел = "$ {аппНаме}"

  • Отворите датотеку буилд.градле на нивоу модула и додајте следеће у блок „андроид“:

аромДименсионс "моде" продуцтФлаворс {фрее {димензија "моде" апплицатионИдСуффик ".фрее" манифестПлацехолдерс =} плаћени {димензија "моде" апплицатионИдСуффик ".паид" манифестПлацехолдерс =}}}

Рашчланимо шта се овде дешава:

  • аромДименсионс. Андроид додатак ствара варијанте састављања комбинујући окусе из различитих димензија. Овде правимо димензију укуса која се састоји од „бесплатне“ и „плаћене“ верзије наше апликације. На основу горњег кода, Градле ће генерисати четири верзије састављања: паидДебуг, паидРелеасе, фрееДебуг и фрееРелеасе.
  • продуцтФлаворс. Овим се одређује листа укуса и њихова подешавања која су у горе наведеном коду „плаћена“ и „бесплатна“.
  • Бесплатно / плаћено. Ово су имена наше две ароме производа.
  • Димензија. Требамо одредити вриједност димензије; у овом случају користим „мод“.
  • апплицатионИдСуффик. Будући да желимо да створимо више верзија наше апликације, морамо сваком АПК-у дати јединствени идентификатор апликације.
  • Власници манифеста. Сваки пројекат има једну датотеку Манифеста која садржи важне информације о конфигурацији вашег пројекта. Када креирате више варијанти састављања, обично желите да модификујете неке од ових Манифест својстава током времена израде. Можете користити датотеке градње Градле да одредите јединствене уносе Манифест за сваку варијанту састављања, који ће се затим уметнути у ваш Манифест током времена израде. У горе наведеном коду мењамо вредност „аппНаме“ у зависности да ли Градле гради бесплатну или плаћену верзију наше апликације.

Креирање прилагођеног задатка Градле

Понекад ћете можда требати да прилагодите поступак састављања, користећи Градле задацима.

Задатак је именована збирка радњи које ће Градле извршавати док изводи изградњу, на пример генерисање Јавадоца. Градле подразумевано подржава мноштво задатака, али такође можете да креирате прилагођене задатке, који могу бити корисни ако имате на уму врло специфичан скуп упутстава за састављање.

У овом одељку направит ћемо прилагођени задатак Градле који ће поновити кроз све варијанте састављања нашег пројекта (паидДебуг, паидРелеасе, фрееДебуг и фрееРелеасе), креирати жиг датума и времена, а затим додати ове податке сваком генерираном АПК-у.

Отворите датотеку буилд.градле на нивоу модула и додајте следеће:

задатак аддДатеАндТиме () {// Итерате кроз све варијанте излазне градње // андроид.апплицатионВариантс.алл {вариант -> // Итерате кроз све АПК датотеке // вариант.оутпутс.алл {оутпут -> // Креирајте инстанцу тренутни датум и време, у наведеном формату // деф датеАндТиме = нови датум (). формат („гггг-ММ-дд: ХХ-мм“) // Додајте ове информације име датотеке АПК // деф филеНаме = варијанта. наме + "_" + датеАндТиме + ".апк" оутпут.оутпутФилеНаме = филеНаме}}}

Затим морамо рећи Градлеу када требало би да изврши овај задатак. Током градње, Градле идентификује све што је потребно за преузимање и све задатке које мора да извршава, и распоређује их у усмерени ациклички графикон (ДАГ). Градле ће тада извршити све ове задатке, по редоследу дефинисаном у ДАГ-у.

За своју апликацију користит ћу методу „вхенРеади“, која осигурава да ће се наш задатак позвати након што се попуни ДАГ, а Градле је спреман започети извршавање својих задатака.

Додајте следеће у датотеку буилд.градле на нивоу модула:

// Извршите овај задатак // градле.таскГрапх.вхенРеади {аддДатеАндТиме}

Поставимо наш прилагођени задатак и наш модел варијанте градње на тесту, изградњом овог пројекта коришћењем наредбе Градле.

Изградите пројекат помоћу овојнице Градле

Издајете команде Градле користећи Градле омотач („градлев“). Ова скрипта је преферирани начин за започињање градње Градлеа, јер извршавање грађе чини независним од ваше верзије Градле. Ово одвајање може бити корисно ако сарађујете са другима за које можда није нужно инсталирана иста верзија Градле-а.

Када издајете команде за облагање градле Градле, користићете „градлев“ за Уник оперативне системе, укључујући мацОС и „градлев.бат“ за Виндовс. Имам Мац, па ћу користити „градлев“ команде.

Можете да издајете команде Градле из Андроид студија:

  • На траци са алаткама Андроид Студио изаберите „Виев> Тоолс Виндовс> Терминал.“ Отвара се Терминал панел на дну ИДЕ прозора.
  • У Терминал унесите следећу наредбу:

./градлев буилд

Андроид Студио би требало да изгледа овако:

  • Притисните тастер “Ентер” на тастатури. Градле ће сада изградити ваш пројекат.

Градле чува све генерисане АПК датотеке у директоријуму апликација / буилд / оутпут / апк вашег пројекта, тако да идите до овог директорија. Мапа „АПК“ треба да садржи неколико мапа и подмапа; провјерите је ли Градле генерирао АПК за сваку од ваших варијанти израде и да су тачне информације о датуму и времену додате свакој датотеци.

Који су други задаци Градле доступни?

Поред било каквих прилагођених задатака које можете да креирате, Градле подржава списак унапред дефинисаних задатака изван оквира. Ако желите знати шта су тачно доступни, онда:

  • Отворите прозор терминала Андроид Студио, ако већ није отворен (одабиром „Виев> Тоолс Виндовс> Терминал“ на траци са алаткама Андроид Студио).
  • Унесите следеће у терминал:

./градлев -к задаци

  • Притисните тастер “Ентер” на тастатури.

Овај задатак "задатака" ће се сада покренути и након неколико тренутака Терминал ће приказати листу свих задатака који су доступни за овај пројекат, заједно са кратким описом сваког задатка.

Излазак из Градле-а: Додавање додатака

Градле се испоручују са већим бројем додатака који су унапред инсталирани, али Градле можете додатно проширити додавањем нових додатака. Ови додаци омогућавају нове задатке доступним вашим Андроид пројектима, на пример, Јава додатак укључује задатке који вам омогућавају да саставите Јава изворни код, покренете јединице тестова и створите ЈАР датотеку, попут „цомпилеЈава“, „цомпилеТект“, „јар“, „Јавадоц“ и „чисти“.

Да бисте применили додатак, додајте декларацију „примени додатак“ у датотеку буилд.градле на нивоу модула, а затим име додатка. На пример, овде примењујемо Јава додатак:

примијени додатак: јава

Ако желите знати који додаци су доступни, погледајте Сеарцх Градле Плугин који нуди свеобухватан регистар додатака Градле.

ДСЛ Градле Котлин

Подразумевано ћете писати своје скрипте градле Градле користећи Гроови ДСЛ, али ако сте један од многих програмера који су усвојили Котлин за Андроид развој, можда бисте радије писали своје скрипте за изградњу уместо Котлина.

За разлику од Гроови-а, Котлин је статички типкан програмски језик, тако да ако пребаците тада ће ваше датотеке за прављење бити компатибилне са функцијама ауто-довршетка и навигацијом изворног кода Андроид Студио. Осим тога, прелазак из Гроови-а у Котлин значи да ћете користити исти програмски језик у свом пројекту, што може учинити развој једноставнијим - посебно ако нисте превише упознати са Гроови-ом!

Ако желите да почнете да пишете своју логику градње у Котлину, мораћете да подесите ДСЛ Градле Котлин и следите упутства из водича за миграцију.

Окончање

У овом чланку истражили смо Андроид Студио алат за аутоматизацију и управљање зависностима. Испитали смо како Градле аутоматизује поступак састављања ван оквира и како можете да модификујете процес прављења тако што ћете уређивати датотеке за изградњу Градле пројекта, укључујући креирање прилагођених задатака Градле и генерисање више варијанти састављања из једног пројекта.

Да ли сте проширили Градле за аутоматизацију осталих делова процеса прављења Андроид-а? Јавите нам у коментарима испод!

Хуавеи вас жели 16. октобра одвести даље од Галакија, захваљујући новом извештају од Прицераја и Онлеакс сада знамо шта можемо очекивати од Мате 10....

Истраживач сигурности иОС-а објавио је раније на Твиттеру да су открили нови бјекство из затвора за иПхоне (виа Тхе Верге). Овај нови подвиг - заснован на боотром рањивости - зове се „Цхецкм8“ и могао...

Чланци За Вас