Gradle ist ein bisschen verwirrend für mich und auch für jeden neuen Android-Entwickler. Kann jemand erklären, was Gradle in Android Studio ist und wozu es dient? Warum ist es in Android Studio enthalten?
Gradle ist ein bisschen verwirrend für mich und auch für jeden neuen Android-Entwickler. Kann jemand erklären, was Gradle in Android Studio ist und wozu es dient? Warum ist es in Android Studio enthalten?
Antworten:
Gradle ist ein Build-System.
Vor Android Studio haben Sie Eclipse für Ihre Entwicklungszwecke verwendet, und wahrscheinlich wussten Sie nicht, wie Sie Ihre Android-APK ohne Eclipse erstellen können.
Sie können dies in der Befehlszeile tun, müssen jedoch lernen, was jedes Tool (dx, aapt) im SDK tut. Eclipse hat uns alle vor diesen niedrigen, aber wichtigen, grundlegenden Details bewahrt, indem es uns ein eigenes Build-System gegeben hat.
Haben Sie sich jemals gefragt, warum sich der res
Ordner im selben Verzeichnis wie Ihr src
Ordner befindet?
Hier kommt das Build-System ins Spiel. Das Build-System nimmt automatisch alle Quelldateien ( .java
oder .xml
), wendet dann das entsprechende Tool an (z. B. nimmt java
Klassendateien und konvertiert sie in dex
Dateien) und gruppiert sie alle in einer komprimierten Datei, unserer geliebten APK.
Dieses Build-System verwendet einige Konventionen: Ein Beispiel hierfür ist die Angabe des Verzeichnisses mit den Quelldateien (in Eclipse ist es ein \src
Ordner) oder den Ressourcendateien (in Eclipse ist es ein \res
Ordner).
Um all diese Aufgaben zu automatisieren, muss ein Skript vorhanden sein. Sie können Ihr eigenes Build-System mithilfe von Shell-Skripten unter Linux oder Batch-Dateien in Windows schreiben. Ich habs?
Gradle ist ein weiteres Build-System , das die besten Funktionen anderer Build-Systeme nutzt und zu einem kombiniert. Es wird aufgrund ihrer Mängel verbessert. Es ist ein JVM-basiertes Build-System . Das bedeutet, dass Sie Ihr eigenes Skript in Java schreiben können, das Android Studio verwendet.
Eine coole Sache bei gradle ist, dass es sich um ein Plugin-basiertes System handelt . Das heißt, wenn Sie Ihre eigene Programmiersprache haben und die Aufgabe des Erstellens eines Pakets (Ausgabe wie eine JAR für Java) aus Quellen automatisieren möchten, können Sie ein vollständiges Plugin in Java oder Groovy (oder Kotlin, siehe hier ) und schreiben Verteile es an den Rest der Welt.
Google erkannte eines der fortschrittlichsten Build-Systeme auf dem Markt und erkannte, dass Sie eigene Skripte mit wenig bis gar keiner Lernkurve schreiben können, ohne Groovy oder eine andere neue Sprache zu lernen. Also haben sie das Android-Plugin für Gradle geschrieben.
Sie müssen build.gradle
Dateien in Ihrem Projekt gesehen haben. Hier können Sie Skripte schreiben, um Ihre Aufgaben zu automatisieren. Der Code, den Sie in diesen Dateien gesehen haben, ist Groovy-Code. Wenn Sie schreiben System.out.println("Hello Gradle!");
, wird es auf Ihrer Konsole gedruckt.
Ein einfaches Beispiel ist, dass Sie einige Dateien von einem Verzeichnis in ein anderes kopieren müssen, bevor der eigentliche Erstellungsprozess stattfindet. Ein Gradle-Build-Skript kann dies tun.
Es ist das neue Build-Tool, das Google für Android verwenden möchte. Es wird verwendet, weil es erweiterbarer und nützlicher als Ameise ist. Es soll die Entwicklererfahrung verbessern.
Hier können Sie einen Vortrag von Xavier Ducrohet vom Android Developer Team auf Google I / O ansehen .
Es gibt auch einen weiteren Vortrag über Android Studio von Xavier und Tor Norbye, ebenfalls während Google I / O hier .
Gradle ist ein Build-System, das unter Android Studio ausgeführt wird .
In anderen Sprachen zum Beispiel:
Gradle
ist ähnlich make
, ich habe gerade sein Konzept
Hier finden Sie eine detaillierte Erklärung, was es Gradle
ist und wie es in Android Studio verwendet wird.
Erkunden der Gradle-Dateien
Gradle Build-Dateien
Gradle-Build-Dateien verwenden a Domain Specific Language or 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. Dies sind 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.
Build-Datei der obersten Ebene: Hier finden Sie die Konfigurationsoptionen, die allen Modulen Ihres Projekts gemeinsam sind.
Build-Datei auf Modulebene : Jedes Modul verfügt über eine eigene Gradle-Build-Datei, die modulspezifische Build-Einstellungen enthält. Sie verbringen die meiste Zeit damit, Build-Dateien auf Modulebene und nicht die Build-Datei Ihres Projekts auf oberster Ebene zu bearbeiten.
Um sich diese build.gradle
Dateien anzusehen , öffnen Sie das Projektfenster von Android Studio (indem Sie die Registerkarte Projekt auswählen) und erweitern Sie den Ordner Gradle Scripts. Die ersten beiden Elemente im Ordner "Gradle Scripts" sind die Gradle-Builddateien auf Projektebene und auf Modulebene
Gradle-Build-Datei der obersten Ebene
Jedes Android Studio-Projekt enthält eine einzelne Gradle-Build-Datei der obersten Ebene. Diese build.gradle
Datei ist das erste Element, das im Ordner "Gradle Scripts" angezeigt wird und deutlich als "Projekt" gekennzeichnet ist.
Meistens müssen Sie keine Änderungen an dieser Datei vornehmen, aber es ist immer noch nützlich, den Inhalt und die Rolle zu verstehen, die sie in Ihrem Projekt spielt.
Gradle-Build-Dateien auf Modulebene
Zusätzlich zur Gradle-Build-Datei auf Projektebene verfügt jedes Modul über eine eigene Gradle-Build-Datei. Unten finden Sie eine kommentierte Version einer einfachen Gradle-Build-Datei auf Modulebene.
Andere Gradle-Dateien
Zusätzlich zu den build.gradle-Dateien enthält Ihr Gradle Scripts-Ordner einige andere Gradle-Dateien. Meistens 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, die Rolle dieser Dateien in Ihrem Projekt zu verstehen.
gradle-wrapper.properties (Gradle-Version)
Mit dieser Datei können andere Personen Ihren Code 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 bei Bedarf die erforderliche Version herunter.
settings.gradle
Diese Datei verweist auf alle Module, aus denen Ihr Projekt besteht.
gradle.properties (Projekteigenschaften)
Diese Datei enthält Konfigurationsinformationen für Ihr gesamtes Projekt. Es ist standardmäßig leer, aber Sie können Ihrem Projekt eine Vielzahl von Eigenschaften zuweisen, indem Sie sie dieser Datei hinzufügen.
local.properties (SDK-Speicherort)
Diese Datei teilt dem Android Gradle-Plugin mit, wo sich Ihre Android SDK-Installation befindet.
Hinweis: local.properties
Enthält Informationen, die für die lokale Installation des Android SDK spezifisch sind. Dies bedeutet, dass Sie diese Datei nicht unter Quellcodeverwaltung halten sollten.
Empfohlene Lektüre - Tutsplus Tutorial
Ich habe ein klares Verständnis von Gradle daraus.
Gradle ist eine Art Build-Tool , das den Quellcode des Programms erstellt. Es ist daher ein wichtiger Bestandteil von Android Studio und muss installiert werden, bevor Sie mit der Entwicklung Ihrer Anwendung beginnen können.
Wir müssen es nicht separat installieren, da das Android Studio dies für uns erledigt, wenn wir unser erstes Projekt erstellen.
DEFINITION :: Gradle können einen strukturiertes Gebäude Mechanismus beschrieben, in dem es um einen Entwickler bietet die Werkzeuge und die Flexibilität , die Ressourcen eines Projekt zu verwalten bauen zu schaffen , die sind smaller in size
, targeting specific requirements
für bestimmte Geräte bestimmter Konfigurationen
GRUNDKONFIGURATIONEN
minimumSdk
maximumSdk
targettedSdk
versionCode
versionName
BIBLIOTHEKEN :: Wir können zusätzlich zu den Anforderungen einfach Android-Bibliotheken oder andere Bibliotheken von Drittanbietern hinzufügen, was früher eine mühsame Aufgabe war. Wenn die Bibliothek nicht für das vorhandene Projekt geeignet ist, wird dem Entwickler ein Protokoll angezeigt, in dem die Person eine geeignete Lösung finden kann, um Änderungen am Projekt vorzunehmen, damit die Bibliothek hinzugefügt werden kann. Es ist nur eine Abhängigkeitslinie
VERSCHIEDENHEITEN VON GEBÄUDEN ERZEUGEN
Kombinieren von Build-Typen mit Build-Varianten, um verschiedene Build-Varianten zu erhalten
==================== ====================
| BuildTypes | | ProductFlavours |
-------------------- ====================== --------------------
| Debug,Production | || || | Paid,Free,Demo,Mock|
==================== || || ====================
|| ||
VV VV
=================================================================
| DebugPaid, DebugFree, DebugDemo, DebugMock |
| ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
=================================================================
GRÖSSE REDUZIEREN
Gradle hilft bei der Reduzierung der Größe des generierten Builds, indem nicht verwendete Ressourcen sowie nicht verwendete Elemente aus integrierten Bibliotheken entfernt werden
ERLAUBNISSE VERWALTEN
Wir können bestimmte Berechtigungen für bestimmte Builds angeben, indem wir bestimmte Berechtigungen in bestimmten Szenarien basierend auf den Anforderungen hinzufügen
GEBÄUDE FÜR BESTIMMTE GERÄTE
Wir können das Generieren von Builds für bestimmte Geräte verwalten, die bestimmte Dichten und bestimmte API-Ebenen enthalten. Dies hilft bei Produktbereitstellungen im App Store gemäß den Anforderungen für mehrere Gerätetypen
GUTE REFERENZ
Alles, was Sie über Gradle wissen müssen, finden Sie hier: Gradle Plugin User Guide
Ziele des neuen Build-Systems
Die Ziele des neuen Build-Systems sind:
- Erleichtern Sie die Wiederverwendung von Code und Ressourcen
- Machen Sie es einfach, mehrere Varianten einer Anwendung zu erstellen, entweder für die Multi-Apk-Verteilung oder für verschiedene Varianten einer Anwendung
- Erleichtern Sie das Konfigurieren, Erweitern und Anpassen des Erstellungsprozesses
- Gute IDE-Integration
Warum Gradle?
Gradle ist ein erweitertes Build-System sowie ein erweitertes Build-Toolkit, mit dem benutzerdefinierte Build-Logik über Plugins erstellt werden kann.
Hier sind einige seiner Funktionen, die uns dazu bewogen haben, Gradle zu wählen:
- Domain Specific Language (DSL) zur Beschreibung und Bearbeitung der Build-Logik
- Build-Dateien basieren auf Groovy und ermöglichen das Mischen deklarativer Elemente über DSL und die Verwendung von Code zum Bearbeiten der DSL-Elemente, um benutzerdefinierte Logik bereitzustellen.
- Integriertes Abhängigkeitsmanagement über Maven und / oder Ivy.
- Sehr flexibel. Ermöglicht die Verwendung von Best Practices, erzwingt jedoch keine eigene Vorgehensweise.
- Plugins können ihr eigenes DSL und ihre eigene API für die Verwendung von Build-Dateien verfügbar machen.
- Gute Tooling-API für IDE-Integration
Ich beziehe mich auf zwei Tutorials, um die Antwort eins , zwei zu schreiben
Gradle ist ein deklaratives Build-Tool für allgemeine Zwecke. Dies ist ein allgemeiner Zweck, da damit so ziemlich alles erstellt werden kann, was Sie im Build-Skript implementieren möchten. Es ist deklarativ, da Sie nicht viel Code in der Build-Datei sehen möchten, der nicht lesbar und weniger wartbar ist. Während Gradle die Idee von Konventionen und einen einfachen und deklarativen Build bietet, macht es das Tool auch anpassungsfähig und Entwickler können es erweitern. Es bietet auch eine einfache Möglichkeit, das Standardverhalten und verschiedene Hooks anzupassen, um Funktionen von Drittanbietern hinzuzufügen.
Gradle kombiniert die guten Teile beider Tools und bietet zusätzliche Funktionen und verwendet Groovy als domänenspezifische Sprache (DSL). Es verfügt über die Leistung und Flexibilität des Ant-Tools mit Maven-Funktionen wie dem Build-Lebenszyklus und der Benutzerfreundlichkeit.
Warum Gradle? Warum jetzt?
Die Antwort des Build-Tools besteht darin, Skriptfunktionen über nicht standardmäßige Erweiterungsmechanismen hinzuzufügen. Am Ende mischen Sie Skriptcode mit XML oder rufen externe Skripte aus Ihrer Build-Logik auf. Es ist leicht vorstellbar, dass Sie im Laufe der Zeit immer mehr benutzerdefinierten Code hinzufügen müssen. Infolgedessen führen Sie unweigerlich zu einer versehentlichen Komplexität, und die Wartbarkeit geht aus dem Fenster.
Angenommen, Sie möchten eine Datei an einen bestimmten Speicherort kopieren, wenn Sie die Release-Version Ihres Projekts erstellen. Um die Version zu identifizieren, überprüfen Sie eine Zeichenfolge in den Metadaten, die Ihr Projekt beschreiben. Wenn es einem bestimmten Nummerierungsschema entspricht (z. B. 1.0-RELEASE), kopieren Sie die Datei von Punkt A nach Punkt B. Von außen betrachtet klingt dies möglicherweise nach einer trivialen Aufgabe. Wenn Sie sich auf XML verlassen müssen, die Build-Sprache vieler traditioneller Tools, wird es ziemlich schwierig, diese einfache Logik auszudrücken.
Entwicklung der Java Build Tools
Die Java-Build-Logik muss in XML beschrieben werden. XML eignet sich hervorragend zur Beschreibung hierarchischer Daten, kann jedoch den Programmfluss und die bedingte Logik nicht ausdrücken. Mit zunehmender Komplexität eines Build-Skripts wird die Pflege des Build-Codes zum Albtraum.
In Ant machen Sie das JAR-Ziel vom Kompilierungsziel abhängig. Ant gibt keine Anleitung zur Strukturierung Ihres Projekts. Obwohl es maximale Flexibilität ermöglicht, macht Ant jedes Build-Skript einzigartig und schwer verständlich. Für Ihr Projekt erforderliche externe Bibliotheken werden normalerweise in die Versionskontrolle eingecheckt, da es keinen automatisierten Mechanismus gibt, um sie von einem zentralen Ort abzurufen.
Maven 1 , veröffentlicht im Juli 2004, versuchte diesen Prozess zu vereinfachen. Es bot eine standardisierte Projekt- und Verzeichnisstruktur sowie ein Abhängigkeitsmanagement. Leider ist benutzerdefinierte Logik schwer zu implementieren
Gradle passt genau in diese Generation von Build-Tools und erfüllt viele Anforderungen moderner Build-Tools (Abbildung 1). Es bietet ein ausdrucksstarkes DSL, eine Konvention über den Konfigurationsansatz und ein leistungsstarkes Abhängigkeitsmanagement. Es ist der richtige Schritt, XML aufzugeben und die dynamische Sprache Groovy einzuführen, um Ihre Build-Logik zu definieren. Klingt zwingend, nicht wahr?
Gradle kombiniert die besten Funktionen anderer Build-Tools.
Gradles überzeugender Funktionsumfang
Warum sollten Sie Ihre Java-Projekte mit Gradle anstatt mit Ant oder Maven erstellen?
Das Standard-Build-Tool für Android (und der neue Star der Build-Tools in der JVM) wurde entwickelt, um das Scripting komplexer mehrsprachiger Builds zu vereinfachen. Sollten Sie jedoch darauf umsteigen, wenn Sie Ant oder Maven verwenden?
Der Schlüssel zum Entsperren der Power-Funktionen von Gradle in Ihrem Build-Skript liegt in der Ermittlung und Anwendung des Domänenmodells (siehe Abbildung unten).
Gradle kann nicht alle Anforderungen kennen, die für Ihren Unternehmensaufbau spezifisch sind. Durch das Offenlegen von Hooks in Lebenszyklusphasen ermöglicht Gradle die Überwachung und Konfiguration des Ausführungsverhaltens des Build-Skripts.
Gradle erstellt ein Vokabular für sein Modell, indem er ein in Groovy implementiertes DSL verfügbar macht. Wenn Sie sich mit einer komplexen Problemdomäne befassen, kann in diesem Fall die Aufgabe, Software zu erstellen und eine gemeinsame Sprache zum Ausdrücken Ihrer Logik zu verwenden, ein leistungsstarkes Werkzeug sein.
Ein weiteres Beispiel ist die Art und Weise, wie Sie Abhängigkeiten zu externen Bibliotheken ausdrücken können, ein sehr häufiges Problem, das durch Build-Tools gelöst wird. Out-of-the-Box Gradle bietet Ihnen zwei Konfigurationsblöcke für Ihr Build-Skript, mit denen Sie die Abhängigkeiten und Repositorys definieren können, aus denen Sie sie abrufen möchten. Wenn die Standard-DSL-Elemente nicht Ihren Anforderungen entsprechen, können Sie über den Erweiterungsmechanismus von Gradle sogar Ihr eigenes Vokabular einführen.
Integration mit anderen Build-Tools
Gradle spielt gut mit Ant, Maven und Ivy seiner Vorgänger, wie im Bild unten gezeigt.
Automatisieren Sie Ihr Projekt von der Erstellung bis zur Bereitstellung
Im Bild: Phasen einer Bereitstellungspipeline.
Code kompilieren
Ausführen von Unit- und Integrationstests
Durchführen einer statischen Code-Analyse und Generieren einer Testabdeckung
Verteilung erstellen
Bereitstellung der Zielumgebung
Bereitstellen des Liefergegenstandes
Durchführung von Rauch- und automatisierten Funktionstests
Ich beziehe mich auf zwei Tutorials, um die Antwort eins , zwei zu schreiben
Gradle ist ein Build-System . Build-Systeme sind Softwaretools zur Automatisierung des Programmkompilierungsprozesses. Build-Systeme gibt es in verschiedenen Formen und werden für eine Vielzahl von Software-Build-Aufgaben verwendet. Ihr primäres Ziel ist es, ausführbare Dateien effizient zu erstellen.
Ein weiterer verwandter Begriff ist Build-Automatisierung. Hierbei handelt es sich um den Prozess der Automatisierung der Erstellung eines Software-Builds und der damit verbundenen Prozesse, einschließlich: Kompilieren von Computerquellcode in Binärcode, Packen von Binärcode und Ausführen automatisierter Tests.
Es gibt nur wenige ähnliche Build-Systeme für andere Sprachen (siehe vollständige Liste hier ):
Ich denke, dahinter steckt die Frage, warum das Android Studio / Gradle-Erlebnis so schlecht ist.
Typische Clojure-Erfahrung:
Typisches Android Studio / Gradle-Erlebnis:
Ich bin mir nicht sicher, ob dies genau Gradles Schuld ist. Aber der "Import aus Eclipse-Projekt" scheint ziemlich schuppig. Bei aller angeblichen Raffinesse von Gradle und den Vorzügen eines Build-Systems scheint Android Studio die Build-Abhängigkeiten oder den Build-Prozess nicht sehr gut aus Eclipse zu importieren.
Sie erfahren nicht, wann ein vollständiger Abhängigkeitsgraph nicht importiert werden konnte. Das Android Studio bietet keine nützliche Hilfe oder Tipps zur Lösung des Problems. Es sagt Ihnen nicht, wo Sie manuell in den Eclipse-Ordnern suchen können. Es sagt Ihnen nicht, welche Bibliothek zu fehlen scheint. Oder helfen Sie bei der Suche nach Maven usw. nach ihnen.
2016 funktionieren Dinge wie Leiningen / Clojars oder Node's Npm oder Python's Pip oder das Debian-Apkg (und ich bin sicher, dass viele ähnliche Paketmanager für andere Sprachen und Systeme) alle wunderbar ... fehlende Abhängigkeiten gehören der Vergangenheit an.
Außer mit Android. Android Studio ist jetzt der einzige Ort, an dem ich immer noch die Hölle der fehlenden Abhängigkeit zu erleben scheine.
Ich bin geneigt zu sagen, dass dies Googles Schuld ist. Sie brachen das Android-Ökosystem (und Tausende bestehender Android-Projekte / Online-Tutorials), als sie sich unbekümmert entschieden, von Eclipse zu Android Studio / Gradle zu wechseln, ohne einen robusten Konvertierungsprozess zu erstellen. Leute, deren Projekte in Eclipse funktionieren, passen sie nicht an AS an (vermutlich, weil es ihnen weh tut). Und Leute, die versuchen, diese Projekte in AS zu verwenden, haben die gleichen Probleme.
Und überhaupt, wenn Gradle dieses superstarke Build-System ist, warum verwalte ich dann noch viele andere Abhängigkeiten im SDK-Manager? Warum kann ein Projekt, das beispielsweise das ndk benötigt, dies nicht in seiner Gradle-Datei angeben, damit es bei Bedarf automatisch installiert und erstellt wird? Warum ist NDK etwas Besonderes? Ähnliches gilt für Zielplattformen? Warum installiere ich sie explizit in der IDE, anstatt nur mein Projekt mit ihnen zu vergleichen und dies alles hinter den Kulissen für mich sortieren zu lassen?
Gradle
ist ein erweitertes Build-System sowie ein erweitertes Build-Toolkit, mit dem benutzerdefinierte Build-Logik über Plugins erstellt werden kann!
Vorteile:
Manifest Einträge
Über DSL können folgende Manifesteinträge konfiguriert werden:
Build-Variante
Standardmäßig richtet das Android-Plugin das Projekt automatisch so ein, dass sowohl eine Debug- als auch eine Release-Version der Anwendung erstellt werden.
Abhängigkeiten
Wenn sich in Ihrem lokalen Dateisystem Binärarchive befinden, von denen ein Modul abhängt, z. B. JAR-Dateien, können Sie diese Abhängigkeiten in der Build-Datei für dieses Modul deklarieren.
Zuerst muss das Repository zur Liste hinzugefügt werden, und dann muss die Abhängigkeit so deklariert werden, dass Maven oder Ivy ihre Artefakte deklarieren.
Gradle ist für die Groovy JVM-Sprache das, was Ameise für Java ist. Im Grunde ist es Groovys Build-Tool. Im Gegensatz zu Ant basiert es auf der vollständigen Groovy-Sprache. Sie können beispielsweise Groovy-Skriptcode in das Gradle-Skript schreiben, um etwas zu tun, anstatt sich auf eine bestimmte Domänensprache zu verlassen.
Ich kenne die spezifische Integration von IntelliJ nicht, aber stellen Sie sich vor, Sie könnten Groovy so "erweitern", dass Sie bestimmte "Build" -Sprachprimitive schreiben könnten, und sie wurden einfach Teil der Groovy-Sprache. (Groovys Metaprogrammierung ist eine ganze Diskussion für sich.) IntelliJ / Google könnte Gradle verwenden, um eine sehr hohe Build-Sprache zu erstellen, aber es ist eine Sprache, die auf einem erweiterbaren, offenen Standard basiert.
Gradle ist ein erweitertes Build-Toolkit für Android, das Abhängigkeiten verwaltet und es Ihnen ermöglicht, benutzerdefinierte Build-Logik zu definieren. Funktionen sind wie
Passen Sie den Erstellungsprozess an, konfigurieren Sie ihn und erweitern Sie ihn.
Erstellen Sie mit demselben Projekt mehrere APKs für Ihre App mit unterschiedlichen Funktionen.
Code und Ressourcen wiederverwenden.
Gradle ist ein automatisiertes Build-Toolkit, das sich nicht nur für Android-Projekte in viele verschiedene Umgebungen integrieren lässt.
Hier sind einige Dinge, die Sie mit gradle tun können.
Minimale Konfiguration für neue Projekte erforderlich, da Gradle Standardkonfigurationen für Ihre Android Studio-Projekte hat.
Abhängigkeitserklärung. Sie können Abhängigkeits-JAR-Dateien oder Bibliotheksdateien deklarieren, die auf einem lokalen oder Remote-Server gehostet werden.
Gradle generiert automatisch ein Testverzeichnis und eine Test-APK aus der Quelle Ihres Projekts.
Wenn Sie Ihrer Gradle-Builddatei alle erforderlichen Informationen wie keyPassword
und hinzufügen keyAlias
, können Sie mit Gradle signierte APKs generieren.
Gradle kann mehrere APKs mit unterschiedlichen Paket- und Build-Konfigurationen aus einem einzigen Modul generieren.
In Android Studio ist Gradle ein benutzerdefiniertes Build-Tool, mit dem Android-Pakete (APK-Dateien) erstellt werden, indem Abhängigkeiten verwaltet und benutzerdefinierte Build-Logik bereitgestellt werden.
APK-Datei (Android Application Package) ist eine speziell formatierte Zip-Datei, die enthält
Eine APK-Datei wird signiert und mit ADB (Android Debug Bridge) auf das Gerät übertragen, wo sie ausgeführt wird.
Gradle ist ein benutzerdefiniertes Build-Tool, das zum Erstellen von APK oder als Application Package Kit bezeichnet wird.
von @Brian Gardner:
Gradle ist ein umfangreiches Build-Tool und Abhängigkeitsmanager für Programmierprojekte. Es hat eine domänenspezifische Sprache, die auf Groovy basiert. Gradle bietet auch Unterstützung durch Build-by-Convention für viele Arten von Projekten, einschließlich Java, Android und Scala.
Merkmal von Gradle:
Gradle ermöglicht die Automatisierung der Erstellung komplexer Android-Projekte, die Zehntausende von Codezeilen aus mehreren Quellen, Projekten, Bibliotheken usw. umfassen. Es kann bedingt mehrere optimierte APKs basierend auf einer Vielzahl von Konfigurationsspezifikationen generieren - wenn Sie dies sind interessiert, bieten die anderen Antworten weitere Details zu diesem Aspekt von Gradle.
Wenn Sie jedoch auf Android zu entwickeln, Gradle in 99% der Fälle neu sind ist , was hält Ihr Projekt von Gebäuden. Es ist ein unergründliches, komplexes System, das den Android-Erstellungsprozess effektiv verschleiert und es unerfahrenen Entwicklern im Wesentlichen nicht zur Verfügung stellt, dh um eine einfache Android-Einstiegs-App zu erstellen, muss der ahnungslose Neuling möglicherweise viele Dinge studieren und verstehen, mit denen er nicht verhandelt hat sowie:
All diese Dinge sind für Android-Entwickler interessant und nützlich, aber sie sind alles andere als einfach und stellen eine gewaltige Eintrittsbarriere dar. Ich vermute, was das OP dazu inspiriert hat, diese Frage zu stellen, ist das Gefühl der Frustration, das den Neophytenentwickler unweigerlich trifft, nachdem er viel zu lange versucht hat, eine einfache App zu erstellen und von Gradle kontinuierlich vereitelt zu werden. Das Problem wird durch die überwältigende Menge an hochtechnischer Dokumentation, die für all diese Technologien verfügbar ist, pervers verschärft. Auch für einen großen Entwicklungsbedarf ist Gradle übertrieben.
Eine Alternative besteht darin, ein Shell-Skript zu schreiben, das Ihr Projekt erstellt, indem die im Android SDK verfügbaren Tools automatisiert werden. Die Vorteile dieses Ansatzes sind vielfältig. Für den Anfang ist es wahrscheinlich der beste Weg, den Erstellungsprozess und das Android-Ökosystem zu studieren und zu verstehen, und Sie können vollständig steuern, wie Ihre App erstellt wird. Dieser Ansatz eignet sich jedoch besser für zutiefst uneinlösbare Tech-Köpfe als für unerfahrene Noobs, die Android ausprobieren.
Was durch seine Abwesenheit auffällt (bitte informieren Sie mich, wenn es so etwas gibt), ist eine leichtgewichtige Einstiegs-IDE mit einem reduzierten Funktionsumfang, die gleichzeitig den Erstellungsprozess vereinfacht, ohne ihn zu verdecken (also keine Netbeans oder Eclipse), die sie möglicherweise noch haben könnte benutze Gradle (was mit Ant falsch war). Es sollte einfach sein, APKs zu generieren, die einigen gängigen Konfigurationen entsprechen, und eine Projektstruktur zu verwenden, die sich zu einem vollständigen Android Studio-Projekt entwickeln kann, falls Sie sich dafür entscheiden.
Gradle ist ein von Android Studio bereitgestelltes Tool, um zwei wichtige Prozesse zu implementieren:
Suchergebnisse Ausgewähltes Snippet aus dem Web Android | bauen. gradle. Gradle ist ein Build-System (Open Source), mit dem das Erstellen, Testen, Bereitstellen usw. automatisiert wird. Beispielsweise kann die einfache Aufgabe, einige Dateien von einem Verzeichnis in ein anderes zu kopieren, vor dem eigentlichen Build vom Gradle-Build-Skript ausgeführt werden Prozess passiert.
In Android Studio wird Gradle zum Erstellen unserer Android-Anwendungsprojekte verwendet und spielt somit die Rolle eines Build-Systems. Vor Android Studio haben wir in Eclipse die Anwendungen mit dem Befehlszeilentool kompiliert und erstellt, das bald von GUI-basierten Schritten zum Erstellen und Ausführen von Android-Anwendungen in Eclipse mit ANT übernommen wurde. Jedes Tool zur Entwicklung von Android-Anwendungen muss Ressourcen, Java-Quellcode und externe Bibliotheken kompilieren und zu einer endgültigen APK kombinieren.
Gradle ist ein Build-System, das für das Kompilieren, Testen, Bereitstellen und Konvertieren des Codes in .dex-Dateien und damit das Ausführen der App auf dem Gerät verantwortlich ist.
Da in Android Studio das Gradle-System vorinstalliert ist, müssen keine zusätzlichen Laufzeitsoftware installiert werden, um unser Projekt zu erstellen. Immer wenn Sie in Android Studio auf die Schaltfläche klicken , wird automatisch eine Gradle-Aufgabe ausgelöst und das Erstellen des Projekts gestartet. Nachdem gradle seine Aufgabe abgeschlossen hat, wird die App in AVD oder auf dem angeschlossenen Gerät ausgeführt.
Ein Build-System wie Gradle ist kein Compiler, Linker usw., sondern steuert und überwacht den Vorgang des Kompilierens, Verknüpfen von Dateien, Ausführen von Testfällen und schließlich das Bündeln des Codes in einer APK-Datei für Ihre Android-Anwendung.
Für jedes Android Studio-Projekt gibt es zwei build.gradle- Dateien, eine für Anwendungen und eine für Build-Dateien auf Projektebene (Modulebene) .
Während des Erstellungsprozesses nimmt der Compiler den Quellcode, die Ressourcen, die JAR-Dateien der externen Bibliotheken und die AndroidManifest.xml (die die Metadaten zur Anwendung enthält) und konvertiert sie in .dex-Dateien (Dalvik Executable-Dateien) , die Bytecode enthalten . Dieser Bytecode wird von allen Android-Geräten unterstützt, um Ihre App auszuführen. Dann kombiniert APK Manager die .dex- Dateien und alle anderen Ressourcen zu einer einzigen apk-Datei. APK Packager signiert Debug oder Release Apk mit dem entsprechenden Debug- oder Release-Keystore.
Debug apk wird im Allgemeinen zu Testzwecken verwendet, oder wir können sagen, dass es nur in der Entwicklungsphase verwendet wird. Wenn Ihre App mit den gewünschten Funktionen ausgestattet ist und Sie bereit sind, Ihre Anwendung für den externen Gebrauch zu veröffentlichen, benötigen Sie eine Release-Apk, die mit einem Release-Keystore signiert ist.
Lassen Sie uns nun etwas Licht auf die Gradle-Dateien werfen.
settings.gradle In der Datei settings.gradle (Gradle-Einstellung) werden alle in Ihrer App verwendeten Module angegeben.
build.gradle (Projektebene) Die build.gradle-Datei der obersten Ebene (Modul) ist eine Builddatei auf Projektebene, die Buildkonfigurationen auf Projektebene definiert. Diese Datei wendet Konfigurationen auf alle Module im Android-Anwendungsprojekt an.
build.gradle (Anwendungsebene) Die Datei build.gradle auf Anwendungsebene befindet sich in jedem Modul des Android-Projekts. Diese Datei enthält Ihren Paketnamen als Anwendungs-ID, Versionsname (apk-Version), Versionscode, Minimum und Ziel-SDK für ein bestimmtes Anwendungsmodul. Wenn Sie externe Bibliotheken (nicht die JAR-Dateien) einschließen, müssen Sie diese in der Gradle-Datei auf App-Ebene erwähnen, um sie als Abhängigkeiten der Anwendung in Ihr Projekt aufzunehmen.
Hinweis: Wenn eine bestimmte Anwendung in Variationen für einzelne Module wie Smartphone, Tablet oder TV entwickelt wird, müssen separate Gradle-Dateien für alle erstellt werden. Sie können Ihr Gradle-System sogar über das Befehlszeilen- Tool starten . Folgende Befehle werden dafür verwendet:
./gradlew build - (Projekt
erstellen ) ./gradlew clean build - (Build-Projekt komplett neu
erstellen ) ./gradlew clean build - (Test ausführen )
./gradlew wrapper - (um alle verfügbaren Aufgaben anzuzeigen)
Gradle = Groovy + Cradle Hans Dockter Forum Kommentar
Die Verwirrung ist etwas unnötig, wenn sie in Android Studio nur "Build" oder so genannt werden könnte.
Wir möchten es uns in der Entwicklungsgemeinschaft schwer machen.