Mastering Gradle pro Android: Úkoly a Kotlin

Autor: Lewis Jackson
Datum Vytvoření: 11 Smět 2021
Datum Aktualizace: 1 Červenec 2024
Anonim
Mastering Gradle pro Android: Úkoly a Kotlin - Aplikace
Mastering Gradle pro Android: Úkoly a Kotlin - Aplikace

Obsah


Místo souborů Java, XML nebo Kotlin tyto soubory sestavení Gradle používají jazyk založený na doméně Groovy (DSL). Pokud nejste obeznámeni s Groovy, podíváme se na každý z těchto souborů Gradle podle jednotlivých řádků, takže na konci tohoto článku si budete moci přečíst a napsat jednoduchý Groovy kód.

Cílem Gradle je usnadnit váš život poskytnutím sady výchozích nastavení, která můžete často používat s minimální ruční konfigurací - když jste připraveni sestavit svůj projekt, jednoduše stiskněte tlačítko „Spustit“ v Android Studio a Gradle zahájí proces sestavení pro tebe.

I přes přístup společnosti Gradle k „konvenci o konfiguraci“, pokud její výchozí nastavení zcela nevyhovuje vašim potřebám, můžete přizpůsobit, nakonfigurovat a rozšířit proces sestavování a dokonce vyladit nastavení Gradle tak, aby vykonával velmi specifické úkoly.


Protože skripty Gradle jsou obsaženy v jejich vlastních souborech, můžete proces vytváření aplikace kdykoli změnit, aniž byste se museli dotknout zdrojového kódu aplikace. V tomto tutoriálu upravíme proces sestavení pomocí příchutí, variant sestavení a vlastního úkolu Gradle - vše bez vůbec dotýká se našeho kódu aplikace.

Prozkoumání souborů sestavení Gradle

Pokaždé, když vytvoříte projekt, Android Studio vygeneruje stejnou sbírku souborů sestavení Gradle. I když importujete existující projekt do Android Studio, bude to ještě pořád vytvořte tyto přesně stejné soubory Gradle a přidejte je do svého projektu.

Chcete-li začít lépe porozumět Gradle a Groovy syntaxi, pojďme se podívat na jednotlivé soubory sestavení Gradle Android po jednotlivých řádcích.


1. settings.gradle

V souboru settings.gradle můžete definovat všechny moduly aplikace podle názvu pomocí klíčového slova „zahrnout“. Pokud byste například měli projekt sestávající z „aplikace“ a „secondModule“, pak by váš soubor settings.gradle vypadal asi takto:

include: app,: secondmodule rootProject.name = MyProject

V závislosti na velikosti projektu může být tento soubor výrazně delší.

Během procesu sestavení Gradle prozkoumá obsah nastavení vašeho projektu.gradle a identifikuje všechny moduly, které musí zahrnout do procesu sestavení.

2. build.gradle (úroveň projektu)

Soubor build.gradle na úrovni projektu je umístěn v kořenovém adresáři projektu a obsahuje nastavení, na která se bude vztahovat Všechno vaše moduly (označované také jako „projekty“ od společnosti Gradle).

Tento soubor byste měli použít k definování všech doplňků, úložišť, závislostí a možností konfigurace, které se vztahují na každý modul v rámci vašeho projektu Android. Všimněte si, že pokud v souboru build.gradle na úrovni projektu definujete jakékoli úlohy Gradle, je stále možné tyto úkoly přepsat nebo rozšířit pro jednotlivé moduly úpravou jejich příslušných na úrovni modulu build.gradle soubor.

Typický soubor build.gradle na úrovni projektu bude vypadat asi takto:

buildscript {repositories {google () jcenter ()} závislosti {classpath com.android.tools.build:gradle:3.5.0-alpha06 // POZNÁMKA: Nepokládejte zde závislosti aplikací; patří // v jednotlivých souborech build.gradle}} allprojects {repositories {google () jcenter ()}} task clean (type: Delete) {delete rootProject.buildDir}

Tento soubor build.gradle na úrovni projektu je rozdělen do následujících bloků:

  • Buildscript. To obsahuje nastavení, která jsou nutná k provedení sestavení.
  • Repozitáře. Gradle je zodpovědný za lokalizaci závislostí vašeho projektu a jejich zpřístupnění ve vašem sestavení. Ne všechny závislosti však pocházejí ze stejného úložiště, takže budete muset definovat všechna úložiště, která by měl Gradle hledat, abyste mohli získat závislosti na projektu.
  • Závislosti. Tato část obsahuje závislosti na pluginu, které jsou staženy a uloženy v místní mezipaměti. Měl by jsi ne definovat jakékoli závislosti modulu v tomto bloku.
  • Všechny projekty. Zde definujete úložiště, které by mělo být k dispozici Všechno modulů vašeho projektu.

3. build.gradle (úroveň modulu)

Toto je soubor build.gradle na úrovni modulu, který je přítomen v každém modulu v rámci vašeho projektu. Pokud se váš projekt Android skládá z několika modulů, bude se skládat také z více souborů build.gradle na úrovni modulů.

Každý soubor build.gradle na úrovni modulu obsahuje název balíčku projektu, název verze a kód verze plus minimální a cílovou sadu SDK pro tento konkrétní modul.

Soubor build.gradle na úrovni modulu může mít také svou vlastní jedinečnou sadu instrukcí a závislostí na sestavení. Pokud například vytváříte aplikaci s komponentou Wear OS, bude váš projekt Android Studio sestávat ze samostatného modulu smartphonu / tabletu a modulu Wear - protože se zaměřují na úplně jiná zařízení, tyto moduly se výrazně liší závislosti!

Základní soubor build.gradle na úrovni modulu bude obvykle vypadat takto:

aplikujte plugin: 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"} false releaseETypeEndEquifyE} getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} závislosti {implementační souborTree (adresář: libs, zahrnují:) implementace androidx.appcompat: appcompat: 1.0.2 implementace 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}

Podívejme se blíže na každou z těchto sekcí:

  • použít plugin. Toto je seznam pluginů potřebných k sestavení tohoto modulu. Doplněk com.android.application je nezbytný pro nastavení procesu sestavování specifického pro Android, takže je přidán automaticky.
  • android. Zde byste měli umístit všechny možnosti specifické pro platformu modulu.
  • compileSdkVersion. Toto je úroveň API, se kterou je tento modul kompilován. Nelze použít funkce z API vyšší než tato hodnota.
  • buildToolsVersion. Označuje verzi kompilátoru. Ve verzi 3.0 a vyšší je buildToolsVersion volitelný; Pokud nezadáte hodnotu buildToolsVersion, bude Android Studio výchozí na nejnovější verzi nástrojů pro tvorbu.
  • defaultConfig. To obsahuje možnosti, které budou použity ve všech verzích sestavení aplikace, jako jsou ladicí a uvolňovací verze.
  • applicationId. Toto je jedinečný identifikátor vaší aplikace.
  • minSdkVersion. Tento parametr definuje nejnižší úroveň API, kterou tento modul podporuje.
  • targetSdkVersion. Toto je maximální úroveň API, se kterou byla vaše aplikace testována. V ideálním případě byste měli vyzkoušet vaši aplikaci pomocí nejnovějšího API, což znamená, že hodnota targetSdkVersion bude vždy rovna hodnotě compileSdkVersion.
  • versionCode. Toto je číselná hodnota pro vaši verzi aplikace.
  • versionName. Jedná se o uživatelsky přívětivý řetězec, který představuje vaši verzi aplikace.
  • buildTypes. Ve výchozím nastavení Android podporuje dva typy sestavení: ladění a uvolnění. Bloky „debug“ a „release“ můžete použít k určení nastavení specifických pro vaši aplikaci.
  • závislosti. Zde definujete knihovny, na kterých tento modul závisí.

Prohlášení závislostí projektu: Místní knihovny

Svým projektům Android můžete zpřístupnit další funkce přidáním jedné nebo více závislostí na projektu. Tyto závislosti mohou být místní nebo mohou být uloženy ve vzdáleném úložišti.

Chcete-li deklarovat závislost na místním souboru JAR, musíte přidat tento JAR do adresáře „libs“ vašeho projektu.

Poté můžete upravit soubor build.gradle na úrovni modulu a deklarovat závislost na tomto souboru. Například zde deklarujeme závislost na „Mylibrary“ JAR.

implementační soubory (libs / mylibrary.jar)

Alternativně, pokud vaše složka „libs“ obsahovala několik JAR, pak by mohlo být jednodušší říci, že váš projekt závisí na všech souborech umístěných ve složce „libs“, například:

implementační souborTree (dir: libs, include:)

Přidání závislosti na sestavení: Vzdálená úložiště

Pokud je knihovna umístěna ve vzdáleném úložišti, musíte provést následující kroky:

  • Definujte úložiště, ve kterém je tato závislost umístěna.
  • Prohlásit individuální závislost.

Připojení ke vzdálenému úložišti

Prvním krokem je říct Gradle, které úložiště (nebo úložiště) je třeba zkontrolovat, aby bylo možné načíst všechny závislosti vašeho projektu. Například:

repozitáře {google () jcenter ()}}

Zde řádek „jcenter ()“ zajišťuje, že Gradle zkontroluje úložiště JCenter, což je bezplatné veřejné úložiště hostované v bintray.

Pokud také vy nebo vaše organizace spravujete osobní úložiště, měli byste do prohlášení o závislosti přidat adresu URL tohoto úložiště. Pokud je úložiště chráněno heslem, musíte také zadat své přihlašovací údaje, například:

repozitáře {mavenCentral () maven {// Nakonfigurujte cílovou URL // url "http://repo.mycompany.com/myprivaterepo"} maven {pověření {username myUsername password myPassword} url "http://repo.mycompany.com / myprivaterepo "}

Pokud je závislost přítomna ve více úložištích, vybere Gradle „nejlepší“ verzi této závislosti na základě faktorů, jako je věk každého úložiště a statická verze.

Prohlášení vzdálené závislosti

Dalším krokem je deklarace závislosti v souboru build.gradle na úrovni modulu. Tyto informace přidáte do bloku „závislosti“ pomocí některého z následujících:

  • Implementace. Toto je běžná závislost, kterou potřebujete při vytváření projektu. „Implementační“ závislost bude přítomna napříč Všechno vaše sestavení.
  • Testimplementation. Jedná se o závislost, která je vyžadována ke kompilaci zdroje testu aplikace a spuštění testů založených na JVM. Když označíte závislost jako „Testimplementation“, Gradle bude vědět, že pro tuto závislost nemusí spouštět úkoly během normálního sestavování, což může zkrátit dobu sestavení.
  • Androidtestimplementation. Jedná se o závislost, která je vyžadována při provádění testů na zařízení, například rámec Espresso je běžný „Androidtestimplementation“.

Definujeme vzdálenou závislost pomocí jednoho z výše uvedených klíčových slov, následované atributy skupiny závislostí, názvu a verze, například:

závislosti {implementace fileTree (dir: libs, include:) implementace androidx.appcompat: appcompat: 1.0.2 implementace 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}

Generování více APK: Jak vytvořit varianty sestavení

Někdy budete možná muset vytvořit více verzí své aplikace. Můžete například vydat bezplatnou verzi a placenou verzi, která obsahuje některé další funkce.

Toto je úkol sestavení, se kterým vám Gradle pomůže, takže se podívejme, jak byste změnili proces sestavení tak, aby vytvořil více APK z jednoho projektu:

  • Otevřete soubor strings.xml a odstraňte původní řetězec názvu aplikace.
  • Dále definujte názvy jednotlivých příchutí produktu, které chcete vytvořit; v tomto případě používám:

Moje bezplatná aplikace Moje placená aplikace

  • Otevřete soubor AndroidManifest.xml a nahraďte Android: label = ”@ string / app_name” za:

android: label = "$ {appName}"

  • Otevřete soubor build.gradle na úrovni modulu a do bloku „android“ přidejte následující:

flavorDimensions "mode" productFlavors {free {dimension "mode" applicationIdSuffix ".free" manifestPlaceholders =} placený režim {dimension "mode" applicationIdSuffix ".paid" manifPlaceholders =}}}}

Podívejme se, co se tady děje:

  • flavorDimensions. Plugin pro Android vytváří varianty sestavení kombinací příchutí z různých dimenzí. Tady vytváříme dimenzi příchutí sestávající z „bezplatné“ a „placené“ verze naší aplikace. Na základě výše uvedeného kódu vygeneruje Gradle čtyři varianty sestavení: paidDebug, paidRelease, freeDebug a freeRelease.
  • productFlavors. Toto určuje seznam příchutí a jejich nastavení, které jsou ve výše uvedeném kódu „placené“ a „zdarma“.
  • Zdarma / placené. Toto jsou názvy našich dvou příchutí produktu.
  • Dimenze. Musíme zadat hodnotu parametru „dimenze“; v tomto případě používám „režim“.
  • applicationIdSuffix. Protože chceme vytvořit více verzí naší aplikace, musíme každému APK dát jedinečný identifikátor aplikace.
  • manifestPlaceholder. Každý projekt má jeden soubor manifestu obsahující důležité informace o konfiguraci vašeho projektu. Při vytváření více variant sestavení budete obvykle chtít upravit některé z těchto vlastností manifestu v době sestavení. Pomocí souborů Gradle build můžete určit jedinečné položky Manifestu pro každou variantu buildu, které se poté vloží do vašeho manifestu v době sestavení. Ve výše uvedeném kódu upravujeme hodnotu „appName“ v závislosti na tom, zda Gradle buduje bezplatnou nebo placenou verzi naší aplikace.

Vytvoření vlastního úkolu Gradle

Někdy budete muset přizpůsobit proces sestavení pomocí Gradle úkoly.

Úkol je pojmenovaná kolekce akcí, které Gradle provede při provádění sestavení, například generování Javadocu. Gradle ve výchozím nastavení podporuje mnoho úkolů, ale můžete také vytvořit vlastní úkoly, které se vám hodí, pokud máte na mysli velmi konkrétní sadu pokynů k sestavení.

V této části vytvoříme vlastní úkol Gradle, který bude opakovat všechny varianty sestavení našeho projektu (paidDebug, paidRelease, freeDebug a freeRelease), vytvoříme datum a časové razítko a tyto informace připojíme ke každému vygenerovanému APK.

Otevřete soubor build.gradle na úrovni modulu a přidejte následující:

task addDateAndTime () {// Iterovat přes všechny varianty sestavení výstupu // android.applicationVariants.all {variant -> // Iterovat přes všechny soubory APK // variant.outputs.all {výstup -> // Vytvořit instanci aktuální datum a čas ve formátu // def dateAndTime = new Date (). format ("yyyy-MM-dd: HH-mm") // Připojte tuto informaci k názvu souboru APK // def fileName = variant. name + "_" + dateAndTime + ".apk" output.outputFileName = fileName}}}

Dále musíme říct Gradle když měla by tuto úlohu provést. Během sestavování Gradle identifikuje vše, co potřebuje ke stažení, a všechny úkoly, které musí provést, a uspořádá je do řízeného acyklického grafu (DAG). Gradle poté provede všechny tyto úkoly podle pořadí definovaného v DAG.

Pro svou aplikaci budu používat metodu „WhenReady“, která zajistí, že náš úkol bude vyvolán, jakmile bude obsazeno DAG, a Gradle je připraven začít provádět své úkoly.

Přidejte do souboru build.gradle na úrovni modulu následující položky:

// Proveďte tento úkol // gradle.taskGraph.whenReady {addDateAndTime}

Pojďme si dát svůj vlastní úkol a náš kód sestavení varianty k testování, vytvořením tohoto projektu pomocí příkazu Gradle.

Budujte svůj projekt pomocí obálky Gradle

Příkazy Gradle zadáváte pomocí obálky Gradle („gradlew“). Tento skript je upřednostňovaným způsobem, jak zahájit sestavení Gradle, protože dělá sestavení nezávislým na vaší verzi Gradle. Toto oddělení může být užitečné, pokud spolupracujete s ostatními, kteří nemusí mít nutně nainstalovanou stejnou verzi Gradle.

Při vydávání příkazů obálky Gradle budete používat „gradlew“ pro unixové operační systémy, včetně MacOS, a „gradlew.bat“ pro Windows. Mám Mac, takže budu používat příkazy „gradlew“.

Příkazy Gradle můžete vydávat z aplikace Android Studio:

  • Na panelu nástrojů aplikace Android Studio vyberte „Zobrazit> Nástroje Windows> Terminál“. Tímto se otevře panel Terminál podél dolní části okna IDE.
  • Do Terminálu zadejte následující příkaz:

./gradlew build

Android Studio by mělo vypadat asi takto:

  • Stiskněte klávesu „Enter“ na klávesnici. Gradle nyní vytvoří váš projekt.

Gradle ukládá všechny vygenerované soubory APK do adresáře aplikace / build / output / apk vašeho projektu, takže přejděte do tohoto adresáře. Složka „APK“ by měla obsahovat několik složek a podsložek; ujistěte se, že Gradle vygeneroval APK pro každou ze svých variant sestavení a že do každého souboru byly přidány správné informace o datu a čase.

Jaké další úkoly Gradle jsou k dispozici?

Kromě všech vlastních úkolů, které můžete vytvořit, podporuje aplikace Gradle seznam předdefinovaných úkolů, které nejsou k dispozici. Pokud jste zvědaví, jaké úkoly jsou k dispozici, pak:

  • Otevřete okno Terminálu Android Studio, pokud ještě není otevřeno (výběrem „Zobrazit> Nástroje Windows> Terminál“ na panelu nástrojů Android Studio).
  • Do terminálu zadejte následující příkaz:

./gradlew -q úkoly

  • Stiskněte klávesu „Enter“ na klávesnici.

Tato úloha „úlohy“ bude nyní spuštěna a po několika okamžicích terminál zobrazí seznam všech úkolů dostupných pro tento projekt, doplněný krátkým popisem každé úlohy.

Využití Gradle: Přidání doplňků

Gradle se dodává s předinstalovaným počtem pluginů, ale můžete jej rozšířit přidáním nových pluginů. Tyto pluginy zpřístupňují nové úkoly vašim projektům Android, například Java plugin zahrnuje úkoly, které vám umožňují kompilovat zdrojový kód Java, spouštět testy jednotek a vytvářet soubor JAR, například „compileJava“, „compileText“, „jar“, „Javadoc“ a „čistý“.

Chcete-li použít plugin, přidejte prohlášení „Apply plugin“ do vašeho souboru build.gradle na úrovni modulu následovaného názvem pluginu. Zde například používáme plugin Java:

použít plugin: java

Pokud jste zvědaví, jaké pluginy jsou k dispozici, podívejte se na vyhledávání pluginů Gradle, které poskytuje komplexní registr pluginů Gradle.

Gradle Kotlin DSL

Ve výchozím nastavení budete psát své skripty pro tvorbu Gradle pomocí Groovy DSL, ale pokud jste jedním z mnoha vývojářů, kteří přijali Kotlin pro vývoj Androidu, můžete raději napsat své build skripty do Kotlinu.

Na rozdíl od Groovy je Kotlin staticky napsaným programovacím jazykem, takže pokud provedete přepnutí, budou vaše soubory sestavení kompatibilní s funkcemi automatického doplňování a navigace zdrojového kódu aplikace Android Studio. Navíc přechod z Groovy na Kotlin znamená, že budete ve svém projektu používat stejný programovací jazyk, což může vývoj usnadnit - zejména pokud nejste s Groovy příliš obeznámeni!

Pokud chcete začít psát svou logiku vytváření v Kotlinu, musíte nastavit DSL Gradle Kotlin a postupujte podle pokynů v průvodci migrací.

Zabalení

V tomto článku jsme prozkoumali nástroj pro automatizaci sestavování a správu závislostí aplikace Android Studio. Zkoumali jsme, jak Gradle automatizuje proces sestavování hned po vybalení a jak můžete proces sestavení upravit úpravou souborů sestavení Gradle ve svém projektu, včetně vytváření vlastních úloh Gradle a generováním více variant sestavení z jednoho projektu.

Rozšířili jste Gradle tak, aby automatizoval další části procesu vytváření systému Android? Dejte nám vědět v komentářích níže!

Geta e zdají jako další velký trend za poledních 12 měíců (za zářezem a pokleem konektoru pro luchátka). Leto zařízení Xiaomi přijala jako alternativu ke t...

Federální obchodní komie dne oznámila, že udělí pokutu 60 milionů dolarů proti pokytovateli bezdrátových ítí AT&T. ankce e týká klamavé ...

Články Z Portálu