Das Erstellen und Ausführen einer App über Gradle und Android Studio ist langsamer als über Eclipse


461

Ich habe ein Multiprojekt (~ 10 Module), dessen Aufbau jedes Mal etwa 20 bis 30 Sekunden dauert. Wenn ich in Android Studio auf Ausführen drücke, muss ich jedes Mal warten, um die App neu zu erstellen, was extrem langsam ist.

Ist es möglich, den Erstellungsprozess in Android Studio zu automatisieren? Oder haben Sie Ratschläge, wie Sie diesen Prozess beschleunigen können?

In Eclipse dauert das Ausführen desselben Projekts auf einem Emulator dank der automatischen Erstellung etwa 3 bis 5 Sekunden.

Dies ist meine build.gradle-Datei (App-Modul):

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

23
Bitte beachten Sie, dass derzeit weder das Gradle-basierte Build-System noch Android Studio produktionsfähig sind.
CommonsWare

11
Die hier verbrachte Zeit ist höchstwahrscheinlich in der DEXing-Phase. Leider scheint die Marke von Android Studio jedes Mal eine Bereinigung durchzuführen, was dazu führt, dass die zuvor dexierten Dateien gelöscht werden. Hoffentlich sehen wir bald eine inkrementelle Build-Korrektur.
Richard J. Ross III

3
Gibt es in der Zwischenzeit eine einfache Möglichkeit, die Standard-Gradle-Aufgaben so zu ändern, dass sie nicht immer sauber sind?
Sigmabeta

10
@ CommonsWare gut, es gibt keine Entschuldigung, jetzt sind wir auf Version 1.02, aber es ist immer noch ein großes Problem. Wenn Android Studio läuft, verbraucht mein 4 GB Quad-Core-Laptop etwa 3,75 GB RAM, der nur eine einzige Instanz eines Hallo-Welt-Projekts enthält. Es ist auch infolgedessen sehr träge. Für mich bedeutet das einen schwerwiegenden und anhaltenden Designfehler. Ich hoffe, die Dinge sind bald gelöst.
Andrew S

7
@ Andrews Ich finde es schade, dass wir unser Betriebssystem ändern müssen, damit Gradle im Vergleich zu den vorherigen Tools mit einer angemessenen Geschwindigkeit ausgeführt werden kann.
Richard Le Mesurier

Antworten:


441

Hardware

Es tut mir leid, aber das Upgrade der Entwicklungsstation auf SSD und Tonnen RAM hat wahrscheinlich einen größeren Einfluss als die unten aufgeführten Punkte zusammen.

Tools-Versionen

Die Steigerung der Build-Leistung hat für die Entwicklungsteams höchste Priorität. Stellen Sie daher sicher, dass Sie das neueste Gradle- und Android-Gradle-Plugin verwenden .

Konfigurationsdatei

Erstellen Sie eine Datei mit dem Namen gradle.propertiesin einem beliebigen Verzeichnis:

  • /home/<username>/.gradle/ (Linux)
  • /Users/<username>/.gradle/ (Mac)
  • C:\Users\<username>\.gradle (Windows)

Anhängen:

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

# Set to true or false to enable or disable the build cache. 
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true

Gradle-Eigenschaften funktionieren lokal, wenn Sie sie platzieren, projectRoot\gradle.propertiesund global, wenn Sie sie platzieren user_home\.gradle\gradle.properties. Eigenschaften, die angewendet werden, wenn Sie Gradle-Aufgaben von der Konsole oder direkt von der Idee aus ausführen:

IDE-Einstellungen

Es ist möglich, die Gradle-IntelliJ-Integration über die GUI der IDE-Einstellungen zu optimieren. Durch Aktivieren von "Offline-Arbeit" ( siehe Antwort von Yava unten) werden echte Netzwerkanforderungen für jede "Sync Gradle-Datei" deaktiviert.

IDE-Einstellungen

Native Multi-Dex

Einer der langsamsten Schritte des apk-Builds ist das Konvertieren von Java-Bytecode in eine einzelne Dex-Datei. Durch Aktivieren von nativem Multidex (minSdk 21 nur für Debug-Builds) kann das Tool den Arbeitsaufwand reduzieren (siehe Antwort von Aksel Willgert unten).

Abhängigkeiten

Bevorzugen Sie @aarAbhängigkeiten gegenüber Bibliotheksunterprojekten.

Suchen Sie ein Paket auf mavenCentral , jCenter oder verwenden Sie jitpack.io , um eine Bibliothek aus github zu erstellen. Wenn Sie keine Quellen der Abhängigkeitsbibliothek bearbeiten, sollten Sie diese nicht jedes Mal mit Ihren Projektquellen erstellen.

Antivirus

Ziehen Sie in Betracht, Projekt- und Cache-Dateien vom Antivirenscan auszuschließen. Dies ist offensichtlich ein Kompromiss mit der Sicherheit (versuchen Sie dies nicht zu Hause!). Wenn Sie jedoch häufig zwischen Zweigen wechseln, scannt Antivirus die Dateien erneut, bevor der Gradle-Prozess sie verwenden kann, was die Erstellungszeit verlangsamt (insbesondere das AndroidStudio-Synchronisierungsprojekt mit Gradle-Dateien und Indizierungsaufgaben). Messen Sie die Erstellungszeit und verarbeiten Sie die CPU mit und ohne aktiviertem Antivirus, um festzustellen, ob dies in Zusammenhang steht.

Profiling eines Builds

Gradle verfügt über eine integrierte Unterstützung für Profilierungsprojekte . Verschiedene Projekte verwenden eine unterschiedliche Kombination von Plugins und benutzerdefinierten Skripten. Die Verwendung --profilehilft, Engpässe zu finden.


1
über @ aar depedencies: zB dependencies {compile 'com.android.support:support-v4:21.0.+'}ist eine langsame Lösung? nicht sicher zu verstehen
younes0

1
Imaging haben Sie eine Bibliothek wie diese hinzugefügt: github.com/novak/numberpicker . Es hat einen Wert und bietet eine Codelösung für ein Problem, aber der Autor hat es nirgendwo wie in maven oder jCenter veröffentlicht. Jetzt bringen Sie diese Bibliothek entweder als Quelle in Ihr Projekt und erstellen sie jedes Mal, wenn das Hauptprojekt erstellt wird, oder kompilieren sie einmal und schreiben nur @aar in Ihr Projekt-Repository. Es ist also wirklich eine Wahl zwischen Quelle und binärer Abhängigkeit. Wenn Sie die Quelle nicht bearbeiten, sollten Sie Ihre Abhängigkeit als vorkompilierte Binärdatei angeben. Für einfache Java-Bibliotheken, die .jar ist, für Android-Bibliotheken, die .aar ist
Sergii Pechenizkyi

1
Es ist Projekteinstellungen> Gradle. Siehe Screenshot unten: i.stack.imgur.com/wrwgo.png
Sergii Pechenizkyi

2
Ich habe alle Optimierungen wie beschrieben eingerichtet. In Android Studio dauert das Starten meiner App jedoch 3 bis 4 Minuten, während es in Eclipse etwa 30 Sekunden waren. Mist. Nur 12 Projekte, eine einzige App zum Ausführen! Android-Entwickler sind jetzt so umständlich geworden, und das ist mehr als ein Jahr später.
3c71

1
Ich habe alle Optimierungen angewendet und es dauert immer noch ungefähr 20 Sekunden, um eine HelloWorld-Apk zu erstellen, verglichen mit 2-3 Sekunden in Eclipse.
Pawel

148

Sie können die aktuellen Aktualisierungsprüfungen ignorieren.

Geben Sie hier die Bildbeschreibung ein

Für Windows mit Android Studio 1.5: Gehen Sie zu File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

von ~ 30 + Sek. auf ~ 3 Sek


24
Das ist ziemlich toll. Das ist viel schneller. Aber was bricht das?
John Ballinger

2
Beste Lösung. Kann ich die Nebenwirkungen dieser Lösung kennen
Kavin Varnan

26
@JohnBallinger Offline-Arbeit - Verwenden Sie dieses Kontrollkästchen, um mit Gradle im Offline-Modus zu arbeiten. In diesem Fall verwendet Gradle Abhängigkeiten aus dem Cache. Gradle versucht nicht, auf das Netzwerk zuzugreifen, um eine Abhängigkeitsauflösung durchzuführen. Wenn die erforderlichen Abhängigkeiten nicht im Cache der Abhängigkeiten vorhanden sind, schlägt eine Buildausführung fehl. (Quelle: jetbrains.com/idea/help/gradle-2.html )
cprcrack

10
Verwendet es standardmäßig zuerst zwischengespeicherte Abhängigkeiten, bevor Sie über das Netzwerk gehen? Ich kann mir nicht vorstellen, dass dies jedes Mal nach aktualisierten Abhängigkeiten sucht, wenn gradlees ausgeführt wird. Das ist bizarr.
Ehtesh Choudhury

1
@EhteshChoudhury es ist sehr bizarr. Die gesamte Gradle / Android Studio-Entwicklungsumgebung ist so langsam. Die meisten Leute denken, dass es wegen Java langsam ist. Ich mache serverseitige Java-Entwicklung auf IDEA und die Dinge laufen sehr reibungslos.
Stepanian

34

Ich habe überall danach gesucht und endlich eine Lösung gefunden, die für uns funktioniert. Durch Aktivieren paralleler Builds (unter OSX :) preferences -> compiler -> gradle -> "Compile independent modules in parallel"und Aktivieren von "Projekt automatisch erstellen" wurde der Wert von ~ 1 Minute auf ~ 20 Sekunden gesenkt. Danke an / u / Covalence.

http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/


56
20 Sekunden sind immer noch furchtbar langsam.
Johannes Brodwall

6
Denken Sie daran, dass dies anscheinend nur hilft, wenn Sie mehrere unabhängige Module / Projekte haben. Ich habe es mit einer einzelnen Modul-App getestet und es hat keinen Unterschied gemacht.
Sam

Ich habe ein ziemlich großes Projekt und es dauert 2 - 3 Minuten auf MacBook Pro 2012 Core i7, 8 GB RAM. Ist es o.k?
Sermilion

25

Ich habe kürzlich eine neue SSD gekauft und bin von Windows auf Linux umgestiegen. Meine Build-Zeiten sind jetzt um eine Größenordnung schneller und nicht mehr ärgerlich.

Obwohl es Ihre Frage, warum es langsamer als Eclipse ist, nicht direkt beantwortet, zeigt es, dass der Prozess festplattengebunden ist und ein Upgrade auf eine SSD eine (etwas teure) Lösung sein könnte. Ich vermute, es wird Leute geben, die das Thema googeln und hier landen, die meine Erfahrung zu schätzen wissen.


11
Die Entwickler in meinem Team haben schnelle SSDs in schnellen Maschinen mit viel Speicher. Bei einer nicht trivialen App dauert die erneute Bereitstellung nach einer geringfügigen Codeänderung noch ca. 45 Sekunden, verglichen mit der fast sofortigen erneuten Bereitstellung in Eclipse. Selbst das Ausführen einer einfachen JUnit, die nicht von Android stammt, ist unerschwinglich langsam. Das "Upgrade" auf Android Studio und Gradle war bisher ein großes Downgrade. : - /
spaaarky21

@ Lionleaf wie viel schneller von Windows zu Linux wechseln?
younes0

@ younes0 Ich weiß es nicht. Ich wechselte zur gleichen Zeit zu Linux wie zu einer SSD. Ich sage nicht, dass es einen positiven Effekt hat, es waren nur diese beiden Variablen, die ich für die Beschleunigung geändert habe.
Andreas Løve Selvik

4
In meinem Fall führte der Wechsel von Windows zu Linux zu 40% schnelleren Android-Builds ... es lohnt sich also auf jeden Fall
kosiara - Bartosz Kosarzycki

Ich stimme dem zu, was @Bartosz Kosarzycki gesagt hat. Am Ende habe ich eine Ubuntu VM mit Virtualbox auf meinem Entwicklungscomputer ausgeführt. ~ 54 Sekunden Build unter Windows, ~ 7 Sekunden für denselben Build innerhalb der virtuellen Maschine auf derselben Hardware. Wahnsinnige Beschleunigung durch Umstellung auf Linux.
Eric Cornelson

20

Beschleunigen Sie die Erstellung von Gradle in Android Studio 3.2.1

Haben Sie schon einmal das Gefühl, dass Sie minutenlang darauf warten, dass die Builds in Android Studio abgeschlossen werden? Ich auch. Und es ist ziemlich nervig. Glücklicherweise gibt es einige Möglichkeiten, wie Sie dies verbessern können. Android verwendet Gradle zum Erstellen. Die neueste Version 4.6 bietet eine enorme Leistungssteigerung gegenüber früheren Versionen (Details siehe Versionshinweise).

Schritt 1: Gradle-Version aktualisieren Eine einfachere Möglichkeit, dies zu erreichen, ist: Öffnen Sie die Moduleinstellungen (Ihr Projekt)> Projektstruktur

Geben Sie hier die Bildbeschreibung ein

AKTUALISIEREN

Wechseln Sie zu Gradle Version: 4.6 und wechseln Sie zu Android Plugin Version: 3.2.1

Geben Sie hier die Bildbeschreibung ein

Laden Sie Gradle Release Distributive von https://services.gradle.org/distributions/gradle-4.6-all.zip herunter und kopieren Sie es in den Gradle-Ordner:

Geben Sie hier die Bildbeschreibung ein

Der letzte Schritt besteht darin, Ihre Beschreibung unter Einstellungen> Gradle hinzuzufügen

Geben Sie hier die Bildbeschreibung ein

Vergessen Sie nicht, auf Übernehmen zu klicken, um die Änderungen zu speichern.

Schritt 2: Aktivieren Sie den Offline-Modus, den Gradle-Daemon und die parallele Erstellung für das Projekt. Der Offline-Modus weist Gradle an, die Aktualisierung der Aktualisierungen zu ignorieren. Gradle fragt jedes Mal nach Abhängigkeiten. Mit dieser Option wird nur das verwendet, was sich bereits auf dem Computer für Abhängigkeiten befindet. Gehen Sie von Android Studio Setting zu Gradle und klicken Sie in das Arbeitsfeld Offline.

Geben Sie hier die Bildbeschreibung ein

  1. Gehen Sie von Android Studio zu Compiler. Fügen Sie im Befehlszeilenfeld "- offline" hinzu und klicken Sie auf Unabhängige Module parallel kompilieren.

Geben Sie hier die Bildbeschreibung ein

Der nächste Schritt besteht darin, den Gradle-Daemon und den parallelen Build für Ihr Projekt zu aktivieren. Parallele Builds führen dazu, dass Ihre Projekte mit mehreren Modulen (Multi-Projekt-Builds in Gradle) parallel erstellt werden, wodurch große oder modulare Projekte schneller erstellt werden sollten.

Geben Sie hier die Bildbeschreibung ein

Diese Einstellungen können durch Ändern einer Datei mit dem Namen gradle.properties im Gradle-Skriptverzeichnis (dh ~ / .gradle / gradle.properties) aktiviert werden. Einige dieser Optionen (z. B. parallel zu Complie-Modulen) sind in Android Studio verfügbar und werden dort auch von aktiviert Standardmäßig werden sie jedoch beim Erstellen vom Terminal aus aktiviert, wenn Sie sie in die Datei gradle.properties einfügen. Außerdem stellen Sie sicher, dass Ihre Kollegen dieselben Einstellungen verwenden. Aber wenn Sie in einem Team arbeiten, können Sie dieses Zeug manchmal nicht festlegen.

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
 org.gradle.daemon=true

Durch die Verwendung des Daemons werden Ihre Builds schneller gestartet, da nicht jedes Mal die gesamte Gradle-Anwendung gestartet werden muss. Der Gradle-Daemon ist nicht standardmäßig aktiviert. Es wird jedoch empfohlen, ihn immer für Entwicklercomputer zu aktivieren (für Server mit kontinuierlicher Integration jedoch deaktiviert zu lassen). FAQ zu diesem Modus finden Sie hier https://docs.gradle.org/current/userguide/gradle_daemon.html . Die Einstellung für parallele Builds kann für einige Projekte unsicher sein. Voraussetzung ist, dass alle Module entkoppelt sind oder Ihr Build fehlschlägt ( Details finden Sie unter http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects ).

Schritt 3: Inkrementelles Dexign aktivieren und Speichereinstellungen optimieren Sie können Ihre Builds beschleunigen, indem Sie das inkrementelle Dexing aktivieren. In der Build-Datei Ihres Moduls:

Geben Sie hier die Bildbeschreibung ein

Fügen Sie diese Option Ihrem Android-Block hinzu:

dexOptions {
    incremental true
}

In diesem dexOptions-Block können Sie auch die Heap-Größe für den dex-Prozess angeben, zum Beispiel:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

Wobei "12g" 12 GB Speicher ist. Weitere Informationen hierzu finden Sie hier google.github.io/android-gradle-dsl/current/ Sie können Gradle-Parameter auch in der Einstellungsdatei konfigurieren, z. B. die maximale Heap-Größe erhöhen, falls Sie ein großes Projekt haben:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Alle Parameter finden Sie hier: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties für Details.

Schritt 4: Deaktivieren von Antivirus Erwägen Sie, Projekt- und Cache-Dateien vom Antivirus-Scan auszuschließen. Dies ist offensichtlich ein Kompromiss mit der Sicherheit. Wenn Sie jedoch häufig zwischen Zweigen wechseln, scannt Antivirus die Dateien erneut, bevor der Gradle-Prozess sie verwenden kann, was die Erstellungszeit verlangsamt (insbesondere das Android Studio-Synchronisierungsprojekt mit Gradle-Dateien und Indizierungsaufgaben). Messen Sie die Erstellungszeit und verarbeiten Sie die CPU mit und ohne aktiviertem Antivirus, um festzustellen, ob dies in Zusammenhang steht. Ich hoffe das hilft. Hinterlassen Sie einen Kommentar, wenn Sie Fragen oder andere Tipps zur Verbesserung der Build-Leistung haben.

hilfreicher Link


19

Wenn Sie Google Play-Dienste verwenden, kann dies abhängig von den Bibliotheken, die Sie anstelle des gesamten Blobs benötigen, die Dinge beschleunigen.

Wenn Sie nur Karten benötigen, verwenden Sie:

compile 'com.google.android.gms:play-services-maps:6.5.+'

anstatt:

compile 'com.google.android.gms:play-services:6.5.+'

Letzteres bringt 20.000 Methoden (siehe Blog) in den Klassenpfad, wodurch die Gesamtzahl der Methoden über 64.000 liegen kann.

Dies würde die Verwendung von Proguard oder Multidex auch für Debug-Builds erzwingen . Für eines meiner Projekte hatte ich die folgenden Bauzeiten

  • Multidex-Build (mit Support-Bibliothek) ~ 40sec
  • Proguard Build ~ 20sec
  • Build, wenn das Methodenlimit <64k ~ 5sec ist

Wenn Sie auf SDK 21+ entwickeln, können Sie Multidex-Builds wie in der Android-Dokumentation angegeben optimieren

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}

2
Statt alle kompilieren play-serviceBibliothek, zusammengestellt ich nur mapsund locations und deaktiviert multidex. Ich fühle den großen Unterschied. Danke +1
Sami Eltamawy

16

Die akzeptierte Antwort ist für ältere Versionen von Android Studio und die meisten von ihnen funktionieren noch jetzt. Das Update von Android Studio hat es ein bisschen schneller gemacht. Geben Sie nicht die Größe des Heapspeichers an, da diese mit der Zunahme von Xms und Xmx automatisch zunimmt. Hier sind einige Änderungen an den VMoptions

  1. Im Ordner bin befindet sich eine Datei studio.vmoptions, in der die Umgebungskonfiguration festgelegt werden kann. In meinem Fall ist dies studio64.vmoptions. Fügen Sie die folgenden Zeilen hinzu, falls sie noch nicht hinzugefügt wurden, und speichern Sie die Datei. In meinem Fall habe ich 8 GB RAM.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. Starten Sie Android Studio. Gehen Sie zu Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen-> Compiler

    • Überprüfen Sie, ob unabhängige Module parallel kompiliert werden
    • Schreiben Sie in die Befehlszeilenoptionen: --offline
    • Aktivieren Sie das Kontrollkästchen Projekt automatisch erstellen
    • Aktivieren Sie die Option "Bei Bedarf konfigurieren"

Bei Verwendung eines Mac konnte ich die vmoptions zunächst nicht finden. Wie auch immer, hier ist ein schöner Artikel darüber, wie wir die vmoptions in MAC OSX ändern können . Zitat aus diesem Artikel hier.

Öffnen Sie Ihr Terminal und geben Sie diesen Befehl ein, um die vmoptions in MAC OSX zu öffnen:

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

1
Ab AS 2.3.2 können Sie die VIM-Optionen über Hilfe-> Benutzerdefinierte VM-Optionen bearbeiten
Sam

15

Erstellen Sie einfach eine Datei mit dem Namen gradle.properties im folgenden Verzeichnis:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

Fügen Sie diese Zeile zur Datei hinzu:

org.gradle.daemon=true

Für mich ist die Geschwindigkeit jetzt gleich Eclipse.

Quelle: https://www.timroes.de/2013/09/12/speed-up-gradle/


Ich kann den .gradle-Ordner auf dem Mac nicht sehen. Wie öffne ich es?
Dharmik

@Dharmik: Vielleicht haben Sie Android Studio unter einem anderen Benutzernamen installiert. Ansonsten ist es wohl nicht richtig installiert.
Yster

1
Nein, es war ein anderes Problem. Der Systemordner ".gradle" wurde ausgeblendet. Also gehe ich zu Go => Gehe zu Ordner und dann habe ich den Ordner .gradle gefunden. Danke für die schnelle Antwort.
Dharmik

14

Sie können den Vorgang beschleunigen, wenn Sie gradle über die Befehlszeile verwenden. Für die IDE-Entwickler gibt es viel zu optimieren. Aber es ist nur eine frühe Version.

Weitere Informationen finden Sie in dieser Diskussion zu g + mit einigen Entwicklern.


3
Dies scheint auch jetzt noch im Jahr 2016 zu gelten
Leo unterstützt Monica Cellio am

11

Wenn jemand an einem Projekt arbeitet, das über Subversion synchronisiert wird und dies immer noch geschieht, kann dies den Workflow in Android Studio verlangsamen. Zum Beispiel, wenn es währenddessen sehr langsam funktioniert: Scrollen in einer Klasse, XML usw., während meine App noch auf meinem Gerät ausgeführt wird.

  • Gehen Sie zu Versionskontrolle in den Einstellungen und setzen Sie von Subversion auf Keine.Geben Sie hier die Bildbeschreibung ein

1
Sie sparen meinen Tag: 2/4 min -> 15sec (ich habe Tortoise HG für das Projekt deaktiviert).
Kaftanati

3
Wenn jemand noch Subversion verwendet, sollte er zu Git oder Mercurial wechseln
Leo unterstützt Monica Cellio am

8

Update nach Android Studio 2.3

Alle Antworten sind großartig, und ich empfehle, diese Methoden mit dieser zu verwenden, um die Build-Geschwindigkeit zu verbessern.

Nach der Veröffentlichung von Android 2.2 im September 2016 hat Android die experimentelle Build-Cache-Funktion veröffentlicht, um die gradleBuild-Leistung zu beschleunigen. Diese Funktion ist jetzt offiziell von Android Studio 2.3 Canary. (Offizieller Versionshinweis)

Es wird eine neue Build-Cache-Funktion eingeführt, die standardmäßig aktiviert ist und die Build-Zeiten (einschließlich vollständiger Builds, inkrementeller Builds und sofortiger Ausführung) beschleunigen kann, indem Dateien / Verzeichnisse gespeichert und wiederverwendet werden, die in früheren Builds desselben oder eines anderen Android erstellt wurden Projekt.

Wie benutzt man:

Fügen Sie Ihrer gradle.propertiesDatei die folgende Zeile hinzu

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

Bereinigen Sie den Cache:

  • Es gibt eine neue Gradle-Aufgabe, cleanBuildCachemit der Sie den Build-Cache einfacher bereinigen können. Sie können es verwenden, indem Sie Folgendes in Ihr Terminal eingeben:

    ./gradlew cleanBuildCache

  • ODER Sie können den Cache für Android Studio 2.2 bereinigen, indem Sie alle am Speicherort gespeicherten Dateien löschen

    C:\Users\<username>\.android\build-cache


7

Nachdem ich diese Einstellungen geändert habe, hat sich meine Kompilierungsdauer von 10 Minuten auf ~ 10 Sekunden geändert.

Schritt 1:

Einstellungen (Strg + Alt + S) ->

Erstellen, Ausführen, Bereitstellen ->

Compiler ->

Geben Sie " --offline" in das Feld Befehlszeilenoptionen ein.

Schritt 2:

Aktivieren Sie das Kontrollkästchen "Unabhängige Module parallel kompilieren".

& klicken Sie auf Übernehmen -> OK

Geben Sie hier die Bildbeschreibung ein

Referenz - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

Nachteil:

Sie können die neuesten Versionen der in Ihrer build.gradle-Datei angegebenen Abhängigkeiten nicht abrufen. Es wird schneller ausgeführt, da ein zwischengespeicherter Snapshot dieser importierten Bibliotheken verwendet wird.

Wichtiger Hinweis : Wenn Sie die Anwendung bereitstellen, entfernen Sie diese Einstellungen und erstellen Sie sie mit den neuesten Versionen von Abhängigkeiten.


6

Meins gelöst mit

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Offline work

Gradle Builds gingen von 8 Minuten auf 3 Sekunden.


4

Folgendes hat diesem beginnenden Android-Programmierer (vor Jahren ehemaliger professioneller Programmierer) geholfen, Android Studio 2.2 zu beschleunigen. Ich weiß , dass dies ein Aufguss ist, sondern nur eine Zusammenfassung an einem Ort.

Anfängliche Builds können immer noch brutal langsam sein, aber Neustarts laufender Apps sind jetzt normalerweise sehr tolerierbar. Ich verwende einen suboptimalen PC: AMD Quad-Core A8-7410-CPU, 8 MB RAM, Nicht-SSD-HD, Win 10. (Und dies ist mein erstes Stack Overflow-Posting ....;)

IN EINSTELLUNGEN -> GRADLE:

Ja für "Offline-Arbeit" (dies ist möglicherweise die wichtigste Einstellung).

IN EINSTELLUNGEN -> COMPILER:

Ja für "Unabhängige Module parallel kompilieren" (nicht sicher, ob dies tatsächlich zur Verwendung von Multicore-CPUs beiträgt).

IN GRADLE SCRIPTS "build.gradle (Modul: App)":

defaultConfig {
    ...
   // keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
   minSdkVersion 14
   ...
    // enabling multidex support...does make big difference for me.
    multiDexEnabled true

AUCH IN GRADLE SCRIPTS "gradle.properties (Projekteigenschaften)":

org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

org.gradle.parallel = true org.gradle.daemon = true

Außerdem funktioniert das Testen auf einem physischen Gerät anstelle des Emulators für mich gut. Ein kleines Tablet, das aufsteht, ist praktisch.


4

Nur ein weiterer Tipp zur Leistungssteigerung:

Android Studio 3.0 enthält den neuen DEX-Compiler D8.

"Der Dex-Compiler arbeitet bei Ihrer täglichen App-Entwicklung meistens unter der Haube, wirkt sich jedoch direkt auf die Erstellungszeit Ihrer App, die Größe der Dex-Datei und die Laufzeitleistung aus."

"Und wenn man den neuen D8-Compiler mit dem aktuellen DX-Compiler vergleicht, kompiliert D8 schneller und gibt kleinere .dex-Dateien aus, während die Laufzeitleistung der App gleich oder besser ist."

D8 ist optional - verwenden Sie es, wir müssen es in gradle.properties des Projekts einfügen

android.enableD8=true

Weitere Informationen: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

PS. Es hat meine Bauzeit um ca. 30% verkürzt.


1

Dieses Setup geht für mich sehr schnell (ca. 2 Sekunden Build)

build.gradle

android {

    dexOptions {
        incremental true
        preDexLibraries = false
        jumboMode = false
        maxProcessCount 4
        javaMaxHeapSize "6g"
    }
}

gradle.properties

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M

mein PC:

  • CPU Intel (R) Pentium (R) CPU G2030 bei 3,00 GHz, 3000 MHz, 2 Procesadores Principales, 2 Procesadores Lógicos
  • x64
  • Microsoft Windows 7 Professional
  • (RAM) 16,0 GB

Projektdateien
- Alle befinden sich in lokaler HD



1

Sie können versuchen, das Gradle-Menü auf der rechten Seite von Studio zu öffnen, nur die Module zusammenzusetzen, die Sie geändert haben, und dann den Befehl install ausführen. Wenn Sie auf Ausführen klicken, wird alles zusammengesetzt, unabhängig von Änderungen, die Sie möglicherweise an dem Code vorgenommen haben, den es zusammenstellt


0

Ich bin weit davon entfernt, ein Experte für Gradle zu sein, aber meine Umgebung hatte die folgende Zeile in .gradle / init.gradle

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
        }
    }
}

Ich habe noch keine Ahnung, warum diese Zeile dort war, aber ich versuche, zu wechseln

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenCentral()
        }
    }
} 

und jetzt kann ich endlich arbeiten, ohne auf Android Studio & Gradle Buildind Schema zu schwören.


artifactory wurde in Ihrem Fall wahrscheinlich als Bibliothekscache verwendet. Sie wenden sich an den Artefaktserver, der nach der Bibliothek sucht. Wenn ja, gibt es es an Sie zurück, andernfalls holt es es von mavencentral und kehrt dann zu Ihnen zurück.
Fabio Marcolini

0

In unserem speziellen Fall war das Problem auf das Retrolambda- Plugin zurückzuführen, das alle Projekte und Teilprojekte zwang, jedes Mal neu zu kompilieren, wenn wir versuchten, unsere Anwendung zu starten, selbst wenn in unseren Kernmodulen kein Code geändert wurde.

Das Entfernen von Retrolamba hat es für uns behoben. Hoffe es hilft jemandem.


0

Versuchen Sie dies einfach zuerst. Es ist meine persönliche Erfahrung.

Ich hatte das gleiche Problem. Was ich getan hatte, war nur das Antivirus dauerhaft zu deaktivieren (Mine war Avast Security 2015). Kurz nach dem Deaktivieren des Antivirenprogramms lief alles gut. Der Gradle wurde erfolgreich beendet. Ab sofort ist der Gradle innerhalb von Sekunden fertig (nur 5-10 Sekunden).


0

Hallo, ich weiß, dass dies eine sehr, sehr späte Antwort ist, aber vielleicht helfen Sie jemandem
in meinem Fall, den ich verwendet habe

compile 'com.android.support:support-v4:23.1.1'

in meiner App Gradle Abhängigkeit,
aber in einer meiner Bibliotheken war es

 compile 'com.android.support:support-v4:23.0.1'

Nach dem Wechsel auf die neueste Version ist mein Problem gelöst.


0

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:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

Fügen Sie diese Zeile zur Datei hinzu:

org.gradle.daemon=true
org.gradle.parallel=true

Und überprüfen Sie diese Optionen in Android Studio

Geben Sie hier die Bildbeschreibung ein



0

Eine triviale Änderung (zu einer Resoruce-XML) dauerte noch 10 Minuten . Wie @rivare in seiner Antwort sagt, ist ein Befehlszeilen-Build schneller mutch (auf 15 Sekunden reduziert ).
Hier sind einige Schritte, um zumindest einen einfachen Build schnell über die Befehlszeile für Windows zu erstellen.

  1. Gehen Sie zu Ihrem Projektstamm (wo sich gradlew.bat befindet):

    cd c: \ android \ MaskActivity

  2. Führen Sie den Build aus :

    gradlew assembleDebug

  3. deinstalliere die apk direkt vom telefon (ziehe sie zum deinstallieren).

  4. Wenn der Build abgeschlossen ist, beenden Sie den BIG-Java-Prozess mit dem Windows Task-Manager.

ODER wenn Sie Unix-Tools auf Ihrem Windows-Computer haben:

ps

"pid" werden angezeigt:

kill -9 <pid>
  1. Jetzt installieren deine apk:

    adb -d installiere C: \ Android \ MaskActivity \ app \ build \ output \ apk \ app-debug.apk


0

Fügen Sie dies gemäß der Android-Dokumentation in die Gradle-Datei des App-Moduls ein.

android {
    ...
    dexOptions {
    preDexLibraries true
    maxProcessCount 8
    }
}

0

So führen Sie die Android-Umgebung auf einem Computer mit niedriger Konfiguration aus

  1. Schließen Sie die nicht erforderlichen Web-Registerkarten im Browser
  2. Schließen Sie für Antivirus-Benutzer den automatisch generierten Build-Ordner aus
  3. Android Studio hat 1,2 GB Standard-Heap kann auf 512 MB reduziert werden. Hilfe> Benutzerdefinierte VM-Optionen bearbeiten studio.vmoptions -Xmx512m Die Leistung von Layouts wird beschleunigt

  4. Für Gradle ist 3.0beta eine der Kernkomponenten in Android Studio Mkae

Die folgenden Tipps können die Codequalität beeinträchtigen. Verwenden Sie sie daher mit Vorsicht:

  1. Studio enthält im abgesicherten Energiesparmodus Hintergrundvorgänge, die Flusen, Code-Vervollständigungen usw. enthalten.

  2. Sie können den Lintcheck bei Bedarf manuell ausführen ./gradlew lint

  3. Die meisten verwenden Android-Emulatoren, die durchschnittlich 2 GB RAM verbrauchen. Wenn Sie also ein tatsächliches Android-Gerät verwenden, wird dadurch die Ressourcenbelastung Ihres Computers verringert. Alternativ können Sie den Arbeitsspeicher des Emulators reduzieren und der Verbrauch des virtuellen Speichers auf Ihrem Computer wird automatisch reduziert. Sie finden dies in der Konfiguration des virtuellen Geräts und in der Voreinstellung.

  4. Der Gradle-Offline-Modus ist eine Funktion für Benutzer mit begrenzter Bandbreite, um das Herunterladen von Build-Abhängigkeiten zu deaktivieren. Dadurch wird der Hintergrundbetrieb reduziert, der zur Leistungssteigerung von Android Studio beiträgt.

  5. Android Studio bietet eine Optimierung zum parallelen Kompilieren mehrerer Module. Auf Computern mit niedrigem Arbeitsspeicher wirkt sich diese Funktion wahrscheinlich negativ auf die Leistung aus. Sie können es im Dialogfeld mit den Compilereinstellungen deaktivieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.