Android build gradle работает слишком медленно (разрешение зависимостей)

Я работаю с Android Studio (моя текущая версия 1.5) в течение 2 лет. Все было в порядке, но когда я загрузил Canary (2.1 p5), все пошло не так. Каждый раз, когда я хочу создать новый проект или открыть проект или синхронизировать или импортировать новую lib или зависимость, gradle занимает слишком много времени для сборки — около 20 минут.

Я ничего не делал, я только что загрузил версию Canary и запустил ее.

Симптомы:

  • Это произошло, когда я подключился к Интернету
  • Первая задержка находится на Gradle: Разрешить зависимости: app: _debugCompile '
  • ...
  • Через 25 минут здание почти сделано

Примечание: Когда я отключу свой Интернет, gradle завершится как можно быстрее


Я попытался исправить это следующими способами:

  • Я изменил gradle на автономную работу (он работал, но я не хочу этого, потому что я хочу импортировать библиотеки или зависимости)
  • Я создал новый файл (имя файла gradle.properties) в C:\Users\username\.gradle, затем написал эти строки в него

    org.gradle.parallel=true
    org.gradle.daemon=true
    
  • Я удалил эту версию и установил мою старую версию, которая работала нормально, но проблема все еще была там:(

  • Отключить/включить брандмауэр

  • Отключить/включить AntiVirus (Nod32)

  • Переустановите ОС Windows (8.1)

  • Я загрузил все версии (1.0.0,..., 1.5.1, 2.0.0, 2.1)

  • Я использовал прокси


Информация о системе:

  • Процессор: Intel Core i5
  • Рам: 6,00 ГБ
  • ОС: Windows 8.1 64 бит

build.gradle(Проект: 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(модуль: приложение)

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 отчет после сборки

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

После установки стабильной версии для Android версии 2.0

  • 7:23:47 PM gradle начата синхронизация ==== > 8:13:21 PM gradle завершена синхронизация

Ответ 1

Проблема решена!

После двухдневного поиска я получил решение, поэтому хотел бы поделиться со всеми людьми, у которых может быть такая же проблема. Проблема в том, что gradle не может подключиться к центральному репозиторию в какой-либо стране. Когда вы создаете новый проект или импортируете, ваш центральный репозиторий по умолчанию jcenter(), и всякий раз, когда вы хотите создать или синхронизировать или добавить новую внешнюю зависимость, gradle будет подключаться к https://bintray.com/, но он не может и процесс сборки будет ждать до подключения к jcenter(), поэтому этот процесс может занять много времени (+30 мин), даже вы не можете добавить новую зависимость.

Решение:

  • Убедитесь, что у вас есть последняя стабильная версия (текущий 2.0.0)
  • Убедитесь, что версия gradle 2.0.0 в build.gradle(classpath 'com.android.tools.build:gradle:2.0.0')
  • Последний шаг и самый важный из них - это изменить jcenter() на mavenCentral()

Таким образом, вы можете легко добавить новый проект зависимостей и синхронизации в формате 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
}

Получайте удовольствие

Ответ 2

В дополнение к @Mehdi Jahed Manesh ответьте выше.

Увеличьте объем памяти, выделенной виртуальной виртуальной org.gradle.jvmargs Gradle Daemon, на 1 Гб, как минимум на 2 Гб, используя свойство org.gradle.jvmargs следующим образом:

org.gradle.jvmargs=-Xmx2048m

Ответ 3

Вы можете оптимизировать процесс построения градиента...

Попытайтесь поставить град в автономном режиме, чтобы форсировать без какого-либо подключения к внешним репозиториям, например:

enter image description here enter image description here

Это очень помогло мне, потому что в моей работе все соединения находятся за прокси-сервером, и это увеличивает время сборки.

Если этого недостаточно для вас, найдите время, проверяя параметры в Gradle> Experimental... Некоторые параметры могут улучшить вашу производительность:

enter image description here

Ответ 4

В моем случае я решил это, установив новую версию Java JDK. После установки нового JDK, откройте AS, перейдите в File → Project Structure → SDK Location и измените местоположение JDK на новую версию Java JDK. Затем вам будет предложено разрешение на брандмауэр; проверьте публикацию и подайте заявку. Пусть он разрешает gradle.

Ответ 5

После завершения начальной сборки попробуйте включить автономный режим из настроек gradle. Чтобы каждая последовательная сборка не запускала разрешения зависимостей, вместо этого она поступает из кеша. Если вы добавите новую зависимость, вам будет предложено отключить автономный режим и перестроить его. изображение gradle предварительного просмотрa

Ответ 6

Я видел еще одну проблему. Решение может помочь кому-то

Недавно я установил http_proxy и https_proxy в переменных системной среды. Мне пришлось удалить оба из них, а затем установить прокси-сервер в настройках студии.

Ответ 7

изменить classpath 'com.android.tools.build:gradle:1.5.0' к

classpath 'com.android.tools.build:gradle:2.0.0'

и изменить buildToolsVersion "23.0.3" к

buildToolsVersion "23.0.2"

и используйте стабильную версию Android-студии 2.0. сообщите мне, что вы хотите получить более подробную информацию, или это решение не сработало с вами.