Je travaille avec Android Studio (ma version actuelle 1.5) depuis 2 ans. Tout allait bien, mais lorsque j'ai téléchargé Canary (2.1 p5), tout s'est mal passé. Chaque fois que je veux créer un nouveau projet ou ouvrir un projet, synchroniser ou importer une nouvelle bibliothèque ou dépendance, gradle prend trop de temps à construire - presque 20 min .
Je n'ai rien fait, je viens de télécharger la version canarienne et de l'exécuter.
Symptômes :
Remarque : Lorsque je déconnecte Internet, gradle se termine aussi vite que possible
J'ai essayé de résoudre ce problème de cette manière :
J'ai créé un nouveau fichier (le nom de fichier est gradle.properties
) dans C:\Users\username\.gradle
, puis j'ai écrit ces lignes.
org.gradle.parallel=true
org.gradle.daemon=true
J'ai enlevé cette version puis installé l'ancienne version qui fonctionnait bien mais le problème était toujours là :(
Désactiver/Activer le pare-feu
Désactiver/Activer AntiVirus (Nod32)
Réinstallez le système d'exploitation Windows (8.1)
J'ai téléchargé toutes les versions (1.0.0, ..., 1.5.1, 2.0.0, 2.1)
J'ai utilisé un proxy
Information système :
build.gradle (Project: 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.build (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'
}
Rapport après 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 la version stable d'Android studio 2.0
Après 2 jours de recherche, j'ai eu la solution, alors j'aimerais partager avec toutes les personnes qui peuvent avoir le même problème. Le problème est que gradle
ne peut pas se connecter au référentiel central dans certains pays. Lorsque vous créez un nouveau projet ou une importation, le référentiel de votre centre est jcenter()
par défaut et chaque fois que vous souhaitez créer, synchroniser ou ajouter une nouvelle dépendance externe, gradle
va se connecter à https://bintray.com/ mais il ne peut pas et le processus de construction va attendre jusqu’à la connexion à jcenter()
, ce processus peut donc prendre beaucoup de temps (+30 min), même si vous ne pouvez pas ajouter de nouvelle dépendance.
Solution :
classpath 'com.Android.tools.build:gradle:2.0.0'
)Ainsi, vous pouvez facilement ajouter un nouveau projet de dépendance et de synchronisation sous 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
}
S'amuser
Vous pouvez optimiser le processus de construction de Gradle ...
Essayez de mettre le gradle en mode hors ligne, ce qui oblige à construire sans connexion à des référentiels externes, comme ceci:
Cela m'a beaucoup aidé, car dans mon travail, toutes les connexions sont derrière un proxy et augmentent le temps de construction.
Si cela ne vous suffit pas, prenez le temps de tester les options de Gradle> Experimental ... Certaines options peuvent améliorer vos performances:
En plus de @Mehdi Jahed Manesh, répondez ci-dessus.
Augmentez la quantité de mémoire allouée au démon Gradle VM de 1 Go, à un minimum de 2 Go, à l'aide de la propriété org.gradle.jvmargs
suivante:
org.gradle.jvmargs=-Xmx2048m
Pour ceux qui utilisent des référentiels nécessitant une authentification , ce problème peut être résolu en configurant gradle de manière à n'utiliser qu'un seul schéma d'authentification:
repositories {
maven {
credentials {
username INTERNAL_REPO_USERNAME
password INTERNAL_REPO_PASSWORD
}
// here comes the important part
authentication {
basic(BasicAuthentication)
}
url INTERNAL_REPO_URL
}
}
Il s’est avéré que lorsqu’il s’authentifiait auprès des référentiels, Gradle tentait de s’authentifier à l’aide de tout un ensemble de schémas. La configuration ci-dessus fait en sorte que Gradle n’utilise que l’authentification de base. Ici est la liste complète des régimes disponibles.
Une fois la construction initiale terminée, essayez d'activer le mode hors ligne à partir des paramètres de dégradé. Pour que toutes les générations consécutives ne commencent pas à résoudre les dépendances, elles sont extraites du cache. Si vous ajoutez une nouvelle dépendance, il vous sera demandé de désactiver le mode hors connexion et de le reconstruire.
Comme La réponse d'Ismail Iqbal a dit, mettre gradle sous le mode hors connexion fonctionne pour moi.
Si vous utilisez Android Studio, suivez La réponse de Fabio Filho
Si vous utilisez la ligne de commande comme moi, vous pouvez essayer
gradlew assembleReleaseStaging(your task name) --offline
Dans mon cas, je l'ai résolu en installant une nouvelle version du JDK Java . Après l'installation du nouveau JDK, ouvrez AS, accédez à Fichier → Structure du projet → Emplacement du SDK, puis modifiez l'emplacement du JDK par celui de la nouvelle version de le JDK Java. Ensuite, il vous sera demandé l'autorisation du pare-feu; Cochez Public et postulez. Laisse le résoudre.