De ins en outs van Gradle

Als de eerste IDE (Integrated Development Environment) volledig gewijd aan Android, is de door Google ondersteunde Android Studio een geweldig vooruitzicht voor Android-ontwikkelaars. Maar het betekent ook grip krijgen op een nieuwe technologie, met name het Gradle Build-systeem.

Dit artikel laat je aan de slag met het nieuwe build-systeem van Android, van de basisprincipes van wat Gradle is en wat het doet, tot een grondige blik op enkele van de belangrijkste Gradle-bestanden, om te leren hoe je Gradle-taken kunt uitvoeren en volgen..

Je zal ook de verschillende Gradle-toolvensters in Android Studio van naderbij bekijken en leren hoe je afhankelijkheden aan een project kunt toevoegen, allemaal zonder eerdere Gradle-ervaring nodig.

De eerste stap om grip te krijgen op het nieuwe build-systeem van Android is precies begrijpen wat Gradle is en waarom het opnemen ervan in Android Studio zo goed nieuws is voor Android-ontwikkelaars..

1. Wat is overbruggen?

Gradle is een geautomatiseerde bouwtoolkit die via plug-ins in veel verschillende omgevingen kan worden geïntegreerd. In Android Studio wordt Gradle-integratie bereikt via de toepasselijk genaamde Android Gradle-plug-in.

Als je nog nooit Gradle hebt gebruikt, lijkt het misschien een frustrerende toegangsdrempel wanneer je overweegt de overstap naar Android Studio te maken. Gradle heeft echter veel te bieden aan Android-ontwikkelaars, dus het is de moeite waard om enige tijd te investeren in het leren van de ins en outs van Gradle. Hier zijn slechts enkele dingen die je met Gradle kunt doen.

Configuratie minimaliseren die vereist is voor nieuwe projecten

Gradle heeft een reeks standaardconfiguratie-instellingen die automatisch worden toegepast op elk project dat u in Android Studio maakt. Als u een project aan het ontwikkelen bent dat niet aan deze standaardconfiguratieregels voldoet, is Gradle eenvoudig aan te passen.

Declareer project afhankelijkheden

Afhankelijkheden kunnen modules, JAR-bestanden of bibliotheken zijn en ze kunnen zich op het lokale bestandssysteem of op een externe server bevinden.

Test uw project

Gradle genereert automatisch een testdirectory en een test-APK uit de testbronnen van uw project en kan uw tests uitvoeren tijdens het bouwproces.

Genereer ondertekende APK's

Als u alle benodigde informatie toevoegt, zoals keyPassword en keyAlias, in uw Gradle Build-bestand kunt u Gradle gebruiken om ondertekende APK's te genereren.

Genereer meerdere APK's van een enkele module

Gradle kan vanuit een enkele module meerdere APK's genereren met verschillende pakket- en buildconfiguraties. Deze functie is vooral handig voor Android-ontwikkelaars, om verschillende redenen:

1. Ondersteuning van een breed scala aan apparaten

Een groot deel van de ontwikkeling voor het Android-platform ondersteunt zoveel mogelijk verschillende Android-apparaten en -versies van het Android-besturingssysteem. De Google Play Store heeft zelfs meerdere APK-ondersteuning, dus u kunt meerdere versies van uw app maken, waarbij elke versie een andere apparaatconfiguratie target en deze als één Play Store-vermelding aanbiedt.

Hier komt Gradle om. U kunt het nieuwe build-systeem van Android gebruiken om meerdere APK-varianten uit dezelfde module te genereren. Geef deze varianten dezelfde pakketnaam en u kunt ze uploaden naar dezelfde Google Play-vermelding.

2. Bied verschillende versies van een app aan

Soms wel willen om meerdere versies van uw app in de Play Store te vermelden, bijvoorbeeld als u een gratis en een 'Pro'-versie van uw app aanbiedt. Nogmaals, u kunt Gradle gebruiken om meerdere APK's van dezelfde module te genereren en elke APK een andere pakketnaam te geven. U kunt elke APK afzonderlijk naar de Play Store uploaden.

2. De doorstroombestanden verkennen

Wanneer u een project in Android Studio maakt, genereert het buildsysteem automatisch alle benodigde bestanden voor verstopping.

Omdat je telkens wanneer je een Android Studio-project maakt, dezelfde set Gradle-bestanden tegenkomt, zullen we een eenvoudig voorbeeldproject maken en deze automatisch gegenereerde bestanden nader bekijken..

De eerste stap is het maken van uw voorbeeldproject:

  1. Start Android Studio.
  2. Klik Start een nieuw Android Studio-project.
  3. Geef uw project een naam, voer een domein in en kies waar uw voorbeeldproject moet worden opgeslagen. Klik volgende.
  4. Alleen zorgen Telefoon en tablet is geselecteerd en accepteert de standaard Minimale SDK-instellingen. Klik volgende.
  5. kiezen Lege activiteit en klik volgende.
  6. Blijf bij de standaardinstellingen en klik op Af hebben.

Volgbouwbestanden

Gradle build-bestanden gebruiken een domeinspecifieke taal of DSL om aangepaste buildlogica te definiëren en om te communiceren met de Android-specifieke elementen van de Android-plug-in voor Gradle.

Android Studio-projecten bestaan ​​uit een of meer modules, die componenten zijn die u onafhankelijk kunt bouwen, testen en debuggen. Elke module heeft een eigen build-bestand, dus elk Android Studio-project bevat twee soorten bestanden voor het maken van verstopte bestanden:

  • Build-bestand op topniveau: Hier vindt u de configuratie-opties die gemeenschappelijk zijn voor alle modules waaruit uw project bestaat.
  • Module-niveau buildbestand: Elke module heeft een eigen Gradle build-bestand dat module-specifieke build-instellingen bevat. U besteedt het grootste deel van uw tijd aan het bewerken van build-bestanden op moduleniveau in plaats van het build-bestand op het hoogste niveau van uw project.

Ga naar Android Studio's om deze build.gradle-bestanden te bekijken project paneel (door de te selecteren project tab) en vouw het Graden-scripts map. In ons voorbeeldproject zijn de eerste twee items in de lijst de buildbestanden van het hoogste niveau en het moduleniveau van uw project.


Ons voorbeeldproject heeft slechts één buildbestand op moduleniveau, maar de onderstaande schermafbeelding geeft u een idee van hoe het Graden-scripts map zoekt mogelijk naar een project met meerdere modules.


Top-level Gradle Build-bestand

Elk Android Studio-project bevat een enkel, op het hoogste niveau, een Gradle-buildbestand. Dit bestand met build.gradle is het eerste item dat wordt weergegeven in de Graden-scripts map en is duidelijk gemarkeerd project.

Meestal hoeft u dit bestand niet te wijzigen, maar het is nog steeds nuttig om de inhoud en de rol die het speelt in uw project te begrijpen. Hieronder staat een geannoteerde versie van een typisch buildbestand op het hoogste niveau.

buildscript // Project-level Gradle build-bestanden gebruiken buildscript om afhankelijkheden te definiëren.// repositories jcenter () // Dit bestand is afhankelijk van de jJCenter repository.// dependencies classpath 'com.android.tools.build:gradle: 1.0.0 '// Project is afhankelijk van versie 1.0.0 van de Android-plug-in voor Gradle.// allprojects // Bepaalt de afhankelijkheden die door uw toepassing worden vereist.// opslagplaatsen jcenter () // Afhankelijk van de toepassing op de jCenter repository.// 

Module-niveau Gradle Build-bestanden

In aanvulling op het Gradle-buildbestand op projectniveau, heeft elke module een eigen bestand voor het maken van een volgorder. Hieronder staat een geannoteerde versie van een elementair, module-niveau Gradle build-bestand.

plug-in toepassen: 'com.android.application' // Aangezien dit project een Android-app is, maakt het bestand build.gradle gebruik van de Android-plugin.// android // Het volgende gedeelte configureert alle Android-specifieke parameters van uw project en vertelt Bepaal met welke versie van Android het uw project zou moeten bouwen. Als u eerder Android-toepassingen heeft ontwikkeld, moet u het volgende weten: compileSdkVersion 21 // De API die door uw project wordt getarget.// buildToolsVersion "21.1.1" //// De versie van de buildhulpmiddelen die u wilt use.// defaultConfig applicationId "com.example.jessica.myapplication" // Definieert de ID van uw toepassing. Opmerking: eerdere versies van de Android-plug-in gebruikten 'packageName' in plaats van 'applicationID'. // minSdkVersion 16 // De minimale API die uw project vereist.// targetSdkVersion 21 // De Android-versie waarvoor u uw applicatie ontwikkelt. // versionCode 1 versionName "1.0" buildTypes release // 'BuildTypes' bepaalt hoe uw app wordt gebouwd en verpakt. Als u uw eigen buildvarianten wilt maken, moet u deze aan deze sectie toevoegen.// minifyEnabled true // Gradle voert ProGuard uit tijdens het buildproces.// proguardFiles getDefaultProguardFile ('proguard-android.txt'), ' proguard-rules.pro '// Past de standaard ProGuard-instellingen toe van de Android SDK.// afhankelijkheden // Verklaar de afhankelijkheden voor de huidige module.// compileer fileTree (dir:' libs ', include: [' * .jar ']) // Hoewel u JAR-bestanden kunt toevoegen door ze afzonderlijk te compileren, kan dit tijdrovend zijn als u veel JAR's hebt. In dit voorbeeld vertellen we Gradle om alle JAR-bestanden in de map app / libs toe te voegen.// compileren 'com.android.support:appcompat-v7:21.0.3' // Voeg meer afhankelijkheden toe aan de depencies closure.// 

Andere Gradle-bestanden

In aanvulling op de build.gradle-bestanden, uw Graden-scripts map bevat enkele andere Gradle-bestanden. Meestal hoeft u deze bestanden niet handmatig te bewerken omdat ze automatisch worden bijgewerkt wanneer u relevante wijzigingen in uw project aanbrengt. Het is echter een goed idee om de rol te begrijpen die deze bestanden binnen uw project spelen.

gradle-wrapper.properties (Gradle-versie)

Met dit bestand kunnen andere mensen uw code bouwen, zelfs als ze Gradle niet op hun computer hebben geïnstalleerd. Dit bestand controleert of de juiste versie van Gradle is geïnstalleerd en downloadt indien nodig de benodigde versie. In onze voorbeeld-app, gradle-wrapper.properties bevat het volgende:

distributionBase = GRADLE_USER_HOME // Bepaalt of de onverpakte wrapper-distributie moet worden opgeslagen in het project of in de thuismap van de Gradle-gebruiker .// distributionPath = wrapper / dists // Het pad waar de Gradle-distributies vereist door de wrapper zijn uitgepakt.// zipStoreBase = GRADLE_USER_HOME zipStorePath = wrapper / dists distributionUrl = https \: //services.gradle.org/distributions/gradle-2.2.1-all.zip // De URL waar de juiste versie van Gradle vandaan zou moeten komen.

settings.gradle

Dit bestand verwijst naar alle modules waaruit uw project bestaat. Aangezien ons voorbeeldproject een enkele module heeft, is dit bestand erg eenvoudig, zoals u hieronder kunt zien.

include ': app'

gradle.properties (Projecteigenschappen)

Dit bestand bevat configuratiegegevens voor uw hele project. Het is standaard leeg, maar u kunt een groot aantal eigenschappen toepassen op uw project door ze aan dit bestand toe te voegen.

local.properties (SDK-locatie)

Dit bestand vertelt de Android Gradle-plug-in waar het je Android SDK-installatie kan vinden. Bijvoorbeeld:

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

Let daar op local.properties bevat informatie die specifiek is voor de lokaal installatie van de Android SDK. Dit betekent dat u dit bestand niet onder broncontrole moet houden.

3. Gebruikersinterface van Android Studio

Nu u bekend bent met alle automatisch gegenereerde Gradle-bestanden, is het tijd om verder te gaan in de interactie met het Gradle Build-systeem. Het goede nieuws is dat u rechtstreeks vanuit de gebruikersinterface van Android Studio met Gradle kunt communiceren.

Rond de verticale en horizontale randen van Andorid Studio bevinden zich tabbladen die verschillende hulpmiddelvensters openen. In de volgende secties zal ik je enkele van de Gradle-specifieke tool-vensters van Android Studio voorstellen en laten zien hoe je via deze vensters kunt communiceren met het Gradle Build-systeem..

Venster Gradle Tasks

U kunt het venster Gradertaken gebruiken om door de verschillende taken te bladeren en deze uit te voeren die nodig zijn om uw project in een uitvoerbare toepassing te compileren.

Om het venster Gradertaken te openen, klikt u op Gradle tab aan de rechterkant van uw Android Studio-installatie. Als u uw gebruikersinterface voor Android Studio hebt aangepast en het niet meer kunt vinden Gradle tabblad, dan kunt u selecteren Beeld> Tool Windows> Gradle in plaats daarvan.

Dubbelklik in het tabblad Gradertaken op uw project, gevolgd door uw module. U ziet een lijst met alle Gradle-taken die betrekking hebben op deze module.


Wanneer u dubbelklikt op een taak in het venster Gradertaken, wordt het uitgevoerd en verschijnt de uitvoer in een ander Gradle-specifiek venster, de Gradle-console.

Gradle-console

De Gradle-console geeft de uitvoer van Gradle-taken weer, terwijl deze worden uitgevoerd, naast eventuele foutmeldingen of waarschuwingen.

Om de Gradle-console te openen, selecteert u de Gradle-console tab naar rechts onderaan uw IDE. Als u de gebruikersinterface van Android Studio hebt aangepast en dit tabblad niet meer kunt vinden, kunt u altijd selecteren Beeld> Tool Windows> Gradle Console in plaats daarvan.

Laten we de Gradle-console een beetje ronddraaien. Zoek in het venster Gradertaken naar de monteren taak, die een release-versie van uw toepassing klaar maakt voor verspreiding en dubbelklik erop. Als de monteren taak wordt uitgevoerd, verschijnt de uitvoer van de taak in de Gradle-console.

De Gradle-console laat je dan weten dat je project succesvol is gebouwd, of dat het bericht 'build failed' wordt weergegeven, naast informatie over waarom je build is mislukt.


Terminal

U kunt ook Gradle-taken uitvoeren vanuit de geïntegreerde versie van Android Studio Terminal. Als u precies weet welke Gradle-taak u wilt uitvoeren, is de Terminal meestal veel sneller en handiger dan door de lijst met taken in de Gradle-console te bladeren..

Om de terminal te openen, klikt u op Terminal tab naar linksonder in Android Studio, of selecteer Beeld> Tool Windows> Gradle Console. De Terminal wordt dan geopend met de huidige map die al is geselecteerd. U kunt vervolgens Gradle-taken uitvoeren door ze in de terminal te typen en op de toets te drukken terugkeer of de invoeren toets op uw toetsenbord.

4. Afhankelijkheden toevoegen

In deze sectie zullen we verkennen hoe u Gradle kunt gebruiken om de afhankelijkheden van uw projectmodule, lokale binaire afhankelijkheden en externe binaire afhankelijkheden te beheren..

Als het gaat om het toevoegen van afhankelijkheden aan uw project, biedt Gradle u verschillende opties.

Optie 1: zet bestanden neer in de libs / map van Project

Het relevante build.gradle-bestand wordt dan automatisch bijgewerkt.

Optie 2: wijzig handmatig bestand

Open uw build.gradle-bestand en voeg een nieuwe build-regel toe aan de afsluiting van dependencies. Als u bijvoorbeeld Google Play-services wilt toevoegen, ziet de afhankelijkheden van uw project er ongeveer zo uit:

afhankelijkheden compile fileTree (dir: 'libs', include: ['* .jar']) compileer 'com.google.android.gms: play-services: 6.5. +'

Optie 3: Gebruik de gebruikersinterface van Android Studio

In de project paneel, Control + Klik de module waaraan u de afhankelijkheid wilt toevoegen en selecteer Module-instellingen openen.


Selecteer de afhankelijkheden tabblad, gevolgd door de + knop in de linkerbenedenhoek. U kunt kiezen uit de volgende lijst met opties:

  • bibliotheek Dependency
  • file Afhankelijkheid
  • Module afhankelijkheid

U kunt dan meer informatie invoeren over de afhankelijkheid die u aan uw project wilt toevoegen. Bijvoorbeeld, als u kiest Bibliotheekafhankelijkheid, Android Studio geeft een lijst met bibliotheken weer waaruit u kunt kiezen.

Nadat je je afhankelijkheid hebt toegevoegd, controleer je je build.gradle-bestand op moduleniveau. Het zou automatisch moeten zijn bijgewerkt om de nieuwe afhankelijkheid op te nemen.

Conclusie

Dit artikel heeft je kennis laten maken met alle automatisch gegenereerde Gradle Build-bestanden die je in je typische Android Studio-project vindt, met name de Gradle Build-bestanden op het hoogste niveau en op moduleniveau. U hebt ook geleerd rechtstreeks contact te hebben met het Gradle Build-systeem vanuit de gebruikersinterface van Android Studio.

Als u meer wilt weten over Gradle, vindt u veel aanvullende informatie op de Android-ontwikkelaarswebsite en op de Gradle-website..