Ich arbeite seit 2 Jahren mit Android Studio (meiner aktuellen Version 1.5). Alles war in Ordnung, aber als ich Canary (2.1 p5) heruntergeladen habe, lief alles schief. Jedes Mal, wenn ich ein neues Projekt erstellen oder ein Projekt öffnen oder eine neue Bibliothek oder Abhängigkeit synchronisieren oder importieren möchte, dauert die Erstellung von gradle zu lange - fast 20 Minuten .
Ich habe nichts getan, ich habe gerade die kanarische Version heruntergeladen und ausgeführt.
Symptome:
Hinweis : Wenn ich mein Internet trenne, wird Gradle so schnell wie möglich beendet.
Ich habe versucht, dies auf folgende Weise zu beheben :
Ich habe eine neue Datei (Dateiname ist gradle.properties
) in C:\Users\username\.gradle
erstellt und diese Zeilen in diese geschrieben
org.gradle.parallel=true
org.gradle.daemon=true
Ich habe diese Version entfernt und dann meine alte Version installiert, die funktioniert hat, aber das Problem war immer noch da :(
Firewall deaktivieren/aktivieren
AntiVirus deaktivieren/aktivieren (Nod32)
Windows neu installieren (8.1)
Ich habe alle Versionen heruntergeladen (1.0.0, ..., 1.5.1, 2.0.0, 2.1)
Ich habe einen Proxy benutzt
Systeminformationen :
build.gradle (Projekt: 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 (Modul: 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-Bericht nach dem Bau
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
Nach der Installation von Android Studio 2.0 stabile Version
Nach 2 Tagen Suche habe ich die Lösung gefunden, also möchte ich mit allen Leuten teilen, die das gleiche Problem haben. Das Problem ist, dass gradle
in keinem Land eine Verbindung zum zentralen Repository herstellen kann. Wenn Sie ein neues Projekt oder einen neuen Import erstellen, ist Ihr Center-Repository standardmäßig jcenter()
. Wenn Sie neue externe Abhängigkeiten erstellen, synchronisieren oder hinzufügen möchten, stellt gradle
eine Verbindung zu https://bintray.com/ but her kann nicht und der Aufbauprozess wird warten, bis eine Verbindung zu jcenter()
hergestellt wird. Daher kann dieser Vorgang lange dauern (+30 min), auch wenn Sie keine neuen Abhängigkeiten hinzufügen können.
Lösung:
classpath 'com.Android.tools.build:gradle:2.0.0'
) ist.So können Sie problemlos neue Abhängigkeiten und Synchronisierungsprojekte unter 3 Sekunden hinzufügen!
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
}
Habe Spaß
Sie könnten den Gradle Build-Prozess optimieren ...
Versuchen Sie, den Gradle in den Offline-Modus zu setzen, und erzwingen Sie den Aufbau ohne Verbindung zu externen Repositorys wie folgt:
Das hat mir sehr geholfen, denn in meiner Arbeit liegen alle Verbindungen hinter einem Proxy und erhöhen die Build-Zeit.
Wenn dies für Sie nicht ausreicht, testen Sie die Optionen unter Gradle> Experimental ... einige Optionen können die Leistung verbessern:
Zusätzlich zu @Mehdi Jahed Manesh antworten Sie oben.
Erhöhen Sie den dem Gradle-Daemon VM zugewiesenen Arbeitsspeicher um mindestens 1 GB, indem Sie die org.gradle.jvmargs
-Eigenschaft wie folgt verwenden:
org.gradle.jvmargs=-Xmx2048m
Für diejenigen, die Repositorys verwenden, für die eine Authentifizierung erforderlich ist , kann dieses Problem behoben werden, indem gradle so konfiguriert wird, dass nur ein einziges Authentifizierungsschema verwendet wird:
repositories {
maven {
credentials {
username INTERNAL_REPO_USERNAME
password INTERNAL_REPO_PASSWORD
}
// here comes the important part
authentication {
basic(BasicAuthentication)
}
url INTERNAL_REPO_URL
}
}
Es stellte sich heraus, dass gradle bei der Authentifizierung anhand von Repositorys versucht, sich nach allen Arten von Schemata zu authentifizieren. Die obige Konfiguration bewirkt, dass gradle nur die Basisauthentifizierung verwendet. Hier ist die vollständige Liste der verfügbaren Schemata.
Sobald der erste Build abgeschlossen ist, aktivieren Sie den Offline-Modus in den Gradle-Einstellungen. Damit nicht alle aufeinanderfolgenden Builds Abhängigkeiten auflösen, sondern aus dem Cache. Wenn Sie eine neue Abhängigkeit hinzufügen, werden Sie dazu aufgefordert, den Offline-Modus zu deaktivieren und neu zu erstellen.
Wie Ismail Iqbals Antwort sagte, gradle unter Offline-Modus setzen funktioniert für mich.
Wenn Sie ein Android-Studio verwenden, folgen Sie Fabio Filhos Antwort
Wenn Sie die Befehlszeile wie ich verwenden, können Sie es versuchen
gradlew assembleReleaseStaging(your task name) --offline
In meinem Fall habe ich das Problem gelöst, indem Sie eine neue Version des Java-JDK installiert haben ..__ Öffnen Sie AS nach der Installation des neuen JDKs, wählen Sie Datei → Projektstruktur → SDK-Speicherort und ändern Sie den JDK-Speicherort in den der neuen Version von das Java JDK. Dann werden Sie nach der Firewall-Berechtigung gefragt. Public überprüfen und bewerben. Lass es gradle lösen.