Mastering Gradle pre Android: Zmeňte úlohy a Kotlin

Autor: Lewis Jackson
Dátum Stvorenia: 11 Smieť 2021
Dátum Aktualizácie: 1 V Júli 2024
Anonim
Mastering Gradle pre Android: Zmeňte úlohy a Kotlin - Aplikácie
Mastering Gradle pre Android: Zmeňte úlohy a Kotlin - Aplikácie

Obsah


Namiesto Java, XML alebo Kotlin tieto súbory zostavenia Gradle používajú jazyk špecifický pre doménu Groovy (DSL). Ak nie ste oboznámení s Groovy, potom sa pozrieme na každý z týchto súborov Gradle, ktorý vás zaujíma, takže na konci tohto článku vám bude príjemné čítať a písať jednoduchý Groovy kód.

Cieľom programu Gradle je uľahčiť váš život poskytnutím sady predvolených nastavení, ktoré môžete často používať s minimálnou manuálnou konfiguráciou - keď ste pripravení zostaviť svoj projekt, jednoducho stlačte tlačidlo „Spustiť“ pre Android Studio a Gradle začne proces zostavovania. pre teba.

Aj keď prístup spoločnosti Gradle k konvencii nad konfiguráciou, ak jej predvolené nastavenia úplne nevyhovujú vašim potrebám, môžete prispôsobiť, nakonfigurovať a rozšíriť proces zostavovania a dokonca vylepšiť nastavenia aplikácie Gradle tak, aby vykonávali veľmi špecifické úlohy.


Pretože skripty Gradle sú obsiahnuté v ich vlastných súboroch, proces zostavovania svojej aplikácie môžete kedykoľvek zmeniť bez toho, aby ste sa museli dotknúť zdrojového kódu svojej aplikácie. V tomto tutoriále upravíme proces zostavovania pomocou príchutí, variantov zostavenia a vlastnej úlohy Gradle - všetko bez niekedy dotýkať sa nášho kódu aplikácie.

Preskúmanie súborov zostavy Gradle

Zakaždým, keď vytvoríte projekt, Android Studio vygeneruje rovnakú kolekciu stavacích súborov Gradle. Aj keď importujete existujúci projekt do aplikácie Android Studio, bude to stále vytvorte presne tie isté súbory Gradle a pridajte ich do svojho projektu.

Ak chcete začať lepšie porozumieť Gradle a Groovyho syntaxi, poďme sa pozrieť na jednotlivé súbory, ktoré sa používajú v systéme Gradle.


1. settings.gradle

V súbore settings.gradle môžete definovať všetky moduly svojej aplikácie podľa názvu pomocou kľúčového slova „zahrnúť“. Ak by ste napríklad mali projekt pozostávajúci z „aplikácie“ a „druhého modulu“, potom by súbor súboru settings.gradle vyzeral takto:

include: app,: secondmodule rootProject.name = MyProject

V závislosti od veľkosti projektu môže byť tento súbor podstatne dlhší.

Počas procesu zostavovania program Gradle preskúma obsah nastavení vášho projektu.gradle a identifikuje všetky moduly, ktoré musí zahrnúť do procesu zostavenia.

2. build.gradle (úroveň projektu)

Súbor build.gradle na úrovni projektu sa nachádza v koreňovom adresári projektu a obsahuje nastavenia, na ktoré sa bude vzťahovať všetko vaše moduly (tiež označované ako „projekty“ od spoločnosti Gradle).

Tento súbor by ste mali použiť na definovanie všetkých doplnkov, úložísk, závislostí a možností konfigurácie, ktoré sa vzťahujú na každý modul v rámci vášho projektu Android. Upozorňujeme, že ak v súbore build.gradle na úrovni projektu definujete akékoľvek úlohy Gradle, je stále možné tieto úlohy prepísať alebo rozšíriť pre jednotlivé moduly úpravou ich príslušných module-level build.gradle súbor.

Typický súbor build.gradle na úrovni projektu bude vyzerať asi takto:

buildscript {repositories {google () jcenter ()} závislosti {classpath com.android.tools.build:gradle:3.5.0-alpha06 // POZNÁMKA: Nezahrievajte tu závislosť aplikácií; patria // do jednotlivých súborov build.gradle súborov}} allprojects {repositories {google () jcenter ()}} task clean (type: Delete) {delete rootProject.buildDir}

Tento súbor build.gradle na úrovni projektu je rozdelený do nasledujúcich blokov:

  • Buildscript. Obsahuje nastavenia, ktoré sú potrebné na vykonanie zostavenia.
  • Úložisko. Spoločnosť Gradle je zodpovedná za lokalizáciu závislostí vášho projektu a za ich sprístupnenie vo vašej zostave. Nie všetky závislosti však pochádzajú z toho istého úložiska, takže budete musieť definovať všetky úložiská, ktoré by mal prehľadávať program Gradle, aby ste mohli získať závislosti na vašom projekte.
  • Závislosti. Táto časť obsahuje závislosť vašich doplnkov, ktoré sa stiahnu a uložia do vašej lokálnej vyrovnávacej pamäte. Mal by si nie definovať všetky závislosti modulu v tomto bloku.
  • Allprojects. Na tomto mieste určíte úložiská, ktoré by mali byť k dispozícii všetko modulov vášho projektu.

3. build.gradle (úroveň modulu)

Toto je súbor build.gradle na úrovni modulu, ktorý je prítomný v každom module v rámci vášho projektu. Ak váš projekt Android pozostáva z viacerých modulov, bude pozostávať aj z viacerých súborov build.gradle na úrovni modulov.

Každý súbor build.gradle na úrovni modulu obsahuje názov balíka projektu, názov verzie a kód verzie plus minimálnu a cieľovú súpravu SDK pre tento konkrétny modul.

Súbor build.gradle na úrovni modulu môže mať aj svoju vlastnú jedinečnú množinu pokynov na zostavenie a závislostí. Napríklad, ak vytvárate aplikáciu s komponentom Wear OS, váš projekt Android Studio bude pozostávať zo samostatného modulu smartfón / tablet a modulu Wear - keďže tieto moduly sa zameriavajú na úplne iné zariadenia, tieto moduly sa výrazne líšia závislosti!

Základný súbor build.gradle na úrovni modulu bude zvyčajne vyzerať asi takto:

použiť doplnok: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.speechtotext" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"} nepravdepodobný verzia {} getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} závislosti {implementačný súborTree (adresár: libs, zahŕňajú:) implementácia androidx.appcompat: appcompat: 1.0.2 implementácia 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}

Pozrime sa bližšie na každú z týchto sekcií:

  • použiť doplnok. Toto je zoznam doplnkov potrebných na vytvorenie tohto modulu. Doplnok com.android.application je potrebný na nastavenie procesu zostavovania špecifického pre Android, takže sa pridá automaticky.
  • Android. Tu by ste mali umiestniť všetky možnosti špecifické pre platformu modulu.
  • compileSdkVersion. Toto je úroveň API, s ktorou je tento modul zostavený. Funkcie z rozhrania API, ktoré sú vyššie ako táto hodnota, nemôžete použiť.
  • buildToolsVersion. Označuje verziu kompilátora. V Stupni 3.0.0 a vyššom je buildToolsVersion voliteľný; Ak nezadáte hodnotu buildToolsVersion, Android Studio bude predvolene nastavená na najnovšiu verziu nástrojov na tvorbu.
  • defaultConfig. Obsahuje možnosti, ktoré sa použijú na všetky verzie verzií vašej aplikácie, napríklad na zostavenie ladenia a vydania.
  • applicationID. Toto je jedinečný identifikátor vašej aplikácie.
  • parameter versionCode. Tento parameter definuje najnižšiu úroveň API, ktorú tento modul podporuje.
  • targetSdkVersion. Toto je maximálna úroveň API, s ktorou bola vaša aplikácia testovaná. V ideálnom prípade by ste mali svoju aplikáciu otestovať pomocou najnovšieho rozhrania API, čo znamená, že hodnota targetSdkVersion sa vždy bude rovnať hodnote compileSdkVersion.
  • versionCode. Toto je číselná hodnota pre vašu verziu aplikácie.
  • versionName. Toto je užívateľsky prívetivý reťazec, ktorý predstavuje verziu vašej aplikácie.
  • buildTypes. V predvolenom nastavení Android podporuje dva typy zostavenia: ladenie a uvoľnenie. Bloky „ladenie“ a „uvoľnenie“ môžete použiť na zadanie nastavení špecifických pre vašu aplikáciu.
  • závislostí. Na tomto mieste definujete knižnice, od ktorých závisí tento modul.

Vyhlásenie o závislostiach vášho projektu: Miestne knižnice

Svojim projektom v systéme Android môžete sprístupniť ďalšie funkcie pridaním jednej alebo viacerých závislostí na projekte. Tieto závislosti môžu byť lokálne alebo môžu byť uložené vo vzdialenom úložisku.

Ak chcete deklarovať závislosť od miestneho súboru JAR, musíte tento JAR pridať do adresára „libs“ vášho projektu.

Potom môžete upraviť súbor build.gradle na úrovni modulu a vyhlásiť závislosť od tohto súboru. Napríklad tu deklarujeme závislosť od „Mylibrary“ JAR.

implementačné súbory (libs / mylibrary.jar)

Ak váš priečinok „libs“ obsahuje niekoľko JAR, potom môže byť jednoduchšie uviesť, že váš projekt závisí od všetkých súborov umiestnených v priečinku „libs“, napríklad:

implementačný súborTree (adresár: libs, obsahuje:)

Pridanie závislosti od zostavenia: Vzdialené úložiská

Ak sa knižnica nachádza vo vzdialenom úložisku, budete musieť vykonať nasledujúce kroky:

  • Definujte úložisko, v ktorom sa táto závislosť nachádza.
  • Vyhlásiť individuálnu závislosť.

Pripája sa k vzdialenému úložisku

Prvým krokom je povedať spoločnosti Gradle, ktoré úložisko (alebo úložiská) je potrebné skontrolovať, aby sa zistili všetky závislosti vášho projektu. Napríklad:

archívy {google () jcenter ()}}

V tomto riadku „jcenter ()“ je zabezpečené, že Gradle skontroluje úložisko JCenter, čo je bezplatné verejné úložisko hostené v bintray.

Ak vy alebo vaša organizácia udržiavate osobný archív, mali by ste do vyhlásenia o závislosti pridať adresu URL tohto archívu. Ak je úložisko chránené heslom, musíte uviesť svoje prihlasovacie údaje, napríklad:

archívy {mavenCentral () maven {// Konfigurácia cieľovej adresy URL // url "http://repo.mycompany.com/myprivaterepo"} maven {poverenia {meno používateľa myUsername heslo myPassword} url "http://repo.mycompany.com / myprivaterepo "}

Ak je závislosť prítomná vo viacerých úložiskách, Gradle vyberie „najlepšiu“ verziu tejto závislosti na základe faktorov, ako je vek každého úložiska a statická verzia.

Prehlásenie o vzdialenej závislosti

Ďalším krokom je vyhlásenie závislosti v súbore build.gradle na úrovni modulu. Tieto informácie pridáte do bloku „závislosti“ pomocou niektorej z nasledujúcich možností:

  • Implementácia. Toto je normálna závislosť, ktorú potrebujete pri vytváraní projektu. Vo všetkých bude prítomná „implementačná“ závislosť všetko vaše zostavenie.
  • Testimplementation. Toto je závislosť, ktorá sa vyžaduje na zostavenie zdroja testovania vašej aplikácie a spustenie testov založených na JVM. Keď označíte závislosť ako „Testimplementation“, Gradle bude vedieť, že pre túto závislosť nemusí spúšťať úlohy počas normálneho zostavovania, čo môže pomôcť skrátiť čas zostavenia.
  • Androidtestimplementation. Toto je závislosť, ktorá sa vyžaduje pri vykonávaní testov na zariadení, napríklad rámec Espresso je bežným „doplnením Android“.

Definujeme vzdialenú závislosť pomocou jedného z vyššie uvedených kľúčových slov, nasledované atribútmi skupiny, názvu a verzie závislosti, napríklad:

závislosti {implementačný súborTree (adresár: libs, zahŕňajú:) implementácia androidx.appcompat: appcompat: 1.0.2 implementácia 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}

Generovanie viacerých súborov APK: Ako vytvoriť varianty zostavenia

Niekedy môže byť potrebné vytvoriť viac verzií vašej aplikácie. Môžete napríklad vydať bezplatnú verziu a platenú verziu, ktorá obsahuje niektoré ďalšie funkcie.

Toto je úloha zostavenia, s ktorou vám Gradle môže pomôcť, preto sa pozrime, ako by ste zmenili proces zostavenia tak, aby ste z jedného projektu vytvorili viac súborov APK:

  • Otvorte súbor strings.xml a odstráňte pôvodný reťazec názvu aplikácie.
  • Ďalej definujte názvy jednotlivých príchutí produktu, ktoré chcete vytvoriť; v tomto prípade používam:

Moja bezplatná aplikácia Moja platená aplikácia

  • Otvorte súbor AndroidManifest.xml a nahraďte Android: label = ”@ string / app_name” za:

android: label = "$ {appname}"

  • Otvorte súbor build.gradle na úrovni modulu a do bloku „Android“ pridajte nasledujúce položky:

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

Pozrime sa, čo sa tu deje:

  • flavorDimensions. Doplnok Android vytvára varianty zostavenia kombináciou príchutí z rôznych dimenzií. Tu vytvárame dimenziu arómy pozostávajúcu z „bezplatnej“ a „platenej“ verzie našej aplikácie. Na základe vyššie uvedeného kódu vygeneruje Gradle štyri varianty zostavenia: paidDebug, paidRelease, freeDebug a freeRelease.
  • productFlavors. Toto určuje zoznam aróm a ich nastavení, ktoré sú vo vyššie uvedenom kóde „platené“ a „bezplatné“.
  • Zadarmo / platené. Toto sú názvy našich dvoch príchutí produktu.
  • Rozmer. Musíme zadať hodnotu parametra „dimenzia“; v tomto prípade používam „režim“.
  • applicationIdSuffix. Keďže chceme vytvoriť viac verzií našej aplikácie, musíme každému APK prideliť jedinečný identifikátor aplikácie.
  • manifestPlaceholders. Každý projekt má jeden súbor manifestu obsahujúci dôležité informácie o konfigurácii vášho projektu. Pri vytváraní viacerých variantov zostavenia budete zvyčajne chcieť upraviť niektoré z týchto vlastností manifestu v čase zostavenia. Pomocou súborov Gradle build môžete určiť jedinečné položky Manifestu pre každú variantu buildu, ktoré sa potom vložia do vášho manifestu v čase zostavenia. Vo vyššie uvedenom kóde upravujeme hodnotu „appName“ v závislosti od toho, či spoločnosť Gradle buduje bezplatnú alebo platenú verziu našej aplikácie.

Vytvorenie vlastnej úlohy Gradle

Niekedy budete musieť prispôsobiť proces zostavovania pomocou Gradle úlohy.

Úloha je pomenovaná zbierka akcií, ktoré Gradle vykoná, keď vykoná zostavenie, napríklad vygeneruje Javadoc. Stupnica v predvolenom nastavení podporuje veľa úloh, ale môžete tiež vytvoriť vlastné úlohy, ktoré sa môžu hodiť, ak máte na mysli veľmi špecifickú sadu pokynov na zostavenie.

V tejto sekcii vytvoríme vlastnú úlohu Gradle, ktorá bude opakovať všetky varianty zostavenia nášho projektu (paidDebug, paidRelease, freeDebug a freeRelease), vytvoríme dátum a časovú pečiatku a potom tieto informácie pripojíme ku každému vygenerovanému súboru APK.

Otvorte súbor build.gradle na úrovni modulu a pridajte nasledujúce:

task addDateAndTime () {// Iterovať cez všetky varianty zostavenia výstupu // android.applicationVariants.all {variant -> // Iterovať cez všetky súbory APK // variant.outputs.all {output -> // Vytvorenie inštancie aktuálny dátum a čas v určenom formáte // def dateAndTime = new Date (). format ("rrrr-MM-dd: HH-mm") // Pripojiť tieto informácie k názvu súboru APK // def fileName = variant. name + "_" + dateAndTime + ".apk" output.outputFileName = fileName}}}

Ďalej musíme povedať Gradle kedy mala by vykonať túto úlohu. Počas zostavovania Gradle identifikuje všetko, čo potrebuje stiahnuť a všetky úlohy, ktoré musí vykonať, a usporiada ich do riadeného acyklického grafu (DAG). Gradle potom vykoná všetky tieto úlohy podľa poradia definovaného v DAG.

Pokiaľ ide o moju aplikáciu, budem používať metódu „WhenReady“, ktorá zabezpečí, že naša úloha bude volaná po obsadení DAG a Gradle je pripravený začať vykonávať svoje úlohy.

Pridajte do súboru build.gradle na úrovni modulu:

// Vykonajte túto úlohu // gradle.taskGraph.whenReady {addDateAndTime}

Dajme svoju vlastnú úlohu a náš kód zostavenia variantu na skúšku vytvorením tohto projektu pomocou príkazu Gradle.

Zostavte svoj projekt pomocou obálky Gradle

Príkazy Gradle vydávate pomocou obálky Gradle („gradlew“). Tento skript je preferovaný spôsob, ako začať s zostavením Gradle, pretože robí zostavenie nezávislým od vašej verzie Gradle. Toto oddelenie môže byť užitočné, ak spolupracujete s ostatnými, ktorí nemusia mať nevyhnutne nainštalovanú rovnakú verziu Gradle.

Pri vydávaní príkazov wrapperu Gradle budete používať operačné systémy typu gradlew pre unixové operačné systémy vrátane makier a systém gradlew.bat pre operačné systémy Windows. Mám Mac, takže budem používať príkazy „gradlew“.

Príkazy Gradle môžete zadávať z aplikácie Android Studio:

  • Na paneli s nástrojmi Android Studio vyberte „Zobraziť> Nástroje Windows> Terminál“. Týmto sa otvorí panel Terminál pozdĺž spodnej časti okna IDE.
  • Do terminálu zadajte nasledujúci príkaz:

./gradlew build

Android Studio by malo vyzerať asi takto:

  • Na klávesnici stlačte kláves „Enter“. Spoločnosť Gradle teraz zostaví váš projekt.

Aplikácia Gradle ukladá všetky vygenerované súbory APK do adresára aplikácie / build / output / apk vášho projektu, takže prejdite do tohto adresára. Priečinok „APK“ by mal obsahovať niekoľko priečinkov a podpriečinkov; uistite sa, že Gradle vygeneroval súbor APK pre každú z vašich variantov zostavenia a že ku každému súboru boli pridané správne informácie o dátume a čase.

Aké ďalšie úlohy súvisiace s Gradle sú k dispozícii?

Okrem všetkých vlastných úloh, ktoré by ste mohli vytvoriť, Gradle podporuje aj zoznam preddefinovaných úloh, ktoré nie sú v balení. Ak ste zvedaví, aké úlohy sú k dispozícii, postupujte nasledovne:

  • Ak ešte nie je otvorené okno Terminálu aplikácie Android Studio (výberom položky Zobraziť> Nástroje Windows> Terminál na paneli s nástrojmi Android Studio).
  • Do terminálu napíšte:

./gradlew -q úlohy

  • Na klávesnici stlačte kláves „Enter“.

Táto úloha „úlohy“ sa teraz spustí a po niekoľkých okamihoch terminál zobrazí zoznam všetkých úloh, ktoré sú k dispozícii pre tento projekt, spolu so stručným popisom každej úlohy.

Získajte viac z Gradle: Pridávanie doplnkov

Gradle sa dodáva s predinštalovaným počtom doplnkov, ale môžete ho rozšíriť pridaním nových doplnkov. Tieto doplnky umožňujú prístup k novým úlohám pre vaše projekty s Androidom. Napríklad doplnok Java obsahuje úlohy, ktoré vám umožňujú zostaviť zdrojový kód Java, spustiť testy jednotiek a vytvoriť súbor JAR, napríklad „compileJava“, „compileText“, „jar“. „Javadoc“ a „čistý“.

Ak chcete použiť doplnok, do súboru build.gradle na úrovni modulu pridajte vyhlásenie „Apply plugin“ a za ním názov doplnku. Napríklad tu používame doplnok Java:

Použiť plugin: java

Ak ste zvedaví, aké doplnky sú k dispozícii, pozrite sa na vyhľadávanie doplnkov Gradle, ktoré poskytuje komplexný register doplnkov Gradle.

Gradle Kotlin DSL

V predvolenom nastavení budete písať svoje skriptovacie skripty Gradle pomocou Groovy DSL, ale ak ste jedným z mnohých vývojárov, ktorí prijali Kotlin pre vývoj Androidu, môžete radšej napísať svoje skriptovacie skripty do Kotlin.

Na rozdiel od Groovy je Kotlin staticky naprogramovaný programovací jazyk, takže ak prepnete prepínač, vaše súbory zostavy budú kompatibilné s funkciami automatického dopĺňania a navigácie zdrojového kódu aplikácie Android Studio. Navyše prechod z Groovy na Kotlin znamená, že budete používať rovnaký programovací jazyk v celom projekte, čo môže vývoj uľahčiť - najmä ak nie ste príliš oboznámení s Groovy!

Ak chcete začať písať svoju logiku zostavovania v spoločnosti Kotlin, musíte nastaviť DSL Gradle Kotlin a postupujte podľa pokynov v sprievodcovi migráciou.

Zabalenie

V tomto článku sme preskúmali nástroj na automatizáciu zostavovania a správy závislostí aplikácie Android Studio. Preskúmali sme, ako spoločnosť Gradle automatizuje proces zostavovania hneď po vybalení z krabice a ako môžete proces zostavenia upraviť úpravou súborov zostavy Gradle vo svojom projekte vrátane vytvorenia vlastných úloh Gradle a vygenerovania viacerých variantov zostavenia z jedného projektu.

Rozšírili ste aplikáciu Gradle na automatizáciu ďalších častí procesu zostavovania systému Android? Dajte nám vedieť v komentároch nižšie!

10 tipov a trikov Adobe Lightroom

Laura McKinney

V Júli 2024

martphony môžu vytvárať úžané fotografie a Lightroom je jedným z najlepších mobilných nátrojov na úpravu fotografií, ale používanie aplikáci...

V Blizzcon dúfali fanúšikovia Diabla o niečo nové - možno DLC alebo možno dokonca úplne ohláenie novej hry Diablo. Dotali nové oznámenie o hre Diablo, ale nie to, čo...

Odporúčame Vám Vidieť