Apgūt Gradle Android ierīcēm: Gradle uzdevumi un Kotlin

Autors: Lewis Jackson
Radīšanas Datums: 11 Maijs 2021
Atjaunināšanas Datums: 1 Jūlijs 2024
Anonim
Apgūt Gradle Android ierīcēm: Gradle uzdevumi un Kotlin - Progr
Apgūt Gradle Android ierīcēm: Gradle uzdevumi un Kotlin - Progr

Saturs


Java, XML vai Kotlin vietā šajos Gradle būvēšanas failos tiek izmantota uz Groovy balstīta domēna specifiskā valoda (DSL). Ja jūs neesat pazīstams ar Groovy, tad mēs apskatīsim rindiņas pa rindām katru no šiem Gradle būvēšanas failiem, tāpēc šī raksta beigās jums būs ērti lasīt un rakstīt vienkāršu Groovy kodu.

Gradle mērķis ir atvieglot jūsu dzīvi, nodrošinot noklusējuma iestatījumu kopu, kuru jūs bieži varat izmantot ar minimālu manuālu konfigurāciju - kad esat gatavs veidot savu projektu, vienkārši nospiediet Android Studio pogu “Palaist”, un Gradle sāks būvēšanas procesu. tev.

Neskatoties uz Gradle pieeju “konfigurācijas konvencijai”, ja tās noklusējuma iestatījumi neatbilst jūsu vajadzībām, varat pielāgot, konfigurēt un paplašināt veidošanas procesu un pat pielāgot Gradle iestatījumus, lai veiktu ļoti specifiskus uzdevumus.

Tā kā Gradle skripti ir ietverti viņu pašu failos, jebkurā laikā varat modificēt savas lietojumprogrammas veidošanas procesu, nepieskaroties lietojumprogrammas avota kodam. Šajā apmācībā modificēsim veidošanas procesu, izmantojot garšas, veidošanas variantus un pielāgotu Gradle uzdevumu - visu bez kādreiz pieskaroties mūsu pieteikuma kodam.


Gradle būvēšanas failu izpēte

Katru reizi, kad izveidojat projektu, Android Studio ģenerēs to pašu Gradle būvēšanas failu kolekciju. Pat ja jūs importēsit esošo projektu Android Studio, tas notiks joprojām izveidojiet šos tieši tos pašus Gradle failus un pievienojiet tos savam projektam.

Lai sāktu labāk izprast Gradle un Groovy sintakse, apskatīsim rindu pa rindām katru no Android Gradle būvēšanas failiem.

1. iestatījumi

Fails settings.gradle ir tas, kurā jūs definējat visus savas lietojumprogrammas moduļus pēc nosaukuma, izmantojot atslēgvārdu “iekļaut”. Piemēram, ja jums būtu projekts, kas sastāv no “app” un “secondModule”, tad jūsu iestatījumu.gradle fails izskatās šādi:

ietver: lietotne,: otrais modulis rootProject.name = MyProject

Atkarībā no projekta lieluma, šis fails var būt ievērojami garāks.

Veidošanas procesa laikā Gradle pārbaudīs jūsu projekta faila settings.gradle saturu un identificēs visus moduļus, kas tam jāiekļauj veidošanas procesā.


2. build.gradle (projekta līmenis)

Projekta līmeņa fails build.gradle atrodas projekta saknes direktorijā un satur iestatījumus, kuri tiks piemēroti visiem savus moduļus (Gradle dēvē arī par “projektiem”).

Jums vajadzētu izmantot šo failu, lai definētu visus spraudņus, repozitorijus, atkarības un konfigurācijas opcijas, kas attiecas uz visiem moduļiem visā jūsu Android projektā. Ņemiet vērā: ja projekta līmeņa failā build.gradle definējat kādus Gradle uzdevumus, joprojām ir iespējams ignorēt vai paplašināt šos uzdevumus atsevišķiem moduļiem, rediģējot to atbilstošos. moduļa līmenis build.gradle fails.

Tipisks projekta līmeņa build.gradle fails izskatīsies aptuveni šādi:

buildscript {krātuves {google () jcenter ()} atkarības {classpath com.android.tools.build:gradle:3.5.0-alpha06 // PIEZĪME: nelieciet šeit lietojumprogrammu atkarības; tie pieder // atsevišķā moduļa build.gradle failos}} visi projekti {repozitoriji {google () jcenter ()}} uzdevuma tīrīšana (tips: Dzēst) {izdzēst rootProject.buildDir}

Šis projekta līmeņa build.gradle fails ir sadalīts šādos blokos:

  • Celtniecības raksts. Tajā ir iestatījumi, kas nepieciešami, lai izveidotu.
  • Repozitoriji. Gradle ir atbildīgs par jūsu projekta atkarību atrašanu un pieejamības nodrošināšanu jūsu projektā. Tomēr ne visas atkarības nāk no viena un tā paša repozitorija, tāpēc jums būs jādefinē visas krātuves, kurās Gradle būtu jāmeklē, lai iegūtu jūsu projekta atkarības.
  • Atkarības. Šajā sadaļā ir jūsu spraudņu atkarības, kuras tiek lejupielādētas un saglabātas vietējā kešatmiņā. Jums vajadzētu definējiet visas moduļa atkarības šajā blokā.
  • Visi projekti. Šeit jūs definēsiet krātuves, kurām vajadzētu būt pieejamām visiem no jūsu projekta moduļiem.

3. build.gradle (moduļa līmenis)

Šis ir moduļa līmeņa build.gradle fails, kas atrodas visos moduļos visā jūsu projektā. Ja jūsu Android projekts sastāv no vairākiem moduļiem, tad tas sastāv arī no vairākiem moduļa līmeņa build.gradle failiem.

Katrā moduļa līmeņa build.gradle failā ir ietverts jūsu projekta paketes nosaukums, versijas nosaukums un versijas kods, kā arī šī konkrētā moduļa minimālais un mērķa SDK.

Moduļa līmeņa build.gradle failam var būt arī savs unikālais būvēšanas instrukciju un atkarību komplekts. Piemēram, ja jūs veidojat lietojumprogrammu ar Wear OS komponentu, tad jūsu Android Studio projekts sastāvēs no atsevišķa viedtālruņa / planšetdatora moduļa un Wear moduļa - tā kā tie ir vērsti uz pavisam citām ierīcēm, šiem moduļiem ir krasi atšķirīgas iespējas atkarības!

Pamatmoduļa līmeņa build.gradle fails parasti izskatās šādi:

lietot spraudni: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.speechtotext" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.UniversifiedVirentsNeaveNetNeautifiedNeautifiedNeautifiedNeautifiedNeautifiedNeautifiedNeaveReNeNtNeTeNeTaNaNaNDN getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} atkarības {ieviešanas failsTrijs (dir: libs, ietver:) ieviešana androidx.appcompat: appcompat: 1.0.2 ieviešana androidx.constraintlayout: ierobežojumu izpilde: 1.1. 3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1}

Apskatīsim sīkāk katru no šīm sadaļām:

  • lietot spraudni. Šis ir spraudņu saraksts, kas nepieciešami šī moduļa izveidošanai. Com.android.application spraudnis ir nepieciešams, lai iestatītu Android specifisko veidošanas procesu, tāpēc tas tiek pievienots automātiski.
  • android. Šeit jums jānovieto visas moduļa platformas specifiskās iespējas.
  • compileSdkVersion. Šis ir API līmenis, ar kuru šis modulis tiek sastādīts. Jūs nevarat izmantot API funkcijas, kas ir augstākas par šo vērtību.
  • buildToolsVersion. Tas norāda kompilatora versiju. Gradle 3.0.0 un jaunākā versijā buildToolsVersion nav obligāts; ja jūs nenorādāt vērtību buildToolsVersion, tad Android Studio pēc noklusējuma iestatīs jaunāko Build Tools versiju.
  • noklusējuma konfigurācija. Tajā ir opcijas, kas tiks piemērotas visām jūsu lietotnes versijām, piemēram, atkļūdošanas un laidiena versijām.
  • pieteikumsId. Šis ir jūsu lietojumprogrammas unikālais identifikators.
  • minSdkVersion. Šis parametrs nosaka zemāko API līmeni, ko atbalsta šis modulis.
  • targetSdkVersion. Tas ir maksimālais API līmenis, pret kuru ir pārbaudīta jūsu lietojumprogramma. Ideālā gadījumā jums vajadzētu pārbaudīt savu lietojumprogrammu, izmantojot jaunāko API, kas nozīmē, ka targetSdkVersion vērtība vienmēr būs vienāda ar compileSdkVersion vērtību.
  • versionCode. Šī ir jūsu lietojumprogrammas versijas skaitliskā vērtība.
  • versionName. Šī ir lietotājam draudzīga virkne, kas attēlo jūsu lietojumprogrammas versiju.
  • būvētTipi. Pēc noklusējuma Android atbalsta divus veidlapu veidus: atkļūdošana un izlaišana. Lai norādītu lietojumprogrammas tipam raksturīgos iestatījumus, varat izmantot bloķēšanas un atkļūdošanas blokus.
  • atkarības. Šeit jūs definēsit visas bibliotēkas, no kurām atkarīgs šis modulis.

Projekta atkarību deklarēšana: vietējās bibliotēkas

Jūs varat padarīt papildu funkcionalitāti pieejamu saviem Android projektiem, pievienojot vienu vai vairākas projekta atkarības. Šīs atkarības var būt lokālas vai arī tās var uzglabāt attālā krātuvē.

Lai deklarētu atkarību no vietējā JAR faila, jums šis JAR jāpievieno sava projekta direktorijam “libs”.

Pēc tam jūs varat modificēt moduļa līmeņa build.gradle failu, lai deklarētu šī faila atkarību. Piemēram, šeit mēs paziņojam par atkarību no JAR “zibatmiņas”.

ieviešanas faili (libs / mylibrary.jar)

Alternatīvi, ja mapē “libs” bija vairāki JAR, tad varētu būt vienkāršāk vienkārši norādīt, ka jūsu projekts ir atkarīgs no visiem failiem, kas atrodas mapē “libs”, piemēram:

ieviešanas failsTree (rež .: libs, iekļaut:)

Pievienošanas atkarības pievienošana: Attālās krātuves

Ja bibliotēka atrodas attālā krātuvē, jums būs jāveic šādas darbības:

  • Definējiet repozitoriju, kurā atrodas šī atkarība.
  • Paziņojiet individuālo atkarību.

Savienojuma izveide ar attālu krātuvi

Pirmais solis ir norādīt Gradle, kurš krātuve (vai krātuves) tai jāpārbauda, ​​lai iegūtu visas jūsu projekta atkarības. Piemēram:

krātuves {google () jcenter ()}}

Šeit līnija “jcenter ()” nodrošina, ka Gradle pārbaudīs JCenter repozitoriju, kas ir bezmaksas publisks repozitorijs, kas atrodas bintray.

Alternatīvi, ja jūs vai jūsu organizācija uztur personīgo repozitoriju, tad šīs repozitorija URL ir jāpievieno atkarības deklarācijai. Ja repozitorijs ir aizsargāts ar paroli, jums būs jāsniedz arī pieteikuminformācija, piemēram:

krātuves {mavenCentral () maven {// konfigurējiet mērķa URL // url "http://repo.mycompany.com/myprivaterepo"} maven {credentials {lietotājvārds myUsername password myPassword} url "http://repo.mycompany.com / myprivaterepo "}

Ja vairākās krātuvēs ir atkarība, tad Gradle izvēlas šīs atkarības “labāko” versiju, pamatojoties uz tādiem faktoriem kā katras repozitorija vecums un statiskā versija.

Distances atkarības deklarēšana

Nākamais solis ir atkarības deklarēšana moduļa līmeņa build.gradle failā. Jūs pievienojat šo informāciju blokam “atkarības”, izmantojot kādu no šīm iespējām:

  • Īstenošana. Šī ir normāla atkarība, kas jums nepieciešama, veidojot savu projektu. Visā būs atkarība no “ieviešanas” visiem jūsu būvē.
  • Pārbaude. Šī ir atkarība, kas nepieciešama, lai apkopotu jūsu lietojumprogrammas testa avotu un palaistu uz JVM balstītus testus. Atzīmējot atkarību kā “Testimplementation”, Gradle zinās, ka normālas būvēšanas laikā tai nav jāveic šīs atkarības uzdevumi, kas var palīdzēt samazināt veidošanas laiku.
  • Android testēšana. Šī ir atkarība, kas nepieciešama, veicot testus ierīcē, piemēram, Espresso ietvars ir parasts “Androidtestimization”.

Mēs definējam attālo atkarību, izmantojot vienu no iepriekšminētajiem atslēgvārdiem, kam seko atkarības grupas, nosaukuma un versijas atribūti, piemēram:

atkarības {ieviešanas failsTreši (direktorijā: libs, iekļaujiet:) ieviešanu androidx.appcompat: appcompat: 1.0.2 ieviešana androidx.constraintlayout: ierobežojumu izpildīšana: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1}

Vairāku APK ģenerēšana: kā izveidot versijas variantus

Dažreiz jums, iespējams, būs jāizveido vairākas lietojumprogrammas versijas. Piemēram, jūs varētu vēlēties izlaist bezmaksas versiju un maksas versiju, kas ietver dažas papildu funkcijas.

Šis ir veidošanas uzdevums, kurā Gradle var jums palīdzēt, tāpēc apskatīsim, kā modificējat veidošanas procesu, lai no viena projekta izveidotu vairākus APK:

  • Atveriet failu strings.xml un izdzēsiet sākotnējo lietojumprogrammas nosaukuma virkni.
  • Pēc tam definējiet katra produkta aromāta nosaukumus, kuru vēlaties izveidot; šajā gadījumā es izmantoju:

Mana bezmaksas lietotne Mana apmaksātā lietotne

  • Atveriet failu AndroidManifest.xml un nomainiet android: label = ”@ string / app_name” ar:

android: label = "$ {appName}"

  • Atveriet moduļa līmeņa build.gradle failu un “android” blokam pievienojiet sekojošo:

flavorDimensions "mode" productFlavors {free {dimension "mode" applicationIdSuffix ".free" manifestPlaceholders =} apmaksāts {dimension "mode" applicationIdSuffix ".paid" manifestPlaceholders =}}}

Nodalīsim šeit notiekošo:

  • aromaDimensions. Android spraudnis rada būvēšanas variantus, apvienojot garšas no dažādām dimensijām. Šeit mēs veidojam garšas dimensiju, kas sastāv no mūsu lietotnes “bezmaksas” un “maksas” versijām. Balstoties uz iepriekš minēto kodu, Gradle ģenerēs četrus būvēšanas variantus: paidDebug, paidRelease, freeDebug un freeRelease.
  • produktsFlavors. Tas norāda garšu un to iestatījumu sarakstu, kas iepriekš minētajā kodā ir “apmaksāti” un “bez maksas”.
  • Bezmaksas / apmaksāts. Šie ir mūsu divu produktu garšu nosaukumi.
  • Izmērs. Mums jāprecizē parametra “dimensija” vērtība; šajā gadījumā es izmantoju “mode”.
  • applicationIdSuffix. Tā kā mēs vēlamies izveidot vairākas savas lietotnes versijas, mums katram APK ir jāpiešķir unikāls lietotnes identifikators.
  • manifestsPlaceholders. Katram projektam ir viens manifesta fails, kurā ir svarīga informācija par jūsu projekta konfigurāciju. Veidojot vairākus būvēšanas variantus, parasti vēlēsities modificēt dažus no šiem Manifest rekvizītiem veidošanas laikā. Jūs varat izmantot Gradle būvēšanas failus, lai norādītu unikālus manifesta ierakstus katram būvēšanas variantam, kas pēc tam tiks ievietoti manifestā būvēšanas laikā. Iepriekš minētajā kodā mēs modificējam vērtību “appName” atkarībā no tā, vai Gradle izstrādā mūsu lietotnes bezmaksas vai maksas versiju.

Pielāgota Gradle uzdevuma izveidošana

Dažreiz jums, iespējams, būs jāpielāgo veidošanas process, izmantojot programmu Gradle uzdevumi.

Uzdevums ir nosaukta darbību kolekcija, kuru Gradle veiks, izpildot uzbūvi, piemēram, ģenerējot Javadoc. Gradle pēc noklusējuma atbalsta daudzus uzdevumus, taču jūs varat arī izveidot pielāgotus uzdevumus, kas var noderēt, ja jums ir prātā ļoti specifisks būvēšanas instrukciju komplekts.

Šajā sadaļā mēs izveidosim pielāgotu Gradle uzdevumu, kas atkārtosies caur visiem mūsu projekta būvēšanas variantiem (paidDebug, paidRelease, freeDebug un freeRelease), izveidos datuma un laika zīmogu un pēc tam pievienos šo informāciju katram ģenerētajam APK.

Atveriet moduļa līmeņa build.gradle failu un pievienojiet šo:

uzdevums addDateAndTime () {// Atkārtojiet visus izvades versiju variantus // android.applicationVariants.all {variant -> // Iteratējiet visus APK failus // variant.outputs.all {output -> // Izveidojiet gadījumu pašreizējais datums un laiks, norādītajā formātā // def dateAndTime = new Date (). format ("gggg-MM-dd: HH-mm") // Pievienojiet šo informāciju APK faila nosaukumam // def fileName = variants. name + "_" + dateAndTime + ".apk" output.outputFileName = faila nosaukums}}}

Tālāk mums jāstāsta Gradle kad tam vajadzētu izpildīt šo uzdevumu. Veidošanas laikā Gradle identificē visu nepieciešamo lejupielādēšanai un visus uzdevumus, kas tai jāizpilda, un sakārto tos Directed Acyclic Graph (DAG). Tad Gradle izpildīs visus šos uzdevumus saskaņā ar kārtību, kas noteikta tās DAG.

Savā lietotnē es izmantošu metodi “whenReady”, kas nodrošina, ka mūsu uzdevums tiks izsaukts, tiklīdz DAG būs aizpildīts, un Gradle ir gatava sākt pildīt savus uzdevumus.

Savam moduļa līmeņa build.gradle failam pievienojiet šo:

// Izpildiet šo uzdevumu // gradle.taskGraph.whenReady {addDateAndTime}

Liekam mūsu pielāgoto uzdevumu un mūsu testa varianta kods testam, izveidojot šo projektu, izmantojot komandu Gradle.

Projekta veidošana, izmantojot Gradle iesaiņojumu

Jūs izdodat Gradle komandas, izmantojot Gradle iesaiņojumu (“gradlew”). Šis skripts ir vēlamais veids, kā sākt Gradle izveidi, jo tas padara būves izpildīšanu neatkarīgu no jūsu Gradle versijas. Šī atdalīšana var būt noderīga, ja sadarbojaties ar citiem, kuriem, iespējams, nav instalēta viena un tā pati Gradle versija.

Izsniedzot komandas Gradle iesaiņojuma versiju, jūs lietosit “gradlew” Unix līdzīgām operētājsistēmām, ieskaitot macOS, un “gradlew.bat” operētājsistēmai Windows. Man ir Mac, tāpēc es izmantošu komandas “greifers”.

Gradle komandas varat izdot no Android Studio:

  • Android Studio rīkjoslā atlasiet “Skatīt> Rīki Windows> Terminālis.” IDE loga apakšā tiek atvērts termināļa panelis.
  • Ievadiet terminālī šādu komandu:

./gradlew būvēt

Android Studio vajadzētu izskatīties apmēram šādi:

  • Nospiediet tastatūras taustiņu Enter. Gradle tagad izveidos jūsu projektu.

Gradle saglabā visus ģenerētos APK jūsu projekta lietotnē / build / output / apk direktorijā, tāpēc dodieties uz šo direktoriju. Mapē “APK” jābūt vairākām mapēm un apakšmapēm; pārliecinieties, vai Gradle ir ģenerējis APK katram jūsu būvēšanas variantam un vai katram failam ir pievienota pareiza datuma un laika informācija.

Kādi citi Gradle uzdevumi ir pieejami?

Papildus visiem pielāgotajiem uzdevumiem, kurus jūs varētu izveidot, Gradle atbalsta iepriekš definētu uzdevumu sarakstu, kas nav pieejami. Ja jums ir interese uzzināt, kādi tieši uzdevumi ir pieejami, tad:

  • Atveriet Android Studio termināļa logu, ja tas vēl nav atvērts (Android Studio rīkjoslā atlasot “Skatīt> Rīki Windows> Terminālis”).
  • Ievadiet terminālā:

./gradlew -q uzdevumi

  • Nospiediet tastatūras taustiņu Enter.

Šis “uzdevumu” uzdevums tagad tiks izpildīts, un pēc dažiem mirkļiem terminālis parādīs visu šim projektam pieejamo uzdevumu sarakstu ar īsu katra uzdevuma aprakstu.

Izmantojiet vairāk Gradle: spraudņu pievienošana

Gradle piegādā ar vairākiem iepriekš instalētiem spraudņiem, taču jūs varat vēl vairāk paplašināt Gradle, pievienojot jaunus spraudņus. Šie spraudņi padara jaunus uzdevumus pieejamus jūsu Android projektiem, piemēram, Java spraudnī ir iekļauti uzdevumi, kas ļauj apkopot Java avota kodu, palaist vienības testus un izveidot JAR failu, piemēram, “compileJava”, “compileText”, “jar”. “Javadoc” un “tīrs”.

Lai lietotu spraudni, sava moduļa līmeņa build.gradle failam pievienojiet deklarāciju “lietot spraudni”, kam seko spraudņa nosaukums. Piemēram, šeit mēs izmantojam Java spraudni:

lietot spraudni: java

Ja jums ir interese uzzināt, kādi spraudņi ir pieejami, pārbaudiet Gradle spraudņu meklēšanu, kas nodrošina visaptverošu Gradle spraudņu reģistru.

Gradle Kotlin DSL

Pēc noklusējuma jūs rakstīsit savus Gradle būvēšanas skriptus, izmantojot Groovy DSL, taču, ja jūs esat viens no daudzajiem izstrādātājiem, kas ir pieņēmuši Kotlin Android izstrādei, tad varat izvēlēties veidot skriptus Kotlin.

Atšķirībā no Groovy, Kotlin ir statiski ierakstīta programmēšanas valoda, tāpēc, ja jūs pārslēdzaties, tad jūsu build faili būs saderīgi ar Android Studio automātiskās pabeigšanas un avota koda navigācijas funkcijām. Turklāt, pārejot no Groovy uz Kotlin, tas nozīmē, ka visā projektā izmantosit to pašu programmēšanas valodu, kas var padarīt attīstību vienkāršāku - it īpaši, ja neesat pārāk pazīstams ar Groovy!

Ja vēlaties sākt rakstīt būvēšanas loģiku Kotlinā, jums jāiestata Gradle Kotlin DSL un jāizpilda norādījumi migrācijas ceļvedī.

Iesaiņošana

Šajā rakstā mēs izpētījām Android Studio veidoto automatizācijas un atkarības pārvaldības rīku. Mēs pārbaudījām, kā Gradle automatizē būvēšanas procesu no komplekta un kā jūs varat modificēt veidošanas procesu, rediģējot sava projekta Gradle būvēšanas failus, tostarp izveidojot pielāgotus Gradle uzdevumus un ģenerējot vairākus būvēšanas variantus no viena projekta.

Vai esat paplašinājis Gradle, lai automatizētu citas Android veidošanas procesa daļas? Paziņojiet mums komentāros zemāk!

Laipni lūdzam mūu Android 8.0 Oreo atjauninājumu izekotājā. Pēc publikā izlaišana 2017. gada augutā Oreo tabili atrod ceļu uz arvien vairāk Android viedtālruņiem....

Viena no daudzajām Android lietām ir tā, ka jū varat viegli kopēt un ielīmēt failu uz galddatoru vai klēpjdatoru, vienkārši avienojot tālruni ar UB. Diemžēl vi nav tik vienkārši, ja jum ir Android tāl...

Svaigas Publikācijas