65 votes

Android build gradle est trop lente (de la Résolution des Dépendances)

J'ai travaillé avec Android Studio (ma version actuelle de 1,5) pendant 2 ans. Tout était OK, mais quand j'ai téléchargé Canaries (2.1 p5), tout est allé de mal. Chaque fois que je veux créer un nouveau projet ou ouvrir un projet ou de la synchronisation ou l'importation d'une nouvelle lib ou de dépendance, gradle est trop long à construire — près de 20 min.

Je n'ai rien fait, je viens de télécharger le Canari version et il a couru.

Symptômes :

  1. C'est arrivé quand je me suis connecté à Internet
  2. Le premier retard est sur Gradle: Résoudre des dépendances": app:_debugCompile'
  3. ...
  4. Après 25 min de construction presque terminé

Note: Quand j'ai débrancher mon Internet, gradle va se terminer aussi vite que possible


J'ai essayé de résoudre ce problème en ces façons:

  1. J'ai changé le gradle pour travailler hors connexion (il a travaillé, mais je ne veux pas de cette façon, parce que je veux importer des bibliothèques ou des dépendances)
  2. J'ai créé un nouveau fichier (nom de fichier est - gradle.properties) en C:\Users\username\.gradle puis écrit ces lignes en elle

    org.gradle.parallel=true
    org.gradle.daemon=true
    
  3. J'ai supprimé cette version alors installé mon ancienne version qui fonctionnait bien, mais le problème est toujours là :(

  4. Désactiver / Activer le pare-feu

  5. Activer / Désactiver L'AntiVirus (Nod32)

  6. Réinstaller le système d'exploitation Windows (8.1)

  7. J'ai téléchargé toutes les versions (1.0.0, ..., 1.5.1, 2.0.0, 2.1)

  8. J'ai utilisé un proxy


Système d'info:

  • PROCESSEUR: Intel Core i5
  • Ram: 6.00 GO
  • Système d'exploitation: Windows 8.1 64 bits

construire.gradle(du Projet:appName)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

gradle.construire(Module:app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.test.myapplication"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
}

Gradle rapport après la construction

Dependencies                  Duration
All dependencies              14m3.43s
:app:_releaseCompile          3m30.96s
:app:_debugCompile            3m30.73s
:app:_debugApk                3m30.69s
:app:_releaseApk              3m30.62s
:classpath                    0.428s
:app:_debugAndroidTestCompile 0.001s
:app:_debugAndroidTestApk     0s
:app:_debugUnitTestApk        0s
:app:_debugUnitTestCompile    0s
:app:_releaseUnitTestApk      0s
:app:_releaseUnitTestCompile  0s
:app:releaseWearApp           0s
:app:wearApp                  0s

Après l'installation de android studio 2.0 version stable

  • 7:23:47 PM Gradle sync commencé ====> 8:13:21 PM Gradle de synchronisation terminé

85voto

Mehdi Jahed Manesh Points 1220

Le problème est résolu !

Après 2 jours de recherche , j'ai eu la solution , donc, je tiens à partager avec toutes les personnes qui ont le même problème. Le problème est - gradlene peut pas se connecter au centre de référentiel dans certains pays. Lorsque vous créez un nouveau projet ou d'importation , à votre centre de dépôt en jcenter() par défaut et chaque fois que vous voulez construire ou de synchronisation ou d'ajouter de nouveaux dépendance externe, gradle va se connecter à https://bintray.com/ mais il ne peut pas et le processus de construction va attendre jusqu'à ce connecter jcenter(), de sorte que ce processus peut prendre beaucoup de temps ( +de 30 min ) , même si vous ne pouvez pas ajouter de nouvelle dépendance .

Solution :

  1. Assurez-vous que vous avez bien la dernière version stable ( actuel 2.0.0 )
  2. Assurez-vous que votre gradle version 2.0.0 dans la construction.gradle (classpath 'com.android.tools.build:gradle:2.0.0')
  3. Dernière étape et la plus importante est de changer votre jcenter() pour mavenCentral()

Donc, vous pouvez facilement ajouter de nouveaux dépendance et de synchronisation de projet en vertu de 3sec !

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Amusez-Vous

5voto

Fabio Filho Points 358

Vous pouvez optimiser le processus de build gradle ...

Essayez de mettre la gradle sur le mode hors connexion obligeant à construire sans aucune connexion à des référentiels externes, comme ceci:

enter image description here enter image description here

Cela m'a beaucoup aidé, parce que dans mon travail, toutes les connexions sont derrière un proxy et augmenter le temps de génération.

Si ce n'est pas assez pour vous, de prendre un temps de tester les options sur la Gradle > Expérimentales ... Certaines options peuvent améliorer les performances:

enter image description here

2voto

ayz4sci Points 1399

En plus de @Mehdi Jahed Manesh réponse ci-dessus.

Augmenter la quantité de mémoire allouée à la Gradle Démon VM par 1 Go, pour un minimum de 2 Go, à l'aide de l' org.gradle.jvmargs de la propriété comme ceci:

org.gradle.jvmargs=-Xmx2048m

1voto

Ismail Iqbal Points 1544

Une fois la construction initiale a terminé essayez d'activer le Mode hors connexion à partir de la gradle paramètres. De sorte que chaque consécutive, construit ne sera pas commencer à résoudre les dépendances, à la place qu'il obtient à partir de la mémoire cache. Si vous ajoutez une nouvelle dépendance, il vous invite à désactiver le mode hors connexion et de le reconstruire. image of the gradle preview

0voto

Dans mon cas, je l'ai résolu en installant une nouvelle version du JDK Java. Après l'installation de la nouvelle version de JDK, ouvrir en tant QUE, cliquez sur Fichier→Structure de Projet→Emplacement du SDK, et le changement JDK emplacement de la nouvelle version du JDK Java. Ensuite, il vous sera demandé pour le pare-feu de l'autorisation; vérifier Public et de les appliquer. Laissez résoudre gradle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X