Das von Google unterstützte Android Studio ist die erste IDE (Integrated Development Environment), die ausschließlich Android gewidmet ist, und ist eine aufregende Perspektive für Android-Entwickler. Es bedeutet aber auch, sich mit einigen neuen Technologien auseinanderzusetzen, allen voran dem Gradle-Build-System.
In diesem Artikel lernen Sie das neue Build-System von Android kennen, von den Grundlagen von Gradle und dessen Funktionsweise bis hin zu einem detaillierten Einblick in die wichtigsten Dateien von Gradle. Außerdem erfahren Sie hier, wie Sie Gradle-Aufgaben ausführen und überwachen.
Außerdem betrachten Sie die verschiedenen Gradle-Tool-Fenster in Android Studio und erfahren, wie Sie Abhängigkeiten zu einem Projekt hinzufügen können.
Der erste Schritt, um sich mit dem neuen Build-System von Android zu beschäftigen, besteht darin, genau zu verstehen, was Gradle ist und warum die Aufnahme in Android Studio für Android-Entwickler eine so gute Nachricht ist.
Gradle ist ein automatisiertes Build-Toolkit, das über Plugins in viele verschiedene Umgebungen integriert werden kann. In Android Studio wird die Gradle-Integration über das passend benannte Android-Gradle-Plugin erreicht.
Wenn Sie Gradle noch nie verwendet haben, kann dies als frustrierende Eintrittsbarriere erscheinen, wenn Sie den Umstieg auf Android Studio in Betracht ziehen. Allerdings hat Gradle Android-Entwicklern viel zu bieten. Es lohnt sich also, einige Zeit in das Lernen von Gradle zu investieren. Hier sind nur einige der Möglichkeiten, die Sie mit Gradle machen können.
Gradle verfügt über eine Reihe von Standardkonfigurationseinstellungen, die automatisch auf jedes in Android Studio erstellte Projekt angewendet werden. Wenn Sie ein Projekt entwickeln, das diesen Standardkonfigurationsregeln nicht entspricht, lässt sich Gradle einfach anpassen.
Abhängigkeiten können Module, JAR-Dateien oder Bibliotheken sein und sich entweder im lokalen Dateisystem oder auf einem Remote-Server befinden.
Gradle generiert automatisch ein Testverzeichnis und eine Test-APK aus den Testquellen Ihres Projekts und kann Ihre Tests während des Erstellungsprozesses ausführen.
Wenn Sie alle erforderlichen Informationen hinzufügen, z Schlüsselkennwort
und keyAlias
, In Ihrer Gradle-Builddatei können Sie mit Gradle signierte APKs generieren.
Gradle kann aus einem einzigen Modul mehrere APKs mit unterschiedlichen Paket- und Build-Konfigurationen erstellen. Diese Funktion ist für Android-Entwickler aus mehreren Gründen besonders praktisch:
Ein großer Teil der Entwicklung für die Android-Plattform unterstützt so viele verschiedene Android-Geräte und Versionen des Android-Betriebssystems wie möglich. Der Google Play Store bietet sogar Multi-APK-Unterstützung, sodass Sie mehrere Versionen Ihrer App erstellen können, wobei jede Version auf eine andere Gerätekonfiguration abzielt und diese als einen einzigen Play Store-Eintrag anbietet.
Hier kommt Gradle ins Spiel. Mit dem neuen Build-System von Android können Sie mehrere APK-Varianten aus demselben Modul generieren. Geben Sie diesen Varianten einfach den gleichen Paketnamen und Sie können sie in dieselbe Google Play-Liste hochladen.
Manchmal wirst du wollen Um mehrere Versionen Ihrer App im Play Store aufzulisten, beispielsweise, wenn Sie eine kostenlose und eine "Pro" -Version Ihrer App anbieten. Mit Gradle können Sie wiederum mehrere APKs aus demselben Modul generieren und jedem APK einen anderen Paketnamen zuweisen. Sie können dann jede APK separat in den Play Store hochladen.
Wenn Sie ein Projekt in Android Studio erstellen, generiert das Build-System automatisch alle erforderlichen Gradle-Build-Dateien.
Da Sie bei jedem Erstellen eines Android Studio-Projekts denselben Satz von Gradle-Dateien finden, erstellen wir ein grundlegendes Beispielprojekt und betrachten diese automatisch generierten Dateien dann genauer.
Der erste Schritt ist das Erstellen Ihres Beispielprojekts:
Builder-Dateien von Gradle verwenden eine domänenspezifische Sprache oder DSL, um eine benutzerdefinierte Build-Logik zu definieren und mit den Android-spezifischen Elementen des Android-Plugins für Gradle zu interagieren.
Android Studio-Projekte bestehen aus einem oder mehreren Modulen, Komponenten, die Sie unabhängig voneinander erstellen, testen und debuggen können. Jedes Modul verfügt über eine eigene Build-Datei, sodass jedes Android Studio-Projekt zwei Arten von Gradle-Build-Dateien enthält:
Öffnen Sie die Dateien von Android Studio, um sich diese build.gradle-Dateien anzusehen Projekt Panel (durch Auswahl von Projekt Registerkarte) und erweitern Sie die Gradle-Skripte Mappe. In unserem Beispielprojekt sind die ersten beiden Elemente in der Liste die Build-Dateien der obersten Ebene und der Modulebene Ihres Projekts.
Unser Beispielprojekt hat nur eine einzige Build-Datei auf Modulebene, aber der folgende Screenshot gibt Ihnen eine Vorstellung davon, wie die Gradle-Skripte Ordner kann nach einem Projekt mit mehreren Modulen suchen.
Jedes Android Studio-Projekt enthält eine einzige Gradle-Build-Datei auf oberster Ebene. Diese build.gradle-Datei ist das erste Element, das in der Datei angezeigt wird Gradle-Skripte Ordner und ist deutlich gekennzeichnet Projekt.
In der Regel müssen Sie keine Änderungen an dieser Datei vornehmen, aber es ist dennoch nützlich, den Inhalt und die Rolle, die er in Ihrem Projekt spielt, zu verstehen. Nachfolgend finden Sie eine kommentierte Version einer typischen Build-Datei der obersten Ebene.
buildscript // Auf Projektebene Gradle-Builddateien verwenden buildscript zum Definieren von Abhängigkeiten.// Repositorys jcenter () // Diese Datei basiert auf dem Repository von jJCenter.// Abhängigkeiten classpath 'com.android.tools.build:gradle: 1.0.0 '// Project ist abhängig von Version 1.0.0 des Android-Plugins für Gradle.// allprojects // Definiert die Abhängigkeiten, die für Ihre Anwendung erforderlich sind .// repositories jcenter () // Anwendungsabhängig im jCenter-Repository.//
Zusätzlich zu der Gradle-Build-Datei auf Projektebene verfügt jedes Modul über eine eigene Gradle-Build-Datei. Nachfolgend finden Sie eine kommentierte Version einer grundlegenden Gradle-Builddatei auf Modulebene.
plugin anwenden: 'com.android.application' // Da dieses Projekt eine Android-App ist, verwendet die build.gradle -Datei das Android-Plugin.// android // Im folgenden Abschnitt werden alle Android-spezifischen Parameter Ihres Projekts konfiguriert Gradle, mit welcher Android-Version Ihr Projekt erstellt werden soll. Wenn Sie bereits Android-Anwendungen entwickelt haben, sollte Folgendes alles bekannt sein: // compileSdkVersion 21 // Die API, auf die Ihr Projekt abzielt, ist targeting.// buildToolsVersion "21.1.1" //// Die Version der gewünschten Build-Tools use.// defaultConfig applicationId "com.example.jessica.myapplication" // Legt die ID Ihrer Anwendung fest. Beachten Sie, dass in früheren Versionen des Android-Plugins 'packageName' anstelle von 'applicationID' verwendet wurde. // minSdkVersion 16 // Die für Ihr Projekt erforderliche Mindest-API.// targetSdkVersion 21 // Die Version von Android, für die Sie Ihre Anwendung entwickeln. // versionCode 1 versionName "1.0" buildTypes release // 'BuildTypes' steuert, wie Ihre App erstellt und gepackt wird. Wenn Sie eigene Build-Varianten erstellen möchten, müssen Sie diese zu diesem Abschnitt hinzufügen .// minifyEnabled true // Gradle führt ProGuard während des Build-Prozesses aus .// proguardFiles getDefaultProguardFile ('proguard-android.txt'), ' proguard-rules.pro '// Wendet die ProGuard-Standardeinstellungen aus dem Android SDK an. // Abhängigkeiten // Deklariert die Abhängigkeiten für das aktuelle Modul.// kompiliert fileTree (Verzeichnis:' libs ', include: [' * .jar ']) // Obwohl Sie JAR-Dateien hinzufügen können, indem Sie sie einzeln kompilieren, kann dies sehr zeitaufwändig sein, wenn Sie über viele JAR-Dateien verfügen. In diesem Beispiel weisen wir Gradle an, alle JAR-Dateien im Ordner app / libs hinzuzufügen .// kompilieren 'com.android.support:appcompat-v7:21.0.3' // Wenn Sie weitere Abhängigkeiten erstellen möchten, fügen Sie sie hinzu die Schließung der Abteilungen.//
Neben den build.gradle -Dateien wird auch Ihr Gradle-Skripte Ordner enthält einige andere Gradle-Dateien. In den meisten Fällen müssen Sie diese Dateien nicht manuell bearbeiten, da sie automatisch aktualisiert werden, wenn Sie relevante Änderungen an Ihrem Projekt vornehmen. Es ist jedoch eine gute Idee zu verstehen, welche Rolle diese Dateien in Ihrem Projekt spielen.
Diese Datei ermöglicht es anderen Benutzern, Ihren Code zu erstellen, auch wenn Gradle nicht auf ihrem Computer installiert ist. Diese Datei prüft, ob die richtige Version von Gradle installiert ist, und lädt gegebenenfalls die erforderliche Version herunter. In unserer Beispiel-App, gradle-wrapper.properties enthält folgendes:
distributionBase = GRADLE_USER_HOME // Legt fest, ob die entpackte Wrapper-Verteilung im Projekt oder im Benutzer-Stammverzeichnis von Gradle gespeichert werden soll.// distributionPath = wrapper / dists // Der Pfad, in dem die vom Wrapper benötigten Gradle-Distributionen entpackt werden.// zipStoreBase = GRADLE_USER_HOME zipStorePath = Wrapper / Dists distributionUrl = https \: //services.gradle.org/distributions/gradle-2.2.1-all.zip // Die URL, von der die richtige Version von Gradle heruntergeladen werden soll.//
Diese Datei verweist auf alle Module, aus denen Ihr Projekt besteht. Da unser Beispielprojekt aus einem einzigen Modul besteht, ist diese Datei sehr einfach, wie Sie unten sehen können.
Include ': App'
Diese Datei enthält Konfigurationsinformationen für Ihr gesamtes Projekt. Sie ist standardmäßig leer, Sie können jedoch ein breites Spektrum an Eigenschaften auf Ihr Projekt anwenden, indem Sie sie zu dieser Datei hinzufügen.
Diese Datei teilt dem Android Gradle-Plugin mit, wo es Ihre Android SDK-Installation finden kann. Zum Beispiel:
sdk.dir = / Benutzer / jessica / Bibliothek / Android / sdk
Beachten Sie, dass local.properties enthält Informationen, die spezifisch für das sind lokal Installation des Android SDK. Das bedeutet, dass Sie diese Datei nicht unter Quellcodeverwaltung halten sollten.
Da Sie nun mit allen automatisch generierten Gradle-Dateien vertraut sind, ist es an der Zeit, mit dem Gradle-Buildsystem zu interagieren. Die gute Nachricht ist, dass Sie mit Gradle direkt über die Android Studio-Benutzeroberfläche interagieren können.
An den vertikalen und horizontalen Kanten von Andorid Studio befinden sich Registerkarten, mit denen verschiedene Werkzeugfenster geöffnet werden. In den nächsten Abschnitten werde ich Ihnen einige der gradle-spezifischen Tool-Fenster von Android Studio vorstellen und zeigen, wie Sie über diese Fenster mit dem Gradle-Build-System interagieren.
Mit dem Gradle-Aufgabenfenster können Sie die verschiedenen Aufgaben durchsuchen und ausführen, die zum Kompilieren Ihres Projekts in eine ausführbare Anwendung erforderlich sind.
Klicken Sie auf, um das Gradle-Aufgabenfenster zu öffnen Gradle Registerkarte auf der rechten Seite Ihrer Android Studio-Installation. Wenn Sie Ihre Android Studio-Benutzeroberfläche angepasst haben und die nicht mehr finden können Gradle Tab, dann können Sie auswählen Ansicht> Toolfenster> Gradle stattdessen.
Doppelklicken Sie auf der Registerkarte Abstufungsaufgaben auf Ihr Projekt, gefolgt von Ihrem Modul. Sie sehen eine Liste aller Gradle-Aufgaben, die sich auf dieses Modul beziehen.
Wenn Sie im Gradle-Aufgabenfenster auf eine Aufgabe doppelklicken, wird sie ausgeführt und die Ausgabe wird in einem anderen Gradle-spezifischen Fenster angezeigt Gradle Console.
Die Gradle-Konsole zeigt die Ausgabe der Gradle-Tasks während ihrer Ausführung zusammen mit Fehlermeldungen oder Warnungen an.
Um die Gradle Console zu öffnen, wählen Sie Gradle Console Registerkarte rechts unten in Ihrer IDE. Wenn Sie die Benutzeroberfläche von Android Studio angepasst haben und diese Registerkarte nicht mehr finden können, können Sie sie immer auswählen Ansicht> Toolfenster> Gradle Console stattdessen.
Nehmen wir die Gradle Console für eine Runde. Suchen Sie im Gradle-Aufgabenfenster nach montieren Task, die eine Release-Version Ihrer Anwendung erstellt, die zur Verteilung bereit ist, und doppelklicken Sie darauf. Als die montieren Task ausgeführt wird, wird die Ausgabe der Task in Gradle Console angezeigt.
Die Gradle Console informiert Sie dann entweder darüber, dass Ihr Projekt erfolgreich erstellt wurde, oder es wird eine Meldung angezeigt, dass der Build fehlgeschlagen ist.
Sie können Gradle-Tasks auch von Android Studio aus ausführen Terminal. Wenn Sie genau wissen, welche Gradle-Aufgabe Sie ausführen möchten, ist das Terminal normalerweise viel schneller und bequemer als das Durchsuchen der Aufgabenlisten in Gradle Console.
Klicken Sie zum Öffnen des Terminals auf Terminal Registerkarte nach links unten in Android Studio oder wählen Sie Ansicht> Toolfenster> Gradle Console. Das Terminal wird geöffnet, und das aktuelle Verzeichnis ist bereits ausgewählt. Sie können dann Gradle-Aufgaben ausführen, indem Sie sie in das Terminal eingeben und entweder die Taste drücken Rückkehr oder der Eingeben Taste auf Ihrer Tastatur.
In diesem Abschnitt erfahren Sie, wie Sie mit Gradle die Modulabhängigkeiten Ihres Projekts, lokale binäre Abhängigkeiten und entfernte binäre Abhängigkeiten verwalten können.
Wenn Sie Ihrem Projekt Abhängigkeiten hinzufügen möchten, bietet Gradle mehrere Optionen.
Die entsprechende build.gradle-Datei wird dann automatisch aktualisiert.
Öffnen Sie die Datei build.gradle und fügen Sie der Schließung der Abhängigkeiten eine neue Build-Regel hinzu. Wenn Sie beispielsweise Google Play-Services hinzufügen möchten, sieht der Abhängigkeitsbereich Ihres Projekts etwa so aus:
Abhängigkeiten compile fileTree (Verzeichnis: 'libs', include: ['* .jar'])) compile 'com.google.android.gms: play-services: 6.5. +'
In dem Projekt Panel, Strg + Klick das Modul, zu dem Sie die Abhängigkeit hinzufügen möchten, und wählen Sie aus Öffnen Sie die Moduleinstellungen.
Wähle aus Abhängigkeiten Tab, gefolgt von der + Schaltfläche in der unteren linken Ecke. Sie können aus der folgenden Liste von Optionen auswählen:
Sie können dann weitere Informationen zu der Abhängigkeit eingeben, die Sie Ihrem Projekt hinzufügen möchten. Zum Beispiel, wenn Sie wählen Bibliotheksabhängigkeit, Android Studio zeigt eine Liste von Bibliotheken an, aus denen Sie auswählen können.
Nachdem Sie Ihre Abhängigkeit hinzugefügt haben, überprüfen Sie die build.gradle-Datei auf Modulebene. Es sollte automatisch aktualisiert worden sein, um die neue Abhängigkeit aufzunehmen.
In diesem Artikel haben Sie alle automatisch generierten Gradle-Build-Dateien vorgestellt, die Sie in Ihrem typischen Android Studio-Projekt finden, insbesondere die Gradle-Build-Dateien auf oberster und Modulebene. Sie haben auch gelernt, wie Sie über die Android Studio-Benutzeroberfläche direkt mit dem Gradle-Build-System interagieren.
Wenn Sie mehr über Gradle erfahren möchten, finden Sie auf der Android-Entwicklerwebsite und auf der Gradle-Website zahlreiche zusätzliche Informationen.