1. Vorwort
Vor einiger Zeit fragte jemand in meiner Kultgruppe: „Ich habe erst vor kurzem Android gelernt und verstehe Gradle nicht. Ich habe viele Informationen gelesen und habe immer noch ein Ich hoffe, dass Bruder Zhang mir etwas über Gradle erzählen kann.“ Ehrlich gesagt habe ich nichts dagegen, Bücher zu lesen, aber was ich dagegen habe, ist, dass man, um einen Wissenspunkt zu verstehen, ein Buch lesen muss, was zu ineffizient ist, also hatte ich ein Gewissen und sagte beiläufig: „ Wie wäre es, wenn ich es in der Gruppe öffne?“ Kann ich Ihnen einen Vortrag halten, um die Grundkonzepte von Gradle bekannt zu machen? Ich habe es sofort bereut, weil ich nicht so viel Zeit habe, aber als ich an diesem Abend von den Überstunden nach Hause kam, begann ich, die Arbeit für sie in der Gruppe bekannt zu machen Mehr als eine Stunde lang ohne jegliche Vorbereitung berichteten alle einstimmig, dass die Wirkung sehr gut war und alle, die dem Kurs zuhörten, sehr zufrieden waren. Im Ernst, es gibt viele nachdenkliche Leute, die die von mir getippten Chat-Aufzeichnungen zusammengestellt haben Ich denke, dass dieses Thema für viele meiner Leser hilfreich sein kann, daher habe ich es auf der Grundlage der Notizen zusammengestellt Artikel wird für Sie hilfreich sein!
2. Was ist ein Build-Tool?
Wir alle wissen, dass Gradle ein Build-Tool ist, also was ist ein Build-Tool? Es fällt mir schwer, viele Texterklärungen im Internet zu verstehen. Hier nehme ich unsere Android-Entwicklung als Beispiel.
Früher haben wir Eclipse für die Entwicklung verwendet, und jeder weiß, dass Eclipse eine IDE (Integrated Development Environment) ist. Es wurde ursprünglich für die Java-Entwicklung verwendet und Android basiert ursprünglich auf der Java-Sprache Google oder ich hoffe, dass Android auf Eclipse entwickelt werden kann. Ich glaube, dass diejenigen, die aus der Eclipse-Ära kamen, mit ADT vertraut sein sollten ADT, dass wir von nun an nur noch den Code codieren und dann eine Reihe von Prozessen wie Kompilieren, Ausführen, Signieren und Packen direkt in Eclipse ausführen müssen. Die Arbeit dahinter ist die gesamte Arbeit von ADT. In gewissem Sinne ist ADT unser Build-Tool.
Seitdem Google Android Studio eingeführt hat, hat es die standardmäßige Verwendung von Gradle als Build-Tool angekündigt und dann die Aktualisierung von ADT aufgegeben. Seitdem ist Gradle in den Bereich der Android-Entwickler eingestiegen und ich habe begonnen, Kontakt aufzunehmen damit in der Beta-Version von AS.
Im Allgemeinen verfügen Build-Tools zusätzlich zu den oben genannten Funktionen zum Kompilieren, Ausführen, Signieren usw. Was ist Abhängigkeitsmanagement? Eclipse Wenn Sie bei der Entwicklung von Android eine Bibliothek eines Drittanbieters verwenden müssen, laden Sie normalerweise zuerst die JAR-Datei herunter, fügen Sie die JAR-Datei dann dem libs-Verzeichnis hinzu und können dann im Projekt darauf verweisen. Aber denken Sie nicht, dass diese Verwaltungsmethode problematisch ist? Angenommen, Sie müssen die neueste Jar-Datei herunterladen und dann die Originaldatei ersetzen. Aber wenn Wenn zu viele Bibliotheken von Drittanbietern referenziert werden, kann dies zu Problemen führen. Man kann sagen, dass diese Methode nur auf Abhängigkeit, aber nicht auf Verwaltung basiert.
Jetzt ist jeder mit der Art und Weise vertraut, wie Gradle auf Bibliotheken von Drittanbietern verweist:
compile 'com.android.support:support-v4:24.0.1'
Ist eine solche Abhängigkeitsmethode nicht sehr praktisch? Sie können die Quelladresse direkt sehen, wenn Sie ein Upgrade durchführen. Dies ist die sogenannte Abhängigkeitsverwaltung.
Das Build-Tool ist also eine Sammlung von Funktionen zum Kompilieren, Ausführen, Signieren, Packen, Abhängigkeitsmanagement usw. für Ihr Projekt. Zu den traditionellen Build-Tools gehören Make, Ant, Maven, Ivy usw., während Gradle ist die neue A-Generation automatisierter Build-Tools.
3. Was ist Gradle?
Wie oben erwähnt, ist Gradle ein unabhängiges Projekt und hat nichts mit AS und Android zu tun. https:/ /gradle.org/, Build-Tools wie Ant und Maven basieren alle auf XML, was eine sehr aufgeblähte Sprache namens Groovy verwendet, aber es ist dynamisch. und hat viele Verbesserungen auf der Basis von Java vorgenommen, wodurch es prägnanter und flexibler zu verwenden ist, und Gradle ist vollständig mit Maven und Ivy kompatibel. Dies kündigte im Grunde an, dass Maven und Ivy aufgegeben werden können und der Start von Gradle hauptsächlich auf Java-Anwendungen basiert Hauptsächlich unterstützt es derzeit natürlich Android, C und C.
4. Die Beziehung zwischen Gradle und Android Studio
Wie oben erwähnt, hat Gradle nichts mit Android Studio zu tun, aber die Gradle-Beamten legen beim Start immer noch großen Wert auf die Android-Entwicklung AS Gradle wird als Build-Tool verwendet. Um die Verwendung von Gradle auf AS zu unterstützen, hat Google ein Plug-in für AS namens Android Gradle Plugin erstellt, sodass wir Gradle auf AS vollständig aufgrund dieses Plug-ins verwenden können. Im Stammverzeichnis des Projekts befindet sich eine build.gradle-Datei, die diesen Code enthält:
classpath 'com.android.tools.build:gradle:2.1.2'
Dies ist der Code, der auf dem Gradle-Plugin basiert. Die folgende Versionsnummer stellt die Version des Android-Gradle-Plugins dar, nicht die Gradle-Version. Dies wird von Google bestimmt und hat nichts mit dem offiziellen Gradle zu tun. Weitere Informationen zum Android-Gradle-Plugin finden Sie hier. Hier finden Sie eine Liste der spezifischen Änderungen und spezifischen Funktionen der einzelnen Versionen des Android-Gradle-Plugins:
http://tools.android.com/tech-docs/new-build-system
Freundliche Erinnerung: Sie müssen im Internet surfen wissenschaftlich!
5. Gradle Wrapper
Erstellen Sie jetzt standardmäßig ein neues Projekt und klicken Sie dann auf „Auf AS ausführen“. Standardmäßig wird Gradle nicht installiert Installieren Sie Gradle zusätzlich, aber tatsächlich ist dieser Gradle nicht der echte Gradle. Sein Name ist Gradle Wrapper, was Gradle-Verpackung bedeutet. Angenommen, wir haben mehrere lokale Projekte, eines ist ein älteres Projekt, das noch Gradle 1.0 verwendet Version, und das andere ist ein relativ neues Projekt, das die Gradle 2.0-Version verwendet, aber Sie möchten auf jeden Fall beide Projekte gleichzeitig ausführen. Wenn Sie nur Gradle 1.0 installiert haben, wird es definitiv nicht funktionieren , Google hat das Konzept von Gradle Wrapper eingeführt, das in jedem Ihrer Projekte konfiguriert ist. Mit einer bestimmten Version von Gradle können Sie verstehen, dass jedes Android-Projekt einen kleinen Gradle lokal hat. Dadurch kann jedes Projekt den Aufbau des Projekts mit unterschiedlichen unterstützen Gradle-Versionen.
Es wird einfacher, wenn Sie das Konzept von Gradle Wrapper verstanden haben. Alle folgenden Vorgänge basieren auf Gradle Wrapper.
Wenn wir zum ersten Mal ein Projekt auf AS erstellen, wird Gradle automatisch heruntergeladen. Dieser Vorgang ist sehr langwierig und überraschend langsam, aber nach dem ersten Mal ist er in Ordnung Erfahren Sie, wie Sie es über die Befehlszeile testen. Wechseln Sie bitte in das Verzeichnis Ihres Projekts auf dem Terminal oder dem von AS bereitgestellten Terminal und geben Sie dann ./gradlew -v ein (Win-Benutzer geben gradlew -v direkt ein). Zeigen Sie die im aktuellen Projekt verwendete Version von Gradle an. Gradlew ist die Abkürzung für Wrapper. Wenn Sie die Befehlszeile zum ersten Mal ausführen, wird eine Download-Eingabeaufforderung angezeigt, gefolgt vom Drucken von Punkten nacheinander Das hängt von der Geschwindigkeit Ihres Netzwerks ab. Die Wartezeit kann zwischen einigen Minuten und mehreren Dutzend Minuten liegen.
Einige Leute haben Fragen, die auf meinem AS ausgeführt werden können, was bedeutet, dass ich Gradle erneut über die Befehlszeile herunterladen muss Theoretisch sollte es nicht sein. Es wurde erneut heruntergeladen, aber tatsächlich musste es einfach erneut heruntergeladen werden. Ich vermute, dass es sich um einen Fehler handelt.
Wenn der Download abgeschlossen ist und Sie ./gradlew -v eingeben und die folgenden Ergebnisse angezeigt werden, beweist dies, dass Ihr Projekt in Ordnung ist, andernfalls liegt ein Problem mit Ihrer Projektkonfiguration vor.
6. Gradle-Konfigurationsdatei im Android-Projekt enthalten
Nehmen wir als Beispiel das 9GAG-Projekt, das ich sehr früh auf GitHub veröffentlicht habe, um das vorzustellen Nächstes. Das komplette Android-Projekt enthält grundlegende Gradle-bezogene Konfigurationsdateien:
Lassen Sie uns den rot markierten Teil von oben nach unten Schritt für Schritt analysieren:
9GAG/app/build.gradle
Diese Datei ist die Gradle-Konfigurationsdatei des Moduls im App-Ordner. Sie kann auch als die wichtigste Gradle-Konfigurationsdatei des gesamten Projekts angesehen werden.
9GAG/extras/ShimmerAndroid/build.gradle
Jedes Modul benötigt eine Gradle-Konfigurationsdatei. Die Syntax ist dieselbe. Der einzige Unterschied besteht darin, dass die Deklaration am Anfang ist Verzeichnis. Sie können sehen, dass sich darin zwei Dateien befinden. Wir sehen uns hauptsächlich den Inhalt von gradle-wrapper.properties an:
apply plugin: ‘com.android.library’ 9GAG/gradle
Sie können sehen, dass das Verzeichnis und der Download von Der darin angegebene Gradle-Pfad und die vom aktuellen Projekt verwendete Gradle-Version werden im Allgemeinen nicht geändert. Die in dieser Datei angegebene falsche Gradle-Version ist auch einer der Gründe, warum viele Paketimporte fehlschlagen.
9GAG/build.gradleDiese Datei ist die Gradle-Basiskonfigurationsdatei für das gesamte Projekt. Der Standardinhalt deklariert die Version des Android-Gradle-Plugins. 9GAG/settings.gradleDiese Datei ist die globale Projektkonfigurationsdatei, die hauptsächlich einige Module deklariert, die zu Gradle hinzugefügt werden müssen. Schauen wir uns den Inhalt dieser 9GAG-Datei an :7. Wie importiert man heruntergeladene Open-Source-Projekte richtig?
Wir finden oft einige hervorragende Open-Source-Projekte auf GitHub und möchten sie dann herunterladen Lernen, aber der erste Schritt ist normal. Sie alle importieren den Quellcode in AS und führen ihn dann aus, um die Wirkung zu sehen, aber der Vorgang schlägt oft fehl. Hier erkläre ich Ihnen, wie Sie Open-Source-Projekte richtig importieren:下载一个Demo,先打开每个 module下的 gradle 文件,即 app 目录下的 build.gradle 以及各个 library 下的 build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion,因为有些时候你本地的版本和下载的版本不一致,那么就会导致失败。
然后就是检查 gradle-wrapper ,Google 有些时候要求不同的 AS 支持不同的 gradle 版本。比如 AS 1.0 的时候要求必须使用 gradle 1.x 的版本,等到 AS 2.0 的时候,Google 不支持 gradle1.x 的版本,这个时候你必须手动更新下 android gradle plugin 的版本,然后重新同步下。
检查以上两个地方基本就可以导入并运行了,如果还有其他问题,那可能就是环境或者项目本身的问题了。
8. 认识下几个命令
上面提到了,假设我们没有 IDE ,只有类似 Sublime、Atom、Vim这种轻量编辑器怎么办?那我们就没法开发 Android 了么?然而只要有构建工具,不需要 IDE 我们一样有办法开发,这个时候我们就需要用到几个有用的 Gradle 命令了:
./gradlew -v 版本号 ./gradlew clean 清除9GAG/app目录下的build文件夹 ./gradlew build 检查依赖并编译打包
这里注意的是 ./gradlew build 命令把 debug、release 环境的包都打出来,如果正式发布只需要打 Release 的包,该怎么办呢,下面介绍一个很有用的命令 assemble , 如
./gradlew assembleDebug 编译并打Debug包 ./gradlew assembleRelease 编译并打Release的包