Ins och Outs of Gradle

Som den första IDE-enheten (Integrated Development Environment), som helt och hållet ägs åt Android, är Google-backade Android Studio en spännande framtid för Android-utvecklare. Men det betyder också att man tar tag i någon ny teknik, framför allt Gradle build-systemet.

Den här artikeln får du igång med Androids nya byggsystem, från grunderna till vad Gradle är och vad det gör, för att göra en fördjupad titt på några av de viktigaste Gradle-filerna, för att lära dig att utföra och övervaka Gradle-uppgifter.

Du kommer också att titta närmare på de olika Gradle-verktygsfönstren i Android Studio och lära dig hur man lägger till beroenden i ett projekt, alla som inte har någon tidigare Gradle-erfarenhet som krävs.

Det första steget i att ta tag i Androids nya byggsystem är att förstå exakt vad Gradle är och varför dess inkludering i Android Studio är så bra nyheter för Android-utvecklare.

1. Vad är Gradle?

Gradle är en automatiserad byggverktyg som kan integreras i många olika miljöer, via plugins. I Android Studio uppnås Gradle-integration genom det lämpliga namnet Android Gradle-plugin.

Om du aldrig har använt Gradle tidigare kan det verka som ett frustrerande hinder för inträde när du överväger att flytta till Android Studio. Gradle har dock mycket att erbjuda till Android-utvecklare, så det är väl värt att investera lite tid på att lära Gradle's ins och outs. Här är några av de saker du kan göra med Gradle.

Minimera konfiguration som krävs för nya projekt

Gradle har en uppsättning standardkonfigurationsinställningar som automatiskt tillämpas på varje projekt du skapar i Android Studio. Om du utvecklar ett projekt som inte följer dessa standardkonfigurationsregler, är Gradle lätt att anpassa.

Förklara projektberoende

Beroende kan vara moduler, JAR-filer eller bibliotek, och de kan lokaliseras antingen på det lokala filsystemet eller på en fjärrserver.

Testa ditt projekt

Gradle genererar automatiskt en testkatalog och ett test APK från projektets testkällor och kan köra dina tester under byggprocessen.

Generera signerade APK: er

Om du lägger till all nödvändig information, t.ex. keyPassword och keyAlias, till din Gradle build-fil kan du använda Gradle för att generera signerade APK-filer.

Generera flera APK från en enda modul

Gradle kan generera flera APKs med olika paket och bygga konfigurationer från en enda modul. Den här funktionen är särskilt användbar för Android-utvecklare, av flera anledningar:

1. Stöd ett brett utbud av enheter

En stor del av utvecklingen för Android-plattformen stöder så många olika Android-enheter och versioner av Android-operativsystemet som möjligt. Google Play-butiken har även flera APK-stöd, så du kan skapa flera versioner av din app där varje version riktar sig till en annan enhetskonfiguration, som erbjuder dem som en enda Play Store-lista.

Det är här Gradle kommer in. Du kan använda Androids nya byggsystem för att generera flera APK-varianter från samma modul. Ge bara dessa varianter samma paketnamn och du kan ladda upp dem till samma Google Play-lista.

2. Erbjud olika versioner av en app

Ibland gör du det vilja att lista flera versioner av din app i Play-butiken, till exempel om du erbjuder en gratis och en "Pro" -version av din app. Återigen kan du använda Gradle för att generera flera APKs från samma modul och ge varje APK ett annat paketnamn. Du kan sedan ladda upp varje APK till Play-butiken separat.

2. Exploring Gradle Files

När du skapar ett projekt i Android Studio genererar byggsystemet automatiskt alla nödvändiga Gradle build-filer.

Eftersom du kommer att stöta på samma uppsättning Gradle-filer varje gång du skapar ett Android Studio-projekt, skapar vi ett grundläggande provprojekt och tittar närmare på dessa automatiskt genererade filer.

Det första steget är att skapa ditt provprojekt:

  1. Starta Android Studio.
  2. Klick Starta ett nytt Android Studio-projekt.
  3. Ge ditt projekt ett namn, ange en domän och välj var ditt provprojekt ska lagras. Klick Nästa.
  4. Kontrollera endast Telefon och surfplatta är markerat och acceptera standardminimum SDK-inställningarna. Klick Nästa.
  5. Välj Blank aktivitet och klicka Nästa.
  6. Håll fast med standardinställningarna och klicka på Avsluta.

Gradle Build Files

Gradle build-filer använder ett domänspecifikt språk eller DSL för att definiera anpassad bygglogik och att interagera med de Android-specifika elementen i Android-plugin för Gradle.

Android Studio-projekt består av en eller flera moduler, vilka är komponenter som du kan bygga, testa och felsöka självständigt. Varje modul har sin egen byggfil, så varje Android Studio-projekt innehåller två typer av Gradle build-filer:

  • Arkiv på högsta nivå: Här hittar du de konfigurationsalternativ som är gemensamma för alla moduler som utgör ditt projekt.
  • Modulnivå byggfil: Varje modul har sin egen Gradle build-fil som innehåller modulspecifika bygginställningar. Du spenderar större delen av din tidsredigeringsmodellnivå byggfil (er) istället för projektets toppnivåbyggnadsfil.

Om du vill titta på dessa build.gradle-filer öppnar du Android Studio Projekt panel (genom att välja Projekt fliken) och expandera Gradle Scripts mapp. I vårt provprojekt är de två första objekten i listan projektets byggnadsfiler på toppnivå och modulnivå.


Vårt provprojekt har bara en enda modulnivåbyggnadsfil, men skärmdumpen nedan ger dig en uppfattning om hur Gradle Scripts mappen kan leta efter ett projekt med flera moduler.


Top Level Gradle Build File

Varje Android Studio-projekt innehåller en enda, högsta Gradle-byggfil. Denna build.gradle-fil är det första objektet som visas i Gradle Scripts mapp och är tydligt markerad Projekt.

För det mesta behöver du inte göra några ändringar i den här filen, men det är fortfarande användbart att förstå innehållet och rollen som det spelar inom ditt projekt. Nedan är en annoterad version av en typisk toppnivå byggfil.

buildscript // Projektnivå Gradle build files använder buildscript för att definiera beroenden.// repositories jcenter () // Den här filen är beroende av jJCenter repository.// beroenden classpath 'com.android.tools.build:gradle: 1.0.0 '// Projektet är beroende av version 1.0.0 av Android-plugin för Gradle.// allprojects // Definierar de beroende som krävs av din application.// repositories jcenter () // Applikationen beror på på jCenter repository.// 

Modulnivå Gradle Bygg filer

Förutom projektgraden Gradle build-fil, har varje modul en egen Gradle build-fil. Nedan är en annoterad version av en grundläggande, modulnivå Gradle build-fil.

tillämpa plugin: 'com.android.application' // Eftersom projektet är en Android-app använder filen build.gradle Android plugin.// android // Följande avsnitt konfigurerar alla dina projekts Android-specifika parametrar och berättar Gradle vilken version av Android det ska bygga ditt projekt med. Om du har utvecklat Android-applikationer före, bör följande alla vara bekanta. // compileSdkVersion 21 // APIet ditt projekt är inriktat.// buildToolsVersion "21.1.1" //// Den version av de byggverktyg du vill use.// defaultConfig applicationId "com.example.jessica.myapplication" // Definierar ditt programs ID. Observera tidigare versioner av Android-plugin-paketet "paketnamn" istället för "applicationID." // minSdkVersion 16 // Minimiprogrammet som krävs av ditt projekt .// targetSdkVersion 21 // Den version av Android du utvecklar din ansökan till. // versionCode 1 versionName "1.0" buildTypes release // "BuildTypes" styr hur din app är byggd och förpackad. Om du vill skapa egna byggvarianter måste du lägga till dem i den här sektionen .// minifyEnabled true // Gradle kör ProGuard under byggprocessen.// proguardFiles getDefaultProguardFile ('proguard-android.txt'), ' proguard-rules.pro '// Tillämpar standard ProGuard-inställningar från Android SDK.// beroenden // Förklarar beroenden för den aktuella modulen.// kompilera fileTree (dir:' libs ', inkluderar: [' * .jar ']) // Även om du kan lägga till JAR-filer genom att sammanställa dem individuellt kan det vara tidskrävande om du har många JAR-filer. I det här exemplet säger vi Gradle att lägga till alla JAR-filer i mappen app / libs .// compile 'com.android.support:appcompat-v7:21.0.3' // För att skapa fler beroenden lägger du till dem avstängning av depencies.// 

Andra Gradle Files

Förutom build.gradle-filer, din Gradle Scripts mappen innehåller några andra Gradle-filer. För det mesta behöver du inte manuellt redigera dessa filer eftersom de uppdateras automatiskt när du gör några relevanta ändringar av ditt projekt. Det är dock en bra idé att förstå vilken roll dessa filer spelar inom ditt projekt.

gradle-wrapper.properties (Gradle Version)

Den här filen tillåter andra att bygga din kod, även om de inte har Gradle installerad på sin maskin. Den här filen kontrollerar om den korrekta versionen av Gradle är installerad och hämtar den nödvändiga versionen om det behövs. I vårt exempelapp, gradle-wrapper.properties innehåller följande:

distributionBase = GRADLE_USER_HOME // Bestämmer huruvida den uppackade wrappdistributionen ska lagras i projektet eller i Gradle-användarens hemkatalog. // distributionPath = wrapper / dists // Banan där Gradle-distributionerna som krävs av wrappen är unzipped.// zipStoreBase = GRADLE_USER_HOME zipStorePath = wrapper / dists distributionUrl = https \: //services.gradle.org/distributions/gradle-2.2.1-all.zip // Webbadressen där den korrekta versionen av Gradle ska hämtas från.//

settings.gradle

Den här filen refererar till alla moduler som utgör ditt projekt. Eftersom vårt provprojekt har en enda modul, är den här filen väldigt enkel som du kan se nedan.

inkludera ': app'

gradle.properties (Project Properties)

Den här filen innehåller konfigurationsinformation för hela projektet. Den är tom som standard, men du kan tillämpa ett brett utbud av egenskaper till ditt projekt genom att lägga till dem i den här filen.

local.properties (SDK Location)

Den här filen berättar Android Gradle-plugin där den kan hitta din Android SDK-installation. Till exempel:

sdk.dir = / Users / jessica / Bibliotek / Android / sdk

Anteckna det local.properties innehåller information som är specifik för lokal installation av Android SDK. Det betyder att du inte ska behålla den här filen under källkontroll.

3. Android Studio användargränssnitt

Nu när du är bekant med alla automatiskt genererade Gradle-filer, är det dags att flytta på interaktion med Gradle build-systemet. Den goda nyheten är att du kan interagera med Gradle direkt från Android Studio användargränssnittet.

Runt de vertikala och horisontella kanterna av Andorid Studio är flikar som öppnar olika verktygsfönster. I nästa avsnitt kommer jag att introducera dig till några av Android Studio's Gradle-specifika verktygsfönster och visa hur man interagerar med Gradle build-systemet via dessa fönster.

Gradle Tasks Window

Du kan använda fönstret Gradle-uppgifter för att bläddra och genomföra de olika uppgifterna som är inblandade i att sammanställa ditt projekt till en körbar applikation.

För att öppna fönstret Gradle tasks, klicka på Gradle fliken längst till höger om din Android Studio-installation. Om du har anpassat ditt Android Studio användargränssnitt och inte längre kan hitta Gradle fliken, då kan du välja Visa> Verktyg Windows> Gradle istället.

På fliken Gradle-uppgifter dubbelklickar du på ditt projekt, följt av din modul. Du får se en lista över alla Gradle-uppgifter relaterade till den här modulen.


När du dubbelklickar på en uppgift i fönstret Gradle tasks börjar den att exekvera och utgången visas i ett annat Gradle-specifikt fönster, Gradle Console.

Gradle Console

Gradle Console visar resultatet av Gradle-uppgifter när de utförs, tillsammans med eventuella felmeddelanden eller varningar.

För att öppna Gradle Console, välj Gradle Console fliken längst ned till höger om din IDE. Om du har anpassat Android Studios användargränssnitt och inte längre kan hitta den här fliken kan du alltid välja Visa> Verktyg Windows> Gradle Console istället.

Låt oss ta Gradle Console för en snurrning. I fönstret Gradle tasks, hitta montera uppgift, som bygger en versionsversion av din ansökan redo för distribution och dubbelklickar på den. Som den montera Uppgiften utförs visas uppgiften i Gradle Console.

Gradle Console kommer då att meddela dig att ditt projekt har byggt framgångsrikt eller det kommer att visa ett "build failed" -meddelande tillsammans med information om varför din byggnad har misslyckats.


Terminal

Du kan också köra Gradle-uppgifter från Android Studio Terminal. Om du vet exakt vilken Gradle-uppgift du vill utföra är Terminal vanligtvis mycket snabbare och bekvämare än att bläddra i listan över uppgifter i Gradle Console.

För att öppna terminalen klickar du på Terminal fliken längst ned till vänster i Android Studio eller välj Visa> Verktyg Windows> Gradle Console. Terminalen öppnas sedan med den aktuella mappen som redan valts. Du kan sedan utföra Gradle-uppgifter genom att skriva in dem i terminalen och trycka på antingen Lämna tillbaka eller den Stiga på tangent på tangentbordet.

4. Lägga till beroende

I det här avsnittet undersöker vi hur du kan använda Gradle för att hantera projektets modulberoende, lokala binära beroenden och avlägsna binära beroenden.

När det gäller att lägga till beroende på ditt projekt, ger Gradle dig flera alternativ.

Alternativ 1: Släpp filer till projektets libs / katalog

Den relevanta build.gradle-filen uppdateras sedan automatiskt.

Alternativ 2: Ändra build.gradle Fil manuellt

Öppna din build.gradle-fil och lägg till en ny byggregel till nedläggningen av beroenden. Om du till exempel vill lägga till Google Play Services ser projektets beroenden att se något så här ut:

beroenden kompilera fileTree (dir: 'libs', inkludera: ['* .jar']) kompilera 'com.google.android.gms: play-services: 6.5. +'

Alternativ 3: Använd Android Studio användargränssnitt

I Projekt panel, Kontroll + Klicka modulen du vill lägga till beroende på och välj Öppna modulinställningar.


Välj beroenden flik, följt av + knappen i nedre vänstra hörnet. Du kan välja mellan följande lista med alternativ:

  • bibliotek Dependency
  • File Dependency
  • Modulberoende

Du kan sedan ange mer information om beroendet du vill lägga till i ditt projekt. Till exempel, om du väljer Biblioteksberoende, Android Studio visar en lista över bibliotek som du kan välja mellan.

När du har lagt till ditt beroende, kontrollera din build.gradle-fil på modulnivå. Det borde ha uppdaterats automatiskt för att inkludera det nya beroendet.

Slutsats

Den här artikeln har introducerat dig i alla de automatiskt genererade Gradle-build-filerna som du hittar i ditt typiska Android Studio-projekt, i synnerhet Gradle build-filer på hög nivå och modulnivå. Du har också lärt dig hur du ska interagera direkt med Gradle build-systemet från Android Studio användargränssnitt.

Om du är intresserad av att lära dig mer om Gradle hittar du massor av ytterligare information på Android-utvecklarens webbplats och på Gradle-webbplatsen.