Gradle'i valdamine Androidile: Gradle'i ülesanded ja Kotlin

Autor: Lewis Jackson
Loomise Kuupäev: 11 Mai 2021
Värskenduse Kuupäev: 1 Juuli 2024
Anonim
Gradle'i valdamine Androidile: Gradle'i ülesanded ja Kotlin - Rakendused
Gradle'i valdamine Androidile: Gradle'i ülesanded ja Kotlin - Rakendused

Sisu


Java, XML või Kotlini asemel kasutavad need Gradle'i loomise failid Groovy-põhist domeenipõhist keelt (DSL). Kui te pole Groovy'ga tuttav, vaatame kõiki neid Gradle'i üleslaadimise faile rida-realt, nii et selle artikli lõpuks on teil lihtne Groovy koodi lugeda ja kirjutada.

Gradle'i eesmärk on teie elu lihtsamaks muuta, pakkudes vaikeseadeid, mida saate sageli kasutada minimaalse käsitsi konfigureerimisega - kui olete oma projekti ülesehitamiseks valmis, vajutage lihtsalt Android Studio nuppu „Käivita“ ja Gradle alustab ehitamisprotsessi. sinu jaoks.

Hoolimata Gradle'i lähenemisviisist konfiguratsiooni osas, kui selle vaikesätted ei vasta teie vajadustele, saate kohandada, konfigureerida ja laiendada ehitamisprotsessi ning isegi kohandada Gradle'i sätteid väga spetsiifiliste toimingute tegemiseks.


Kuna Gradle'i skriptid sisalduvad nende endi failides, saate rakenduse loomise protsessi igal ajal muuta, ilma et peaksite oma rakenduse lähtekoodi puudutama. Selles õpetuses muudame ehitamisprotsessi, kasutades maitseid, ehituse variante ja kohandatud Gradle'i ülesannet - kõik ilma kunagi puudutades meie rakenduskoodi.

Gradle'i ehitamisfailide uurimine

Iga kord, kui loote projekti, genereerib Android Studio sama Gradle'i ehitamise failide kogu. Isegi kui impordite olemasoleva projekti Android Studiosse, saab see hakkama ikka looge need täpselt samad Gradle'i failid ja lisage need oma projekti.

Gradle'i ja Groovy-süntaksi parema mõistmise huvides vaatame ridahaaval kõiki Androidi Gradle'i ehitamisfaile.

1. seaded.rida

Seadistus.marjafaili abil määratlete rakenduse kõik moodulid nime abil märksõnaga „kaasata“. Näiteks kui teil oleks projekt, mis koosneks rakendusest ja teisest moodulist, näeks teie faili settings.gradle välja umbes selline:


sisaldama: rakendus,: teine ​​moodul rootProject.name = MyProject

Sõltuvalt projekti suurusest võib see fail olla tunduvalt pikem.

Koostamisprotsessi käigus uurib Gradle teie projekti faili settings.gradle faili sisu ja tuvastab kõik moodulid, mida see peab ehitamisprotsessi kaasama.

2. build.gradle (projekti tase)

Projekti tasemel ehitatav gradientfail asub teie projekti juurkataloogis ja sisaldab sätteid, mida rakendatakse kõik oma moodulid (Gradle nimetatakse ka projektideks).

Peaksite seda faili kasutama kõigi pluginate, hoidlate, sõltuvuste ja konfiguratsioonivõimaluste määratlemiseks, mis kehtivad kõigi moodulite kohta kogu teie Androidi projektis. Pidage meeles, et kui määratlete Gradle'i ülesanded projektitasemel build.gradle-failis, on need üksikute moodulite jaoks siiski võimalik ümber lükata või neid laiendada, redigeerides neile vastavaid moodulitase build.gradle fail.

Tüüpiline projekti tasemel ehitatav gradientfail näeb välja umbes selline:

ehitiskirje {hoidlad {google () jcenter ()} sõltuvused {classpath com.android.tools.build:gradle:3.5.0-alpha06 // MÄRKUS. Ärge asetage siia rakenduste sõltuvusi; nad kuuluvad // üksikute moodulite build.gradle failidesse}} kõik projektid {hoidlad {google () jcenter ()}} ülesande puhastamine (tüüp: Kustuta) {kustuta rootProject.buildDir}

See projekti tasemel ehitatav gradientfail on jagatud järgmisteks plokkideks:

  • Ehituskiri. See sisaldab sätteid, mida on vaja ehitamiseks.
  • Hoidlad. Gradle vastutab teie projekti sõltuvuste leidmise ja nende ehitamises kättesaadavaks tegemise eest. Kuid mitte kõik sõltuvused ei pärine samast hoidlast, nii et projekti sõltuvuste leidmiseks peate määratlema kõik hoidlad, mida Gradle peaks otsima.
  • Sõltuvused. Selles jaotises on teie pistikprogrammide sõltuvused, mis laaditakse alla ja salvestatakse kohalikku vahemällu. Sa peaksid mitte määratleda mooduli sõltuvused selles plokis.
  • Kõik projektid. Siin saate määratleda hoidlad, mis peaksid olema kättesaadavad kõik projekti moodulitest.

3. build.gradle (moodulitase)

See on moodulitasemel build.gradle-fail, mis on olemas igas moodulis. Kui teie Androidi projekt koosneb mitmest moodulist, koosneb see ka mitmest moodulitasemel build.gradle-failist.

Iga moodulitasemel build.gradle'i fail sisaldab teie projekti paketi nime, versiooni nime ja versiooni koodi, millele lisandub selle konkreetse mooduli minimaalne ja siht SDK.

Moodulitasemel build.gradle-failil võib olla ka oma ainulaadne ehitamise juhiste ja sõltuvuste komplekt. Näiteks kui loote rakendust Wear OS-i komponendiga, koosneb teie Android Studio projekt eraldi nutitelefoni / tahvelarvuti moodulist ja Wear-moodulist - kuna need on suunatud täiesti erinevatele seadmetele, on nende moodulitega drastiliselt erinevad sõltuvused!

Põhimooduli tasemel ehitatav gradientfail näeb tavaliselt välja umbes selline:

rakenda pistikprogrammi: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.speechtotext" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.UserNetNeaveRannetNeaveNetNeaveText getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} sõltuvused {juurutusfailTree (dir: libid, sisaldama:) juurutamine androidx.appcompat: appcompat: 1.0.2 juurutamine androidx.constraintlayout: piirangute väljalülitamine: 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}

Vaatleme lähemalt kõiki neid jaotisi:

  • rakenda pistikprogramm. See on selle mooduli ehitamiseks vajalike pistikprogrammide loend. Com.android.application plugin on vajalik Androidi-spetsiifilise ehitamisprotsessi seadistamiseks, nii et see lisatakse automaatselt.
  • android. Sellele kohale peaksite paigutama kõik mooduli platvormipõhised valikud.
  • kompileeriSdkVersion. See on API tase, millega see moodul on koostatud. Sellest väärtusest kõrgema API funktsioone ei saa kasutada.
  • buildToolsVersion. See näitab kompilaatori versiooni. Gradle 3.0.0 või uuemas versioonis on buildToolsVersion valikuline; kui te ei määra väärtust buildToolsVersion, vaikeseade Android Studio vaikimisi ehitustööriistade uusimale versioonile.
  • defaultConfig. See sisaldab suvandeid, mida rakendatakse teie rakenduse kõikidele versiooniversioonidele, näiteks silumis- ja väljalaskeversioonidele.
  • rakendusId. See on teie rakenduse kordumatu identifikaator.
  • minSdkVersioon. See parameeter määratleb madalaima API taseme, mida see moodul toetab.
  • targetSdkVersion. See on maksimaalne API tase, mille suhtes teie rakendust on testitud. Ideaalis peaksite oma rakendust testima uusima API abil, mis tähendab, et väärtus targetSdkVersion on alati võrdne väärtusega compileSdkVersion.
  • versionCode. See on teie rakenduse versiooni arvuline väärtus.
  • versiooni nimi. See on kasutajasõbralik string, mis tähistab teie rakenduse versiooni.
  • buildTypes. Vaikimisi toetab Android kahte ehitustüüpi: silumine ja vabastamine. Rakenduse tüübispetsiifiliste sätete määramiseks saate kasutada silumis- ja vabastamisplokke.
  • sõltuvused. Siin saate määratleda kõik teegid, millest see moodul sõltub.

Projekti sõltuvuste deklareerimine: kohalikud raamatukogud

Saate muuta oma Android-projektidele kättesaadavaks täiendavad funktsioonid, lisades ühe või mitu projekti sõltuvust. Need sõltuvused võivad olla lokaalsed või neid saab salvestada kaughoidlasse.

Kohalikust JAR-failist sõltuvuse tuvastamiseks peate selle JAR-i lisama oma projekti kataloogidesse.

Seejärel saate faili moodulitasemel build.gradle'i faili modifitseerida, et deklareerida sellest failist sõltuvus. Näiteks kuulutame siin sõltuvuse nn müraraamatu JAR-ist.

rakendusfailid (libs / mylibrary.jar)

Teise võimalusena, kui teie kaustas „libs” oli mitu JAR-i, siis võib olla lihtsam lihtsalt öelda, et teie projekt sõltub kõigist kausta „libs” asuvatest failidest, näiteks:

rakendusfailTree (dir: libs, sisaldama:)

Ehitussõltuvuse lisamine: kaughoidlad

Kui teek asub kauges hoidlas, peate tegema järgmised toimingud:

  • Määrake hoidla, kus see sõltuvus asub.
  • Kuulutage individuaalne sõltuvus.

Ühendamine serverihoidlaga

Esimene samm on öelda Gradle'ile, millist hoidlat (või hoidlaid) ta peab kontrollima, et hankida kõik projekti sõltuvused. Näiteks:

hoidlad {google () jcenter ()}}

Siin tagab rida „jcenter ()”, et Gradle kontrollib JCenteri hoidlat, mis on tasuta avalik hoidla, mida hostitakse bintrays.

Kui teie või teie organisatsioon haldab isiklikku hoidlat, peaksite selle hoidla URL-i lisama oma sõltuvusdeklaratsioonile. Kui hoidla on parooliga kaitstud, peate esitama ka oma sisselogimisandmed, näiteks:

repositooriumid {mavenCentral () maven {// seadistage sihtkoha URL // url "http://repo.mycompany.com/myprivaterepo"} maven {mandaadid {kasutajanimi myKasutaja nimi parool myPassword} url "http://repo.mycompany.com / myprivaterepo "}

Kui sõltuvus on mitmes andmehoidlas, valib Gradle selle sõltuvuse "parima" versiooni, tuginedes sellistele teguritele nagu iga hoidla vanus ja staatiline versioon.

Kaugsõltuvuse kuulutamine

Järgmine samm on sõltuvuse deklareerimine moodulitaseme failis build.gradle. Lisate selle teabe lahtrisse „sõltuvused“, kasutades ühte järgmistest võimalustest:

  • Rakendamine. See on tavaline sõltuvus, mida vajate oma projekti koostamisel. Kõikjal on olemas sõltuvus rakendamisest kõik teie ehitab.
  • Proovide teostamine. See on sõltuvus, mida on vaja teie rakenduse testiallika koostamiseks ja JVM-põhiste testide käitamiseks. Kui tähistate sõltuvuse kui „Testimplementation”, saab Gradle teada, et tavalise ehituse ajal ei pea ta selle sõltuvuse jaoks toiminguid tegema, mis võib aidata luua ehituse aega.
  • Androidi testimine. See on sõltuvus, mida on vaja testide käivitamisel seadmes, näiteks Espresso raamistik on tavaline Android-i rakendus.

Me määratleme kaugsõltuvuse, kasutades ühte ülaltoodud märksõnadest, millele järgnevad sõltuvuse rühma, nime ja versiooni atribuudid, näiteks:

sõltuvused {rakendusfailTree (dir: libs, sisaldab:) juurutamine androidx.appcompat: appcompat: 1.0.2 teostus androidx.constraintlayout: piirangute esitamine: 1.1.3 testImplementation junit: juuni: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1}

Mitme APK genereerimine: kuidas luua ehituse variante

Mõnikord peate võib-olla looma oma rakendusest mitu versiooni. Näiteks võiksite lasta välja tasuta versiooni ja tasulise versiooni, mis sisaldab ka mõnda lisafunktsiooni.

See on ehitustöö, mida Gradle teile aitab, nii et vaatame, kuidas saaksite ehituse protsessi muuta, et luua ühest projektist mitu APK-d:

  • Avage fail strings.xml ja kustutage algne rakenduse nime string.
  • Järgmisena määratlege iga toote maitse nimi, mida soovite luua; sellisel juhul kasutan:

Minu tasuta rakendus Minu tasuline rakendus

  • Avage oma fail AndroidManifest.xml ja asendage android: label = ”@ string / app_name” järgmisega:

android: label = "$ {appName}"

  • Avage moodulitaseme ehitis.gradli fail ja lisage plokki „android” järgmine:

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

Jagageme ära, mis siin toimub:

  • maitse mõõtmed. Androidi pistikprogramm loob ehituse variandid, ühendades erineva mõõtmega maitsed. Siin loome maitsemõõtme, mis koosneb meie rakenduse tasuta ja tasulisest versioonist. Ülaltoodud koodi põhjal genereerib Gradle neli ehituse varianti: paidDebug, paidRelease, freeDebug ja freeRelease.
  • toodeMaitsed. See täpsustab maitsete loetelu ja nende seadeid, mis ülaltoodud koodis on “tasulised” ja “tasuta”.
  • Tasuta / tasuline. Need on meie kahe toote maitse nimetused.
  • Mõõtmed. Peame määrama parameetri väärtuse „mõõde“; sellisel juhul kasutan “režiimi”.
  • applicationIdSuffix. Kuna soovime luua oma rakendusest mitu versiooni, peame andma igale APK-le kordumatu rakenduse identifikaatori.
  • manifestKohatajad. Igal projektil on üks manifestfail, mis sisaldab olulist teavet projekti konfiguratsiooni kohta. Mitme ehituse variandi loomisel peate tavaliselt mõnda neist manifesti atribuutidest muutmise ajal muutma. Gradle'i ehitamisfailide abil saate määrata iga ehituse variandi kordumatud manifesti kirjed, mis seejärel lisatakse ehituse ajal teie manifesti. Ülaltoodud koodis muudame väärtust „appName” sõltuvalt sellest, kas Gradle ehitab meie rakenduse tasuta või tasulist versiooni.

Kohandatud Gradle'i ülesande loomine

Mõnikord peate võib-olla kohandama ehitamisprotsessi Gradle'i abil ülesanded.

Ülesanne on nimega toimingute kogum, mida Gradle täidab ehituse ajal, näiteks genereerides Javadoci. Gradle toetab vaikimisi palju ülesandeid, kuid võite luua ka kohandatud ülesandeid, mis võivad olla kasulikud, kui teil on meeles väga konkreetne ehitamise juhiste komplekt.

Selles jaotises loome kohandatud Gradle'i ülesande, mis iteereerub läbi kõigi meie projekti ehituse variantide (paidDebug, paidRelease, freeDebug ja freeRelease), loob kuupäeva ja ajatempli ning seejärel lisab selle teabe igale loodud APK-le.

Avage moodulitaseme ehitis.gradli fail ja lisage järgmine teave:

ülesanne addDateAndTime () {// Korrake kõiki väljundikoondamisvariante // android.applicationVariants.all {variant -> // Korrake kõiki APK-faile // variant.outputs.all {output -> // looge näiteks praegune kuupäev ja kellaaeg, määratletud vormingus // def dateAndTime = new Date (). format ("aaaa-kk-pp: PP-mm") // Lisage see teave APK-i failinimele // def fileName = variant. nimi + "_" + dateAndTime + ".apk" output.outputFileName = fileName}}}

Järgmisena peame ütlema Gradle'ile millal see peaks selle ülesande täitma. Ehitamise ajal identifitseerib Gradle kõik allalaadimiseks vajaliku ja kõik selle täitmiseks vajalikud toimingud ning korraldab need juhitud tsüklilises graafikus (DAG). Gradle täidab seejärel kõik need toimingud vastavalt oma DAG-is määratletud järjekorrale.

Oma rakenduse jaoks hakkan kasutama meetodit „whenReady”, mis tagab, et meie ülesanne kutsutakse üles siis, kui DAG on asustatud ja Gradle on valmis oma ülesandeid täitma.

Lisage oma moodulitaseme build.gradle-faili järgmine teave:

// Selle ülesande täitmine // gradle.taskGraph.whenReady {addDateAndTime}

Paneme meie kohandatud ülesande ja meie ehituse variandi kood testimiseks, ehitades selle projekti Gradle'i käsu abil.

Projekti ehitamine Gradle'i ümbrisega

Gradle'i käsud annate Gradle'i ümbrise abil („gradlew“). See skript on eelistatud viis Gradle'i ehitamise alustamiseks, kuna see muudab ehituse täitmise teie Gradle'i versioonist sõltumatuks. See eraldamine võib olla kasulik, kui teete koostööd teistega, kellel ei pruugi olla Gradle'i sama versioon installitud.

Gradle'i ümbrise käskude väljaandmisel kasutate Unixi-sarnaste opsüsteemide (sh macOS) jaoks „gradlew” ja Windowsi jaoks „gradlew.bat”. Mul on Mac, nii et ma kasutan käsklusi „haardehaaval”.

Gradle'i käske saate väljastada Android Studio kaudu:

  • Valige Android Studio tööriistaribal „Vaade> Tööriistad Windows> Terminal”. See avab IDE akna allosas terminali paneeli.
  • Sisestage terminali järgmine käsk:

./gradlew ehitamine

Android Studio peaks välja nägema umbes selline:

  • Vajutage klaviatuuril sisestusklahvi. Gradle ehitab nüüd teie projekti.

Gradle salvestab kõik loodud APK-d teie projekti rakenduses / build / output / / apk, seega liikuge sellesse kataloogi. Kaust APK peaks sisaldama mitmeid kaustu ja alamkaustu; veenduge, et Gradle on genereerinud APK iga teie ehituse variandi jaoks ja et igasse faili on lisatud õige kuupäeva ja kellaaja teave.

Millised muud Gradle'i ülesanded on saadaval?

Lisaks mis tahes kohandatud toimingutele, mida võite luua, toetab Gradle loendit eelmääratud ülesannete loendist. Kui teil on huvi teada saadaolevaid ülesandeid, siis tehke järgmist.

  • Avage Android Studio terminali aken, kui see pole veel avatud (valides Android Studio tööriistaribal „Vaade> Tööriistad Windows> Terminal”).
  • Tippige terminali järgmine teave:

./gradlew -q ülesanded

  • Vajutage klaviatuuril sisestusklahvi.

Seda ülesandeid hakatakse nüüd täitma ja mõne hetke pärast kuvab terminal kõigi selle projekti jaoks saadaolevate ülesannete loendi koos iga ülesande lühikirjeldusega.

Gradle'ist rohkem kasu saamiseks: pistikprogrammide lisamine

Gradle tarnitakse paljude eelinstalleeritud pistikprogrammidega, kuid saate Gradle'i veelgi laiendada, lisades uusi pistikprogramme. Need pistikprogrammid muudavad teie Androidi projektide jaoks kättesaadavaks uued ülesanded, näiteks Java pistikprogramm sisaldab ülesandeid, mis võimaldavad teil Java lähtekoodi kompileerida, ühikteste käivitada ja JAR-faili luua, näiteks “compileJava”, “compileText”, “jar”. “Javadoc” ja “puhas”.

Pistikprogrammi rakendamiseks lisage moodulitasemel build.gradle-failile deklaratsioon „plugina rakendamine”, millele järgneb pistikprogrammi nimi. Näiteks rakendame siin Java pistikprogrammi:

rakenda pistikprogrammi: java

Kui teil on huvi teada saadaolevaid pistikprogramme, siis vaadake Gradle'i pistikprogrammide otsingut, mis pakub Gradle'i pistikprogrammide täielikku registrit.

Gradle Kotlin DSL

Vaikimisi kirjutate oma Gradle'i koostamise skriptid Groovy DSL-i abil, kuid kui olete üks paljudest arendajatest, kes on Kotlini Androidi arendamiseks kasutusele võtnud, võite eelistada, et oma ehitamisskriptid kirjutaksite Kotlini.

Erinevalt Groovy'st on Kotlin staatiliselt trükitud programmeerimiskeel, nii et kui te selle ümber lülitate, ühilduvad teie ehitamisfailid Android Studio automaatse täitmise ja lähtekoodi navigeerimise funktsioonidega. Lisaks tähendab Groovyst Kotlini kolimine seda, et te kasutate kogu projekti vältel sama programmeerimiskeelt, mis võib muuta arengu sirgjoonelisemaks - eriti kui te pole Groovyga liiga tuttav!

Kui soovite hakata oma ehitamisloogikat kirjutama Kotlinis, peate seadistama Gradle Kotlin DSL-i ja järgima migreerimisjuhendis toodud juhiseid.

Pakkimine üles

Selles artiklis uurisime Android Stuudio ehituse automatiseerimise ja sõltuvuse haldamise tööriista. Uurisime, kuidas Gradle automatiseerib ehitamisprotsessi karbis ja kuidas saate muuta ehitamisprotsessi, redigeerides projekti Gradle ehitamisfaile, sealhulgas luues kohandatud Gradle'i ülesandeid ja genereerides ühest projektist mitu ehituse varianti.

Kas olete Gradle'i laiendanud Androidi ehitamise protsessi muude osade automatiseerimiseks? Andke meile allolevates kommentaarides teada!

Ärge lake end petialieeritud kodeerimie teadmite puudumiet takitada täiuliku veebiaidi loomine.Oma iikliku või profeionaale veebiaidi abil aate kujundada, kohandada, hotida ja hallata e...

Androidi fännina võite olla juba üna ajatundlik, kuid te ei pea eda tegema luua hämmatav veebiait nendel päevadel. Ruuturuum pakub igale vanale tehnofoobile võimalut luua...

Me Soovitame