La création et l'exécution de l'application via Gradle et Android Studio est plus lente que via Eclipse


Answers

Vous pouvez ignorer les vérifications de mise à jour à jour.

Pour Windows exécutant Android Studio 1.5: Allez dans File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

de ~ 30 + sec à ~ 3 sec

Question

J'ai un multi-projet (~ 10 modules) dont la construction prend environ 20-30 secondes à chaque fois. Lorsque j'appuie sur Exécuter dans Android Studio, je dois attendre à chaque fois pour reconstruire l'application, ce qui est extrêmement lent.

Est-il possible d'automatiser le processus de construction dans Android Studio? Ou avez-vous des conseils sur la façon de rendre ce processus plus rapide?

Dans Eclipse, grâce à la construction automatique, exécuter le même projet sur un émulateur prend environ 3-5 secondes.

Ceci est mon fichier build.gradle (module d'application):

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
    }
}



Voici ce qui a aidé ce programmeur Android début (ancien programmeur professionnel, il y a des années) à accélérer Android Studio 2.2. Je sais que c'est un ressasser, mais, résumant juste dans un endroit.

Les versions initiales peuvent toujours être très lentes, mais les redémarrages des applications en cours d'exécution sont généralement très tolérables. J'utilise un PC sous-optimal: CPU AMD Quad-Core A8-7410, 8 Mo de RAM, HD non-SSD, Win 10. (Et voici mon premier post de débordement de pile ....;)

DANS LES PARAMÈTRES -> GRADLE:

oui pour "Travail hors ligne" (c'est peut-être le paramètre le plus important).

DANS LES RÉGLAGES -> COMPILER:

oui pour "Compiler des modules indépendants en parallèle" (pas sûr si cela aide en fait à utiliser des processeurs multicœurs).

DANS GRADLE SCRIPTS , "build.gradle (Module: 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

AUSSI DANS GRADLE SCRIPTS , "gradle.properties (Propriétés du projet)":

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

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

De plus , tester sur un périphérique physique au lieu de l'émulateur fonctionne bien pour moi; une petite tablette qui se lève est pratique.




Veuillez suivre les étapes suivantes.

  1. Activer le mode hors ligne: Veuillez vérifier ci-dessous l'écran d'impression.

    https://i.stack.imgur.com/RF9uG.png

  2. Activer l'exécution instantanée: Veuillez vérifier ci-dessous l'écran d'impression.

    https://i.stack.imgur.com/mvHKJ.png

    Si vous voulez en savoir plus sur la course instantanée s'il vous plaît visitez le site développeur android.




Essayez-le d'abord. C'est mon expérience personnelle.

J'ai eu le même problème. Ce que j'avais fait est juste désactiver de manière permanente l'antivirus (Mine était Avast Security 2015). Juste après la désactivation de l'antivirus, tout s'est bien passé. le gradle s'est terminé avec succès. A partir de maintenant en quelques secondes le gradle est en train de finir (ne prenant que 5-10 secondes).




La réponse acceptée est pour les anciennes versions de studio Android et la plupart d'entre eux fonctionne encore maintenant. La mise à jour du studio Android a rendu le tout un peu plus rapide. Ne prenez pas la peine de spécifier la taille du tas car elle augmentera automatiquement avec l'augmentation de Xms et Xmx. Voici quelques modifications avec les VMoptions

  1. Dans le dossier bin, il y a un fichier studio.vmoptions pour définir la configuration de l'environnement. Dans mon cas, c'est studio64.vmoptions Ajoutez les lignes suivantes si elles ne sont pas déjà ajoutées et enregistrez le fichier. Dans mon cas, j'ai 8 Go de RAM.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
    
  2. Démarrer le studio android. Allez dans Fichier-> Paramètres-> Générer, Exécution, Déploiement-> Compilateur

    • Vérifier compiler des modules indépendants en parallèle
    • Dans les options de la ligne de commande, écrivez: --offline
    • Cochez Créer un projet automatiquement
    • Vérifier la configuration à la demande

En cas d'utilisation de mac, au début, je ne pouvais pas trouver les options vmoptions. Quoi qu'il en soit, voici un bon article sur la façon dont nous pouvons changer les options vmoptions dans MAC OSX . Citant de cet article ici.

Ouvrez votre terminal et mettez cette commande pour ouvrir vmoptions dans MAC OSX:

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



Selon la documentation android , ajoutez ceci dans le fichier gradle du module d'application.

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



Créez simplement un fichier nommé gradle.properties dans le répertoire suivant:

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

Ajoutez cette ligne au fichier:

org.gradle.daemon=true

Pour moi, la vitesse est maintenant égale à Eclipse.

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




Suivre les étapes le rendra 10 fois plus rapide et réduira le temps de construction de 90%

Créez d'abord un fichier nommé gradle.properties dans le répertoire suivant:

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

Ajoutez cette ligne au fichier:

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

Et vérifiez ces options dans Android Studio




Je suis loin d'être un expert sur Gradle mais mon environnement avait la ligne suivante dans .gradle / init.gradle

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

Pourtant, je ne sais pas pourquoi cette ligne était là, mais je tente de changer pour

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

et maintenant je peux enfin travailler sans jurer sur le système de construction Android Studio & Gradle.







J'ai récemment acheté un nouveau SSD et suis passé de Windows à Linux. Mes temps de construction sont maintenant d'un ordre de grandeur plus rapide, et plus ennuyeux.

Bien qu'il ne réponde pas directement à la question de savoir pourquoi il est plus lent que l'éclipse, il montre que le processus est limité par un disque et qu'une mise à niveau vers un SSD peut être une solution (plutôt coûteuse). Je suppose qu'il y aura des gens googler la question et se retrouver ici, qui pourrait apprécier mon expérience.




Si quelqu'un travaille sur un projet qui est synchronisé via Subversion et que cela se produit encore, je pense que cela peut ralentir le processus de workflow dans Android Studio. Par exemple, si cela fonctionne très lentement tout en: défilant dans une classe, xml etc, pendant que mon application est toujours en cours d'exécution sur mon appareil.

  • Accédez au contrôle de version dans les préférences et définissez Subversion sur Aucun.



Après avoir changé ces paramètres, ma durée de compilation est passée de 10 minutes à ~ 10 secondes.

Étape 1:

Paramètres (Ctrl + Alt + S) ->

Construire, Exécuter, Déployer ->

Compilateur ->

tapez " --offline " dans la boîte Options de la ligne de commande.

Étape 2:

cochez la case "Compiler les modules indépendants en parallèle".

& cliquez sur Appliquer -> OK

Référence - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

Désavantage:

Vous ne pourrez pas extraire les dernières versions des dépendances identifiées dans votre fichier build.gradle. Il s'exécute plus rapidement car il utilise un instantané mis en cache de ces bibliothèques importées.

Remarque importante : lorsque vous déployez l'application, supprimez ces paramètres et créez avec les dernières versions des dépendances.




Links