Seit dem letzten Update (Build ab 25. Juni) sind alle Änderungen im Android Studio Gradle schmerzhaft langsam. Und es scheint auch Änderungen automatisch zu verfolgen, wenn Sie die Datei bearbeiten und beim Keyup neu kompilieren.
Jede Änderung dauert auf meinem i5 einige Minuten.
Irgendeine Idee, wie ich meine Gradle-Änderungen beschleunigen kann?
android
android-studio
Einar Sundgren
quelle
quelle
Antworten:
Die Entwickler arbeiten daran. Wie ich in dieser Antwort gepostet habe, besteht die derzeit schnellste Lösung darin, gradle über die Befehlszeile zu verwenden, und Sie sollten für alle Module, die Sie nicht entwickeln, zu binären Bibliotheken wechseln. Auf g + gibt es a Diskussion mit den Entwicklern darüber.
quelle
Macht definitiv einen Unterschied: Gewusst wie ... Beschleunigen Sie die Bauzeit von Gradle
Erstellen Sie einfach eine Datei mit dem Namen
gradle.properties
im folgenden Verzeichnis:Fügen Sie diese Zeile zur Datei hinzu:
quelle
Nach Änderung dieser Einstellungen reduzierte sich meine Kompilierungszeit um 10 Minuten auf 10 Sekunden.
Schritt 1:
Schritt 2:
Schritt 3: In Ihrer Datei gradle.properties -> Fügen Sie die folgenden Zeilen hinzu
Aktualisieren:
Wenn Sie Android Studio 2.0 oder höher verwenden, versuchen Sie es mit Instant Run
Weitere Informationen zu Instant Run - https://developer.android.com/studio/run/index.html#instant-run
quelle
Ich konnte meinen Gradle-Build auf meinem alten core2duo-Laptop (mit Linux Mint) von 43 Sekunden auf 25 Sekunden reduzieren, indem ich der Datei gradle.properties in Android Studio Folgendes hinzufügte
Quelle, warum die Daemon-Einstellung Builds beschleunigt: https://www.timroes.de/2013/09/12/speed-up-gradle/
quelle
Das Befolgen der Schritte macht es 10-mal schneller und reduziert die Bauzeit um 90%
Erstellen Sie zunächst eine Datei mit dem Namen gradle.properties im folgenden Verzeichnis:
Fügen Sie diese Zeile zur Datei hinzu:
Und überprüfen Sie diese Optionen in Android Studio
quelle
Es gibt eine neuere Version von gradle (Version 2.4).
Sie können dies für Ihre Projekte festlegen, indem Sie das Dialogfeld "Projektstruktur" im Menü "Datei" öffnen.
und setzen Sie es auf '2.4'.
Weitere Informationen zur Leistungssteigerung finden Sie unter diesem Link .
quelle
Mit Android Studio 2.1 können Sie "Dex In Process" für schnellere App-Builds aktivieren.
Weitere Informationen dazu erhalten Sie hier: https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.vijksflyn
quelle
Dies ist, was ich getan habe und meine Gradle-Build-Geschwindigkeit hat sich dramatisch verbessert! von 1 Minute bis 20 Sekunden für den ersten Build und nachfolgende Builds wurden von 40 Sekunden bis 5 Sekunden.
In der gradle.properties Datei Fügen Sie diese:
In den BefehlszeilenargumentenGehen Sie in über Gehe zu Datei> Andere Einstellungen> Standardeinstellungen> Erstellen, Ausführen, Bereitstellen> Erfüllen und fügen Sie die folgenden Argumente zu Befehlszeilenargumenten hinzu
Füge das hinzu:
quelle
Vermeiden Sie bei der Android-Entwicklung die Verwendung eines Mac / PC mit nur 8 GB RAM. Sobald Sie auch nur einen Emulator (Genymotion oder auf andere Weise) starten, werden Ihre Build-Zeiten in Android Studio mit Gradle-Builds extrem langsam. Dies geschieht auch dann, wenn Sie eine einfache einzeilige Änderung an einer Quelldatei vornehmen.
Das Schließen des Emulators und die Verwendung eines realen Geräts hilft viel, aber dies ist natürlich sehr einschränkend und weniger flexibel. Das Reduzieren der RAM-Auslastung des Emulators kann hilfreich sein. Am besten stellen Sie jedoch sicher, dass Ihr Laptop über mindestens 12 bis 16 GB RAM verfügt.
Update (Juni 2017): Es gibt jetzt mehrere gute Artikel auf medium.com, in denen ausführlich erklärt wird, wie Android Studio Gradle Builds beschleunigt werden können, und es funktioniert sogar auf 8-GB-Computern:
Der zusammengefasste Konsens lautet:
Erstellen Sie eine gradle.properties- Datei (entweder global
~/.gradle/gradle.properties
oder lokal für das Projekt) und fügen Sie die folgenden Zeilen hinzu:quelle
Offline-Arbeit aktivieren
Verbessern Sie die Gradle-Leistung, indem Sie folgenden Code hinzufügen
gradle.properties
Schritt-für-Schritt-Anleitung: http://www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html
quelle
quelle
Laut dieser Seite des Android-Teams von Wikimedia Apps besteht eine gute Möglichkeit zur Optimierung von Gradle-Builds darin, diese Zeilen zu Ihren ~ / .gradle / gradle.properties hinzuzufügen
Für diejenigen, die die Datei nicht haben, gibt es zwei Möglichkeiten:
Fügen Sie die Datei lokal in Ihr Projekt ein, indem Sie eine Datei mit dem Namen gradle.properties im Projektstamm erstellen oder
Sie können sie global für alle Ihre Projekte festlegen, indem Sie dieselbe Datei in Ihrem Ausgangsverzeichnis erstellen (% UserProfile% .gradle unter Windows , ~ / .gradle unter Linux und Mac OS X ).
Es wird empfohlen , die Eigenschaften in Ihrem Home-Verzeichnis und nicht auf Projektebene festzulegen.
quelle
Sie können auch die Befehlszeile verwenden, um eine bessere Leistung zu erzielen. Sie können den Befehl ./gradlew
<task name>
aus dem Stammordner Ihres Projekts unter Linux verwenden oder die Datei gradlew.bat wie gradlew verwenden<task name>
wenn Sie zum ersten Mal einen der obigen Befehle für einen bestimmten Gradle ausführen In dieser Version wird die entsprechende Gradle-Distribution heruntergeladen und zum Ausführen des Builds verwendet.Wenn Sie ein Gradle-Projekt über seinen Wrapper importieren, fordert Ihre IDE möglicherweise die Verwendung der Gradle-Verteilung "Alle" an. Dies ist vollkommen in Ordnung und hilft der IDE, die Code-Vervollständigung für die Build-Dateien bereitzustellen. Dies bedeutet nicht nur, dass Sie Gradle nicht manuell installieren müssen, sondern Sie müssen auch die Version von Gradle verwenden, für die der Build entwickelt wurde. Dies macht Ihre historischen Builds zuverlässiger. Weitere Informationen finden Sie unter Ausführen eines Builds mit dem Wrapper
quelle
Erhöhen Sie für schnellere Builds die maximale Heap-Größe für den Gradle-Daemon auf mehr als 2048 MB.
Dazu setzen Sie
org.gradle.jvmargs=-Xmx2048M
im Projekt gradle.properties .
quelle
build.gradle
Datei hinzufügen :Ich hoffe, es hilft.
quelle
Ich verwende ein i7 der 5. Generation mit Windows 10 und einem 1 TB Solid State. Ich habe den Ordner "Android Studio Projects" komprimiert und einen Anstieg von ca. 80% erzielt. Hoffe das hilft.
Ich habe es dann mit den obigen Lösungen kombiniert, dh (org.gradle.parallel = true, org.gradle.daemon = true). Der Leistungsschub war ziemlich beeindruckend.
Zusätzlich:
Alle oben genannten Antworten sind völlig richtig, aber ich muss als erfahrener Android-Entwickler (von viereinhalb Jahren) Folgendes angeben: Kein Android / Gradle-Entwickler sollte auf einem Computer mit einem Spinner-Laufwerk arbeiten Fester Zustand. Wir alle haben diese Wiedergabetaste in der IDE 100 Mal pro Tag gedrückt. Als ich von einem Spinner zu SSD (Post Gradle) wechselte, war meine Geschwindigkeit und Effizienz buchstäblich zwei- bis viermal schneller und ich verspreche Ihnen, dass ich hier NICHT übertreibe.
Jetzt spreche ich nicht von einer Maschine mit einer kleinen SSD und einem großen Spinner, sondern von einer großen SSD. Wenn Sie bereits einen Computer mit einer kleinen SSD und einem großen Spinner haben, können Sie den kleinen Spinner auf eine 500-GB-SSD aktualisieren und die SSD als Ihr Hauptbetriebssystem mit den darauf installierten Entwicklertools festlegen.
Wenn Sie also in einer schnelllebigen Umgebung arbeiten, zeigen Sie diesen Beitrag bitte Ihrem Chef. Eine anständige 1-TB-SSD bringt Ihnen etwa 300 GBP (einschließlich Mehrwertsteuer) oder etwa 160 GBP für eine 500-GB-SSD zurück. Je nachdem, ob Sie ein Junior- oder Senior-Android-Entwickler sind, macht sich das Laufwerk in 1 - 2 Arbeitswochen (in etwa zweieinhalb bis 5 Arbeitstagen) bezahlt, wenn Sie in ein kleineres investieren. sagen wir 500 GB SSD.
Viele Entwickler mögen argumentieren, dass dies nicht der Fall ist, aber es ist der Fall für Gradle, da das Gradle-System den direkten Festplattenzugriff sehr schwer macht. Wenn Sie mit .NET / C # / VB Net oder anderen Entwicklungstools arbeiten, werden Sie keinen großen Unterschied bemerken, aber der Unterschied in Gradle ist RIESIG. Wenn Sie auf diesen Beitrag reagieren, verspreche ich Ihnen, werden Sie nicht enttäuscht sein. Persönlich verwende ich den i7 der fünften Generation mit 8 GB RAM, der ursprünglich mit einem 1-TB-Spinner geliefert wurde, und habe ihn auf eine Samsung SSD 840 EVO 1 TB aktualisiert. Seitdem habe ich nie mehr zurückgeschaut. Ich habe meine gekauft von: https://www.aria.co.uk .
Hoffe das hilft. Außerdem muss ich sagen, dass dies KEIN kommerziell motivierter Beitrag ist. Ich empfehle Aria nur, da ich sie schon oft verwendet habe und sie immer zuverlässig waren.
quelle
Einige Befehle, die wir der Datei gradle.properties hinzufügen können:
org.gradle.configureondemand = true - Dieser Befehl weist gradle an, nur die Projekte zu erstellen, die wirklich erstellt werden müssen. Use Daemon - org.gradle.daemon = true - Daemon hält die Instanz des Gradles auch nach Abschluss Ihres Builds im Hintergrund aktiv. Dadurch entfällt die Zeit, die zum Initialisieren des Gradles erforderlich ist, und das Build-Timing wird erheblich verkürzt.
org.gradle.parallel = true - Erlaube gradle, dein Projekt parallel zu erstellen. Wenn Ihr Projekt mehrere Module enthält, kann gradle durch Aktivieren dieser Option Build-Operationen für unabhängige Module parallel ausführen.
Heap-Größe erhöhen - org.gradle.jvmargs = -Xmx3072m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8 - Seit Android Studio 2.0 verwendet Gradle Dex, um die Build-Timings für das zu verringern Projekt. Im Allgemeinen werden beim Erstellen der Anwendungen mehrere dx-Prozesse auf verschiedenen VM-Instanzen ausgeführt. Ab Android Studio 2.0 werden alle diese dx-Prozesse in einer einzelnen VM ausgeführt, und diese VM wird auch mit dem Gradle geteilt. Dies verkürzt die Erstellungszeit erheblich, da der gesamte Dex-Prozess auf denselben VM-Instanzen ausgeführt wird. Dies erfordert jedoch einen größeren Speicher, um alle Dex-Prozesse und Gradle aufzunehmen. Das bedeutet, dass Sie die vom Gradle-Daemon benötigte Heap-Größe erhöhen müssen. Standardmäßig beträgt die Heap-Größe für den Daemon etwa 1 GB.
Stellen Sie sicher, dass keine dynamische Abhängigkeit verwendet wird. Verwenden Sie also nicht die Implementierung 'com.android.support:appcompat-v7:27.0.+'. Dieser Befehl bedeutet, dass gradle bei jeder Erstellung der App online geht und nach der neuesten Version sucht. Verwenden Sie stattdessen feste Versionen, z. B. 'com.android.support:appcompat-v7:27.0.2'.
quelle
Fügen Sie dies Ihrer
gradle.properties
Datei hinzuquelle
Öffnen Sie gradle.properties aus dem Android-Ordner und kommentieren Sie hervorgehobene Zeilen aus und geben Sie Speicherwerte gemäß Ihrer Computerkonfiguration an. Ich habe 8 GB RAM auf meinem Computer, also habe ich maximal 4096 MB bzw. 1024 MB angegeben.
Danach wurde meine Bauzeit auf die Hälfte reduziert. Fröhliches Bauen !!
quelle
Dies passiert häufig, wenn Sie Multidex in Ihrem Projekt aktiviert haben. Dies kann möglicherweise Ihren Entwicklungsprozess verlangsamen !! Laut doc :
Sie können dies jedoch optimieren:
Sie müssen also die minSdkVersion auf 21 oder höher einstellen !
Wenn Ihre Produktionsversion jedoch minSdkVersion unter 21 unterstützen muss, z. B. 19
Mit productFlavors können Sie minSdkVersion 21 für Ihre Entwicklungsversion festlegen :
quelle
Ich bevorzuge das Erstellen über die Befehlszeile, um bessere Erstellungszeiten zu erzielen. Wenn Ihre App-Codebasis groß ist und Sie über mehrere Module verfügen, können Sie den hier beschriebenen lokalen AAR-Ansatz ausprobieren. Dies erhöht die Leistung von Android Studio und die Gradle-Erstellungszeiten erheblich. Es ist auch mit Befehlszeilen-Builds kompatibel
https://blog.gojekengineering.com/how-we-improved-performance-and-build-times-in-android-studio-306028166b79
Demo-Projekt mit Integrationsanweisungen finden Sie hier: https://github.com/akhgupta/AndroidLocalMavenRepoAARDemo
quelle