Pagrindinis „Gradle“ „Android“: „Gradle“ užduotys ir „Kotlin“

Autorius: Lewis Jackson
Kūrybos Data: 11 Gegužė 2021
Atnaujinimo Data: 1 Liepos Mėn 2024
Anonim
Pagrindinis „Gradle“ „Android“: „Gradle“ užduotys ir „Kotlin“ - Programos
Pagrindinis „Gradle“ „Android“: „Gradle“ užduotys ir „Kotlin“ - Programos

Turinys


Vietoj „Java“, XML ar „Kotlin“ šiuose „Gradle“ kūrimo failuose naudojama „Groovy“ pagrindu sukurta domeno kalba (DSL). Jei nesate susipažinę su „Groovy“, tada pažvelgsime į eilutes po kiekvieno iš šių „Gradle“ kūrimo failų, taigi šio straipsnio pabaigoje galėsite lengvai skaityti ir rašyti paprastą „Groovy“ kodą.

„Gradle“ siekia palengvinti jūsų gyvenimą, pateikdama numatytųjų parametrų rinkinį, kurį dažnai galite naudoti su minimalia rankinio konfigūracija - kai būsite pasirengę kurti savo projektą, tiesiog paspauskite „Android Studio“ mygtuką „Vykdyti“ ir „Gradle“ pradės kūrimo procesą. tau.

Nepaisant „Gradle“ požiūrio į konfigūraciją, jei jo numatytieji nustatymai nevisiškai patenkina jūsų poreikius, galite tinkinti, konfigūruoti ir išplėsti kūrimo procesą ir net pritaikyti „Gradle“ nustatymus, kad atliktumėte labai specifines užduotis.

Kadangi „Gradle“ scenarijai yra jų pačių failuose, bet kuriuo metu galite modifikuoti programos kūrimo procesą, neliesdami programos šaltinio kodo. Šiame vadove modifikuosime kūrimo procesą naudodami skonius, kūrimo variantus ir pasirinktinę „Gradle“ užduotį - visa tai be kada nors palietę mūsų programos kodą.


„Gradle“ sąrankos failų tyrinėjimas

Kiekvieną kartą kuriant projektą „Android Studio“ sugeneruos tą pačią „Gradle“ failų kolekciją. Net jei importuosite esamą projektą į „Android Studio“, jis bus vis tiek sukurkite tuos pačius „Gradle“ failus ir pridėkite juos prie savo projekto.

Norėdami geriau suprasti „Gradle“ ir „Groovy“ sintaksę, pažvelkime į eilutes kiekviename „Android“ „Gradle“ kūrimo faile.

1. settings.gradle

„Settings.gradle“ faile galite apibrėžti visus savo programos modulius pagal pavadinimą naudodami raktinį žodį „įtraukti“. Pvz., Jei turėtumėte projektą, susidedantį iš „programos“ ir „antro modulio“, tada jūsų „settings.gradle“ failas atrodytų maždaug taip:

apima: programą,: antrąjį modulį „rootProject.name“ = „MyProject“

Priklausomai nuo jūsų projekto dydžio, šis failas gali būti žymiai ilgesnis.

Sukurimo proceso metu „Gradle“ išnagrinės jūsų projekto „settings.gradle“ failo turinį ir nustatys visus modulius, kuriuos jis turi įtraukti į kūrimo procesą.


2. „build.gradle“ (projekto lygis)

Projekto lygio „build.gradle“ failas yra pagrindiniame projekto aplanke ir jame yra parametrai, kurie bus taikomi visi savo modulius („Gradle“ dar vadinamus „projektais“).

Turėtumėte naudoti šį failą, kad apibrėžtumėte papildinius, saugyklas, priklausomybes ir konfigūracijos parinktis, kurie taikomi kiekvienam „Android“ projekto moduliui. Atminkite, kad jei apibrėžtumėte kokias nors „Gradle“ užduotis projekto lygyje esančiame „build.gradle“ faile, tai vis tiek įmanoma nepaisyti arba išplėsti šias užduotis atskiriems moduliams, redaguojant jų atitinkamus modulio lygio build.gradle failas.

Įprastas projekto lygio „build.gradle“ failas atrodys maždaug taip:

statybraščio {saugyklos {google () jcenter ()} priklausomybės {classpath com.android.tools.build:gradle:3.5.0-alpha06 // PASTABA: nedėkite čia savo programų priklausomybių; jie priklauso // atskirame modulyje build.gradle failai}} visi projektai {saugyklos {google () jcenter ()}} švari užduotis (tipas: trinti) {trinti rootProject.buildDir}

Šis projekto lygio „build.gradle“ failas yra padalintas į šiuos blokus:

  • Pastatymo scenarijus. Čia yra parametrai, kurių reikia norint sukurti.
  • Saugyklos. „Gradle“ yra atsakingas už jūsų projekto priklausomybių nustatymą ir jų pateikimą jūsų versijoje. Tačiau ne visos priklausomybės gaunamos iš tos pačios saugyklos, todėl turėsite apibrėžti visas saugyklas, kurių turėtų ieškoti „Gradle“, kad gautumėte projekto priklausomybes.
  • Priklausomybės. Šiame skyriuje yra jūsų įskiepių priklausomybės, kurios yra atsisiųstos ir saugomos jūsų vietinėje talpykloje. Tu turėtum ne apibrėžti modulio priklausomybes šiame bloke.
  • Visi projektai. Čia jūs nustatysite saugyklas, kurios turėtų būti prieinamos visi projekto modulių.

3. build.gradle (modulio lygis)

Tai yra modulio lygio „build.gradle“ failas, esantis kiekviename jūsų projekto modulyje. Jei „Android“ projektą sudaro keli moduliai, jis taip pat susideda iš kelių modulio lygio „build.gradle“ failų.

Kiekviename modulio lygio „build.gradle“ faile yra jūsų projekto paketo pavadinimas, versijos pavadinimas ir versijos kodas, pridėjus minimalų ir tikslinį SDK šiam moduliui.

Modulio lygio „build.gradle“ failas taip pat gali turėti savo unikalų kūrimo instrukcijos ir priklausomybių rinkinį. Pvz., Jei kuriate programą su „Wear OS“ komponentu, tada „Android Studio“ projektą sudarys atskiras išmaniojo telefono / planšetinio kompiuterio modulis ir „Wear“ modulis - kadangi jie skirti visiškai skirtingiems įrenginiams, šie moduliai turi drastiškai skirtingus priklausomybes!

Pagrindinis modulio lygio „build.gradle“ failas paprastai atrodys maždaug taip:

pritaikyti papildinį: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.speechtotext" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.Universifyproductedproduct" getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} priklausomybės {diegimo failasTrija (rež .: libs, include:) diegimas androidx.appcompat: appcompat: 1.0.2 diegimas androidx.constraintlayout: constraintlayout: 1.1. 3 bandymaiĮgyvendinimas junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1}

Pažvelkime atidžiau į kiekvieną iš šių skyrių:

  • pritaikyti papildinį. Tai papildinių, reikalingų norint sukurti šį modulį, sąrašas. „Com.android.application“ papildinys yra būtinas norint nustatyti „Android“ specifinį kūrimo procesą, todėl jis pridedamas automatiškai.
  • android. Čia turėtumėte sudėti visas modulio platformos parinktis.
  • compileSdkVersion. Tai yra API lygis, su kuriuo sudaromas šis modulis. Negalite naudoti didesnių nei ši vertė API funkcijų.
  • „buildToolsVersion“. Tai nurodo kompiliatoriaus versiją. „Gradle 3.0.0“ ir naujesnėse versijose „buildToolsVersion“ yra neprivalomas; jei nenurodysite vertės „buildToolsVersion“, tada „Android Studio“ numatytąją reikšmę nustatys kaip naujausią „Build Tools“ versiją.
  • „defaultConfig“. Čia yra parinkčių, kurios bus taikomos visoms jūsų programos versijoms, tokioms kaip derinimo ir išleidimo versijos.
  • taikymo ID. Tai yra unikalus jūsų programos identifikatorius.
  • „minSdkVersion“. Šis parametras nusako žemiausią API lygį, kurį palaiko šis modulis.
  • „targetSdkVersion“. Tai yra didžiausias API lygis, pagal kurį jūsų programa buvo išbandyta. Idealiu atveju turėtumėte išbandyti savo programą naudodami naujausią API, tai reiškia, kad „targetSdkVersion“ vertė visada bus lygi „compileSdkVersion“ vertei.
  • versionCode. Tai yra jūsų programos versijos skaitinė vertė.
  • versionName. Tai yra patogi eilutė, kuri nurodo jūsų programos versiją.
  • „buildTypes“. Pagal numatytuosius nustatymus „Android“ palaiko du kūrimo tipus: derinimo ir išleidimo. Norėdami nurodyti konkretaus tipo programos parametrus, galite naudoti „derinimo“ ir „išleidimo“ blokus.
  • priklausomybės. Čia apibrėžsite visas bibliotekas, nuo kurių priklauso šis modulis.

Projekto priklausomybių deklaravimas: Vietinės bibliotekos

Pridėję vieną ar daugiau projekto priklausomybių, „Android“ projektams galite suteikti papildomų funkcijų. Šios priklausomybės gali būti vietinės arba jas galima laikyti nuotoliniame saugykloje.

Norėdami deklaruoti priklausomybę nuo vietinio JAR failo, turėsite pridėti tą JAR į savo projekto katalogą „libs“.

Tada galite modifikuoti modulio lygio „build.gradle“ failą ir deklaruoti šio failo priklausomybę. Pvz., Čia mes deklaruojame priklausomybę nuo JAR „mylibrary“.

diegimo failai (libs / mylibrary.jar)

Arba, jei aplanke „libs“ yra keli JAR, tada gali būti paprasčiau tiesiog pasakyti, kad jūsų projektas priklauso nuo visų failų, esančių aplanke „libs“, pavyzdžiui:

diegimo fileTree (rež: libs, įtraukti:)

Pridedama priklausomybė nuo kaupimo: Nuotolinės saugyklos

Jei biblioteka yra nuotoliniame saugykloje, turėsite atlikti šiuos veiksmus:

  • Apibrėžkite saugyklą, kurioje yra ši priklausomybė.
  • Paskelbkite individualią priklausomybę.

Prisijungimas prie nuotolinio saugyklos

Pirmasis žingsnis yra pasakyti „Gradle“, kurią saugyklą (arba saugyklas) reikia patikrinti, kad būtų galima atkurti visas jūsų projekto priklausomybes. Pavyzdžiui:

saugyklos {google () jcenter ()}}

Čia eilutė „jcenter ()“ užtikrina, kad „Gradle“ patikrins „JCenter“ saugyklą, kuri yra nemokama vieša saugykla, esanti „bintray“.

Arba, jei jūs ar jūsų organizacija prižiūrite asmeninę saugyklą, turėtumėte pridėti šios saugyklos URL į savo priklausomybės deklaraciją. Jei saugykla yra apsaugota slaptažodžiu, taip pat turėsite pateikti prisijungimo informaciją, pvz .:

saugyklos {mavenCentral () maven {// sukonfigūruokite tikslinį URL // url "http://repo.mycompany.com/myprivaterepo"} maven {credentials {username myUsername slaptažodis myPassword} url "http://repo.mycompany.com / myprivaterepo "}

Jei priklausomybė egzistuoja keliose saugyklose, tada „Gradle“ pasirinks „geriausią“ šios priklausomybės versiją, remdamasi tokiais veiksniais kaip kiekvienos saugyklos amžius ir statinė versija.

Deklaruoti priklausomybę nuotoliniu būdu

Kitas žingsnis - priklausomybės deklaravimas jūsų modulio lygio „build.gradle“ faile. Šią informaciją pridedate prie „priklausomybių“ bloko, naudodamiesi bet kuria iš šių būdų:

  • Įgyvendinimas. Tai yra normali priklausomybė, kurios jums reikia kuriant projektą. Visoje priklausys „įgyvendinimas“ visi jūsų stato.
  • Bandymų atlikimas. Tai yra priklausomybė, reikalinga norint surinkti jūsų programos bandymo šaltinį ir paleisti JVM pagrįstus testus. Kai pažymėsite priklausomybę kaip „Testimplementation“, „Gradle“ žinos, kad įprastos versijos metu ji neturi vykdyti šios priklausomybės užduočių, o tai gali padėti sutrumpinti kūrimo laiką.
  • „Android“ įgyvendinimas. Tai yra priklausomybė, kurios reikia atliekant bandymus su įrenginiu, pavyzdžiui, „Espresso“ sistema yra įprasta „Android“ patobulinimas “.

Mes apibrėžiame nuotolinę priklausomybę, naudodami vieną iš aukščiau pateiktų raktinių žodžių, o po to seka priklausomybės grupės, vardo ir versijos atributus, pavyzdžiui:

priklausomybės {diegimo failasTree (režimas: libs, apima:) diegimas androidx.appcompat: appcompat: 1.0.2 diegimas androidx.constraintlayout: constraintlayout: 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}

Kelių APK generavimas: kaip sukurti sudėjimo variantus

Kartais gali tekti sukurti kelias programos versijas. Pvz., Galbūt norėsite išleisti nemokamą ir mokamą versiją, kurioje yra keletas papildomų funkcijų.

Tai yra kūrimo užduotis, kuriai gali padėti „Gradle“, todėl pažvelkime, kaip modifikavote kūrimo procesą, kad iš vieno projekto sukurtumėte kelis APK:

  • Atidarykite savo failą strings.xml ir ištrinkite pradinę programos pavadinimo eilutę.
  • Tada apibrėžkite kiekvieno norimo sukurti produkto skonio pavadinimus; šiuo atveju naudoju:

Mano nemokama programa Mano mokama programa

  • Atidarykite „AndroidManifest.xml“ failą ir pakeiskite „android“: label = ”@ string / app_name” tokiu:

android: label = "$ {appName}“

  • Atidarykite savo modulio lygio „build.gradle“ failą ir pridėkite šiuos dalykus prie „android“ bloko:

flavorDimensions "režimas" productFlavors {nemokama {dimensija "režimas" applicationIdSuffix ".free" manifestPlaceholders =} sumokėta {dimensija "režimas" applicationIdSuffix ". paid" manifestPlaceholders =}}}

Suskaidykime, kas čia vyksta:

  • skonio matmenys. „Android“ papildinys sukuria pastatymo variantus derinant skirtingų matmenų skonius. Čia mes kuriame skonio aspektą, kurį sudaro „nemokama“ ir „mokama“ mūsų programos versijos. Remiantis aukščiau pateiktu kodu, „Gradle“ sugeneruos keturis sudėjimo variantus: paidDebug, paidRelease, freeDebug ir freeRelease.
  • produktasFlavors. Čia nurodomas skonių ir jų nustatymų, kurie aukščiau pateiktame kode yra „mokami“ ir „nemokami“, sąrašas.
  • Nemokamas / mokamas. Tai yra mūsų dviejų produktų skonių pavadinimai.
  • Matmuo. Turime nurodyti parametro „dimensija“ vertę; šiuo atveju aš naudoju „režimą“.
  • „applicationIdSuffix“. Kadangi norime sukurti kelias programos versijas, turime kiekvienam APK suteikti unikalų programos identifikatorių.
  • manifestasValstytojai. Kiekvienas projektas turi vieną manifesto failą, kuriame yra svarbi informacija apie jūsų projekto konfigūraciją. Kurdami kelis kūrimo variantus, paprastai norėsite modifikuoti kai kurias iš šių „manifesto“ ypatybių kūrimo metu. „Gradle“ sąrankos failus galite naudoti norėdami nurodyti unikalius „Manifest“ įrašus kiekvienam „build“ variantui, kurie vėliau bus įterpti į „manifestą“ kuriant. Aukščiau pateiktame kode keičiame reikšmę „appName“, atsižvelgiant į tai, ar „Gradle“ kuria nemokamą, ar mokamą mūsų programos versiją.

Sukurti pasirinktinę „Gradle“ užduotį

Kartais gali reikėti pritaikyti kūrimo procesą naudojant „Gradle“ užduotys.

Užduotis yra pavadinta veiksmų visuma, kurią „Gradle“ vykdys atlikdama konstravimą, pavyzdžiui, generuodama „Javadoc“. „Gradle“ palaiko daugybę užduočių pagal numatytuosius nustatymus, tačiau taip pat galite sukurti pasirinktines užduotis, kurios gali būti naudingos, jei turite omenyje labai konkretų kūrimo instrukcijų rinkinį.

Šiame skyriuje mes sukursime pasirinktinę „Gradle“ užduotį, kuri pakartos visus mūsų projekto kūrimo variantus (paidDebug, paidRelease, freeDebug ir freeRelease), sukurs datos ir laiko antspaudą ir pridės šią informaciją prie kiekvieno sukurto APK.

Atidarykite savo modulio lygio „build.gradle“ failą ir pridėkite:

užduotis addDateAndTime () {// Pakartokite visus išvesties kūrimo variantus // android.applicationVariants.all {variant -> // Pakartokite visus APK failus // variant.outputs.all {output -> // Sukurkite egzempliorių Dabartinė data ir laikas, nurodytu formatu // def dateAndTime = new Data (). format („mmmm-MM-dd: HH-mm“) // Pridėkite šią informaciją prie APK failo vardo // def fileName = variantas. vardas + „_“ + dataAndTime + „.apk“ output.outputFileName = failo vardas}}}

Toliau turime pasakyti Gradle kada ji turėtų vykdyti šią užduotį. Sukūrimo metu „Gradle“ identifikuoja viską, ko reikia atsisiųsti, ir visas užduotis, kurias jis turi atlikti, ir sudėlioja jas nukreiptoje aciklinėje schemoje (DAG). Tada „Gradle“ vykdys visas šias užduotis pagal DAG nurodytą tvarką.

Savo programoje aš ketinu naudoti metodą „whenReady“, kuris užtikrins, kad mūsų užduotis bus iškviesta, kai tik DAG bus apgyvendintas, o „Gradle“ yra pasirengusi pradėti vykdyti savo užduotis.

Prie modulio lygio „build.gradle“ failo pridėkite:

// Vykdykite šią užduotį // gradle.taskGraph.whenReady {addDateAndTime}

Įdėkime mūsų pasirinktinę užduotį ir mūsų versijos varianto kodą išbandyti, sukuriant šį projektą naudojant „Gradle“ komandą.

Sukurkite savo projektą naudodami „Gradle“ įvyniojimą

Jūs išleidžiate „Gradle“ komandas naudodami „Gradle“ aplanką („gradlew“). Šis scenarijus yra tinkamiausias būdas pradėti „Gradle“ kūrimą, nes dėl jo pastatymo vykdymas tampa nepriklausomas nuo jūsų „Gradle“ versijos. Šis atskyrimas gali būti naudingas, jei bendradarbiaujate su kitais, kuriems nebūtinai turi būti įdiegta ta pati „Gradle“ versija.

Išduodami „Gradle“ įvyniojimo komandas, „Unique“ tipo operacinėms sistemoms, įskaitant „macOS“, naudosite „gradlew“, o „Windows“ - „gradlew.bat“. Aš turiu „Mac“, todėl naudosiu „greiferio“ komandas.

„Gradle“ komandas galite išduoti iš „Android Studio“:

  • „Android Studio“ įrankių juostoje pasirinkite „View“> „Windows“ įrankiai> Terminalas “. Atidaromas terminalo skydas IDE lango apačioje.
  • Įveskite šią komandą į terminalą:

./gradlew build

„Android Studio“ turėtų atrodyti taip:

  • Paspauskite klaviatūros klavišą „Enter“. Dabar „Gradle“ sukurs jūsų projektą.

„Gradle“ saugo visus sugeneruotus APK jūsų projekto „app / build / output“ / apk aplanke, todėl eikite į šį katalogą. Aplanke „APK“ turėtų būti keli aplankai ir poaplankiai; įsitikinkite, kad „Gradle“ sukūrė APK kiekvienam jūsų pastatymo variantui ir kad prie kiekvieno failo buvo pridėta teisinga data ir laikas.

Kokios dar yra „Gradle“ užduotys?

Be visų pasirinktinių užduočių, kurias galite sukurti, „Gradle“ palaiko iš anksto nustatytų užduočių sąrašą. Jei jums įdomu sužinoti, kokias užduotis galima atlikti, tada:

  • Atidarykite „Android Studio“ terminalo langą, jei jis dar nėra atidarytas („Android Studio“ įrankių juostoje pasirinkdami „Peržiūrėti>„ Windows “įrankiai> terminalas“).
  • Įveskite terminalą:

./gradlew -q užduotys

  • Paspauskite klaviatūros klavišą „Enter“.

Ši „užduočių“ užduotis bus paleista, o po kelių akimirkų terminalas parodys visų šiam projektui prieinamų užduočių sąrašą su trumpu kiekvienos užduoties aprašymu.

Išnaudokite daugiau „Gradle“ galimybių: pridėkite papildinius

„Gradle“ pristatomi su keliais iš anksto įdiegtais papildiniais, tačiau galite dar labiau išplėsti „Gradle“, pridėdami naujų priedų. Šie papildiniai leidžia „Android“ projektams pasiekti naujas užduotis, pavyzdžiui, „Java“ įskiepiai apima užduotis, leidžiančias kaupti „Java“ šaltinio kodą, vykdyti vieneto testus ir sukurti JAR failą, pvz., „CompileJava“, „compileText“, „jar“. „Javadoc“ ir „švarus“.

Norėdami pritaikyti papildinį, į savo modulio lygio „build.gradle“ failą pridėkite deklaraciją „Taikyti papildinį“, nurodydami papildinio pavadinimą. Pvz., Čia mes naudojame „Java“ papildinį:

pritaikyti papildinį: „Java“

Jei jums įdomu sužinoti, kokie papildiniai galimi, tada patikrinkite „Gradle“ papildinių paiešką, kuriame pateikiamas išsamus „Gradle“ papildinių registras.

„The Gradle Kotlin DSL“

Pagal numatytuosius nustatymus rašysite „Gradle“ scenarijų scenarijus naudodami „Groovy DSL“, tačiau jei esate vienas iš daugelio kūrėjų, priėmusių „Kotlin“ „Android“ plėtrai, tada galbūt norėsite, kad savo scenarijus rašytumėte Kotlin.

Kitaip nei „Groovy“, „Kotlin“ yra statiškai įvesta programavimo kalba, taigi, jei perjungsite, tada jūsų sudėjimo failai bus suderinami su „Android Studio“ automatinio užbaigimo ir šaltinio kodo naršymo funkcijomis. Be to, perėjimas iš „Groovy“ į „Kotlin“ reiškia, kad visame projekte naudosite tą pačią programavimo kalbą, o tai gali palengvinti plėtrą - ypač jei nesate per daug susipažinęs su „Groovy“!

Jei norite pradėti rašyti statymo logiką Kotlin, tada turėsite nustatyti „Gradle Kotlin DSL“ ir vykdyti instrukcijas, pateiktas perkėlimo vadove.

Apvyniojimas

Šiame straipsnyje mes tyrėme „Android Studio“ sukurtą automatikos ir priklausomybių valdymo įrankį. Mes ištyrėme, kaip „Gradle“ automatizuoja kūrimo procesą be galo, ir kaip jūs galite modifikuoti kūrimo procesą redaguodami projekto „Gradle“ kūrimo failus, įskaitant sukurdami pasirinktines „Gradle“ užduotis ir sugeneruodami kelis kūrimo variantus iš vieno projekto.

Ar pratęsėte „Gradle“, kad automatizuotumėte kitas „Android“ kūrimo proceso dalis? Praneškite mums toliau pateiktuose komentaruose!

Kalbant apie žaidimu, tik kelio kompanijo yra tokio atpažįtamo kaip „Razer“. Vių pirma, bendrovė žaidimų nešiojamieji kompiuteriai yra vieni populiariauių kietiem žaidėjam, keliaujantiem....

„Razer Blade 15 Advanced“ erija dabar iūloma „RTX 2060“, „RTX 2070“ u „Max-Q“ ir „RTX 2080“ u „Max-Q“ konfigūracijomi. Naujoji „RTX 20“ šeima, palyginti u eneniai „Nvidia“ GPU, yra keleta patobulinimų...

Portalo Straipsniai. T