wake-up-neo.com

Was ist eine gradle wrapper- und gradlew.bat-Datei?

In letzter Zeit lernte ich die Leistungsfähigkeit von Gradle als Build-System kennen, und als Android-Entwickler möchte ich es gründlich verstehen.

Ein Artikel sagte folgendes:

"Sie können alle für Ihr Android-Projekt verfügbaren Build-Aufgaben mit dem Befehlszeilentool" Gradle Wrapper "ausführen. Sie ist als Batch-Datei für Windows (gradlew.bat) und als Shell-Skript für Linux und Mac (gradlew.sh) verfügbar. und es ist über das Stammverzeichnis jedes Projekts, das Sie mit Android Studio erstellen, zugänglich. "

Verwenden Sie einen der folgenden Befehle, um eine Aufgabe mit dem Wrapper auszuführen:

Unter Windows: gradlew Aufgabenname

Nun habe ich einige Zweifel, die wie folgt lauten:

  1. Was ist Gradle Wrapper und Gradlew.bat?
  2. Wenn ich Android Studio installiert habe und Gradle zum Erstellen meiner Apps verwendet (also Gradle ist bereits in meinem System installiert), muss ich in diesem Fall noch Gradle für den Build-Zweck von der Befehlszeile aus installieren, wenn ich ein Kommentar schreibe Wie gradle, gradlew in meiner Befehlszeile, erhalte ich die Fehlermeldung, dass gradlew nicht als interner oder externer Befehl erkannt wird (derselbe Fehler für andere Befehle). Ich verwende es möglicherweise auf einem falschen Pfad. Welchen Pfad brauche ich, um gradle-bezogene Befehle zu verwenden?
  3. Wie und wo finde ich die Datei, wenn ich sie herunterladen und installieren muss? und die anderen Prozesse? 

Ich verwende dafür einen Windows-Rechner.

13
Abhishek Kumar

Der Gradle-Wrapper ist ein optionaler Bestandteil des Gradle-Build-Systems. Es besteht aus vier Dateien, die Sie in das Versionskontrollsystem einchecken. Das * nix-Startskript <your root project>/gradlew, das <your root project>/gradlew.bat-Windows-Startskript, <your root project>/gradle/wrapper/gradle-wrapper.jar, das die Klassendateien für den Wrapper enthält und von den Startskripts gestartet wird, und <your root project>/gradle/wrapper/gradle-wrapper.properties, das einige Konfigurationen für den Wrapper enthält, z. B. welche Gradle-Version zum Erstellen des Projekts verwendet wird .

Meiner Meinung nach sollte jedes Gradle-Projekt, auch das kleinste, den Gradle-Wrapper verwenden.

Der Gradle-Wrapper stellt sicher, dass Ihr Build immer mit der gleichen Gradle-Version ausgeführt wird, unabhängig davon, wer das Build ausführt und wo oder ob Gradle installiert ist oder nicht, solange der Builder das Gradle-Wrapper verwendet, um das Projekt zu erstellen. Dies bedeutet, dass Sie Ihren Build für diese Gradle-Version entwerfen können und sicherstellen können, dass der Build nicht fehlschlägt, nur weil jemand eine andere Version von Gradle verwendet und daher auch ein wichtiger Schritt für die Reproduzierbarkeit des Builds ist.

Jemand, der Ihr Projekt erstellen möchte, muss lediglich Java installiert haben. Er muss keine Gradle-Version installiert haben. Tatsächlich wird jede bereits installierte Gradle-Version ignoriert. Der Gradle-Wrapper prüft, ob in ~/.gradle/ bereits die für den Build erforderliche Version vorhanden ist, da ein Gradle-Wrapper eines Projekts bereits vorhanden ist. Wenn es bereits vorhanden ist, wird es verwendet, andernfalls wird es automatisch heruntergeladen.

Wenn Sie in die Befehlszeile gradlew eingeben und der Befehl nicht gefunden wird, bedeutet dies, dass Sie den Pfad der Root-Projekte nicht in die Umgebungsvariable PATH gestellt haben (dies würde ich auch nicht empfehlen). Sie befinden sich derzeit nicht in Ihrem Root-Projektverzeichnis . Um einen Gradle-Build auszuführen, müssen Sie sich irgendwo in Ihrem Projekt befinden und Gradle oder den Gradle-Wrapper aufrufen. Aber wie bei jeder ausführbaren Datei, die sich nicht im Pfad befindet, müssen Sie natürlich ihren Pfad angeben. Wenn Sie sich in Ihrem Stammprojektverzeichnis befinden, können Sie einfach gradlew ausführen. Wenn Sie sich in <root project dir>/foo/bar/ befinden, müssen Sie ../../gradlew aufrufen.

Die Gradle-Wrapper-Dateien werden von der implizit verfügbaren Gradle-Task wrapper generiert und dann in das VCS des betreffenden Projekts eingecheckt. Wenn diese vier Dateien für ein Projekt nicht vorhanden sind, wird der Gradle-Wrapper nicht verwendet, und Sie sollten eine Verbesserungsanforderung an das Projekt senden, um es hinzuzufügen.

Wenn ein Projekt den Gradle-Wrapper nicht verwendet, aber Builds mit Gradle erstellt, können Sie entweder Gradle installieren und anstelle von gradlegradlew verwenden, oder Sie können sogar den Gradle-Wrapper eines anderen Projekts aufrufen, das auf der Festplatte verfügbar ist. Der Build wird dann mit der Gradle-Version ausgeführt, die von der Wrapper- oder Gradle-Installation verwendet wird, und verhält sich daher möglicherweise nicht wie erwartet. Aus diesem Grund sollte eigentlich jedes Projekt den Wrapper verwenden, wenn er Gradle verwendet.

21
Vampire
  1. gradlew.bat IS der Gradle-Wrapper (in diesem Fall für Windows). Gradle Wrapper ist nur ein kleines Dienstprogramm, mit dem sichergestellt wird, dass Gradle installiert ist (oder bei Bedarf installiert wird), sodass Sie das Projekt immer erstellen können. Mit Gradle können Sie Abhängigkeiten verwalten und Konfigurationen für Ihr Projekt erstellen.

  2. Wenn Sie Android Studio installiert haben, haben Sie Gradle installiert und können loslegen. (Technisch gesehen hat jedes Projekt einen eigenen Wrapper für die Installation/Verwendung von Gradle.)

  3. Wie ich oben erwähnt habe, sind Sie gut zu gehen.

Am Ende ist Gradle ein Befehlszeilentool, das Sie zum Erstellen Ihres Projekts verwenden, und Sie können das sehr gut direkt verwenden (obwohl dies nicht unbedingt erforderlich ist), da es genau das ist, was Android Studio zum Erstellen Ihres Projekts verwendet.

1
RobertoCuba

Nach Kommentaren bearbeitet

Gradle ist ein Buildsystem.

Dieser Gradle-Wrapper ist eine der wichtigsten Schnittstellen zum Erstellen von Android-Projekten. Es ist Teil des Gradle-Build-Systems und führt eine primäre Überprüfung durch, ob Gradle installiert ist oder nicht.

gradlew.bat - es ist eine Batchdatei , die unter Windows verwendet wird. Sie können es sogar mit einem Notizblock öffnen, um die darin enthaltenen Anweisungen anzuzeigen. Stapeldateien sind wie 'Befehle', die in eine auszuführende Datei geschrieben werden. Sie verwenden es (bei Windows), um Buildbefehle auszuführen. Es prüft auch, ob Gradle installiert ist oder nicht. Sollte dies nicht der Fall sein, wird es heruntergeladen und installiert.

Beispiel: Android-App unter Windows erstellen:

  • Öffnen Sie die Eingabeaufforderung
  • Navigieren Sie zum Stammverzeichnis Ihres Projekts
  • gradlew.bat assembleDebug ausführen

Es startet den Wrapper, prüft, ob dort Gradle installiert ist und Führt alle "gradle-spezifischen" Befehle aus, um Ihr Projekt zu erstellen.

Müssen Sie Gradle installieren?

Nicht wirklich. Es ist die Aufgabe dieses gradlew-Skripts, dies zu überprüfen. Wenn Gradle noch nicht vorhanden ist, wird es automatisch heruntergeladen und für alle späteren Builds verwendet.

0
ZeekHuge