Сборка Android Studio занимает слишком много времени


225

Мой проект Android Studio раньше создавался быстрее, но теперь он занимает много времени. Есть идеи, что может быть причиной задержки? Я пробовал https://stackoverflow.com/a/27171878/391401, но безрезультатно. У меня нет запущенного Антивируса, который мог бы прервать сборку. Мое приложение не так велико по размеру (около 5 МБ ), и оно собиралось за несколько секунд, но не уверен, что изменилось.

10:03:51 Gradle build finished in 4 min 0 sec  
10:04:03 Session 'app': running  
10:10:11 Gradle build finished in 3 min 29 sec  
10:10:12 Session 'app': running  
10:20:24 Gradle build finished in 3 min 42 sec  
10:28:18 Gradle build finished in 3 min 40 sec  
10:28:19 Session 'app': running  
10:31:14 Gradle build finished in 2 min 56 sec   
10:31:14 Session 'app': running  
10:38:37 Gradle build finished in 3 min 30 sec  
10:42:17 Gradle build finished in 3 min 40 sec  
10:45:18 Gradle build finished in 3 min 1 sec  
10:48:49 Gradle build finished in 3 min 30 sec  
10:53:05 Gradle build finished in 3 min 22 sec  
10:57:10 Gradle build finished in 3 min 19 sec  
10:57:11 Session 'app': running  

1
Что вы используете, ваш телефон Android или любой эмулятор для запуска вашего приложения?
Рам Мансавала

Запуск на устройстве
Harish

3
не зачем Google переключился с затмения на андроид студию .... андроид студия отстой
капил

38
Когда Android-студия была новой, многие в StackOverflow отклонили жалобы по этому поводу, потому что это была «только бета-версия». Однако прошло уже несколько лет с тех пор, как это была «только бета», и она все еще вялая, и это на 8 ядрах, 16 Гбайт оперативной памяти и SSD-диске. Старый Eclipse, установленный на этой машине, работает мгновенно.
Андрей С

Ответы:


453

В Android Studio зайдите в Файл -> Настройки -> Построение, Выполнение, Развертывание -> Инструменты сборки -> Gradle

(если на Mac) Android Studio -> настройки ... -> Сборка, выполнение, развертывание -> Инструменты сборки -> Gradle

Проверьте «Работа в автономном режиме» в разделе «Глобальные настройки Gradle».

Это сократит время сборки Gradle на 90%.

отметьте это, чтобы сократить время сборки

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


11
Работал отлично. От 12 минут до 5 секунд
Рамеш

18
не прекратит ли эта конфигурация выборку новых библиотек, когда мы добавим их в build.gradle?
Дэни У

48
при добавлении новой библиотеки , то вы должны сделать это в Интернете только за один раз , который будет уведомлен Gradle сборки сделать проект работоспособного @DanyY
Biswajit Кармакар

15
Значит ли это, что все время проблема была в скорости интернета, а не в скорости процессора?

1
Ого! Прошло от 15 минут до 1 минуты: O
Кардинал - Восстановить Монику

150

Если вы используете сервисы Google Play, убедитесь, что вы не используете это в своем скрипте сборки Gradle:

compile 'com.google.android.gms:play-services:8.3.0'

Используйте только те API Google, которые действительно использует ваше приложение. Если все, что вы используете, это Google Maps, вы должны использовать это:

com.google.android.gms:play-services-maps:8.3.0

Когда я это сделал, мое время компиляции увеличилось с 2 минут до 25 секунд. Список API-интерфейсов Google, которые можно выборочно компилировать, см. В следующих разделах:

https://developers.google.com/android/guides/setup


12
Вы заслуживаете более 100 голосов. Любой другой источник предлагает добавить org.gradle.parallel=trueи связанные с командной строки ... но ни один из них не обеспечивает простого и понятного понимания того, что на самом деле происходит. Используя ваш совет, мое время сборки увеличилось с 1 минуты 5 секунд до 3,427 секунд. Потрясающие!!
Саурон

Большое спасибо, это была моя главная проблема тоже. Теперь все работает отлично.
alnaji

1
Прекрасно работает. Воспользуйтесь этой ссылкой, чтобы найти имя библиотеки игровых сервисов: developers.google.com/android/guides/…
ПК.

Вы заслужили галочку ... Вы решили мою проблему. Проблема в сервисах Google Play ... Спасибо :)
Кару Бенсон Кару

Это не только помогло решить проблемы с длительной сборкой, но теперь я могу также развернуть его непосредственно на устройстве Android, не используя Proguard при отладке (ранее я получал сообщение об ошибке с лимитом метода 65 КБ). Спасибо!
Магрит

52

Нашел простой и лучший способ построить gradle

Зайдите в ваше приложение >> откройте свой gradle.properties и измените из него несколько строк [удалить # ]

иначе вы можете скопировать вставить мой ниже фрагмент также

    # Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx2048m -XX:MaxPermSize=512m
 org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 org.gradle.parallel=true

раньше он работал у меня это занимает почти 2-3 минуты, сейчас это занимает всего 5-6 секунд

в приведенном выше сценарии моя машина Mac имеет 8 ГБ оперативной памяти, поэтому я назначил 4 ГБ для gradle


Это сократило мое время сборки с 30+ минут до 24 минут ... Есть ли способ уменьшить дальше ...?
Программирование Пирата

34

Нашел причину !! Если Android Studio имеет настройку прокси-сервера и не может подключиться к серверу, то сборка занимает много времени, возможно, она пытается подключиться к прокси-серверу и ожидает истечения времени ожидания. Когда я удалил настройки прокси-сервера, он работал нормально.

Удаление прокси: File > Settings > Appearance & Behavior > System settings > HTTP Proxy


3
Как удалить прокси-сервер?
Джула

2
В меню «Файл Windows»> «Настройки»> «Внешний вид и поведение»> «Системные настройки»> «HTTP-прокси»
Harish

2
Моя проблема была также в прокси, но в том, что мне пришлось добавить также HTTPS прокси в свойствах gradle. HTTP-прокси было недостаточно: systemProp.http.proxyHost = xxx.xxx.xxx.xxx systemProp.http.proxyPort = 8080 systemProp.https.proxyHost = xxx.xxx.xxx.xxx systemProp.https.proxyPort = 8080
3098756

26
Как полная шутка и бс. Я просто устал от этой чепухи.
The_Martian

9
Я согласен!!! Я испытываю ужасную боль при переносе большого проекта из Eclipse, и теперь, когда ошибки устранены, сборка с AS никогда не заканчивается !!! Я ненавижу, как @The_Martian
Джош

20

Выполнение шагов сделает его в 10 раз быстрее и сократит время сборки на 90%.

Сначала создайте файл с именем gradle.properties в следующем каталоге:

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

Добавьте эту строку в файл:

org.gradle.daemon=true

org.gradle.parallel=true

4
Вы можете установить его прямо из gradle.properties, расположенного под студийным проектом.
Бисваджит Кармакар

3
Да также включить эту опцию org.gradle.jvmargs = -Xmx2048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
user779370

2
Установите MaxPermSize = 1024 м
Бисваджит Кармакар

Почему эти свойства не определены заранее? Есть ли минусы?
Оли

Эта опция должна использоваться только с развязанными проектами. Более подробную информацию, посещение gradle.org/docs/current/userguide/...
Джавад

17

Включение функций Java 8 привело к смертельно медленной сборке

Gradle

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

После удаления вышеуказанных строк он строится за считанные секунды.

Есть проблема Компиляция с Джеком занимает очень много времени

Ответ руководителя проекта

Мы знаем, что время сборки - проблема с Джеком прямо сейчас. У нас есть улучшения в плагине 2.4 Gradle, которые должны стать значительным улучшением для инкрементных сборок.

На данный момент последняя версия Gradle, которую я могу найти, это 2.3.0-бета4.


4
Да, я согласен. Чтобы включить java 8 в андроид студии, вам нужно использовать Джек, и при этом мое время сборки летит на Луну с 1-2 минутных сборок до 16 минут ... что за ... Это сейчас непригодно. Как всегда отличная работа Google
Кароль Жиглович

16

Рекомендуемое чтение: как сэкономить 5 часов в неделю на сборках Gradle !

Согласно этому прекрасному посту, вы должны попытаться оптимизировать следующее:

  • Gradle Daemon
  • Параллельное выполнение проекта
  • Настройка проектов по требованию
  • Модули стоят дорого ...

7

Решение @AndroidDev сработало для меня. Я включил всю библиотеку в Gradle.

compile 'com.google.android.gms:play-services:8.4.0'

Переходя решил проблему. От 4 мин до 1 мин

compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'

Thnx


4

Проверьте ваше интернет-соединение . Если скорость интернета очень низкая, сборка gradle также займет много времени. Я проверяю, изменив свое интернет-соединение Wi-Fi с другим хорошим соединением скорости. Сейчас время сборки нормальное. Пожалуйста, попробуйте это, прежде чем перейти к другим решениям. кто-то примет неправильное решение для переустановки или изменения настроек. Надеюсь, это поможет. Спасибо и всего наилучшего.


Обязательно разрешите Android Studio на брандмауэре. Почти 15 минут ждали выхода новой версии, когда вдруг всплыло окно Firewall с просьбой разрешить это. Хотя могло бы быть и раньше
Мохд.Зафранудин

2

1) Мое время сборки сильно увеличилось после того, как я добавил некоторые новые библиотечные зависимости в мой файл Gradle, что, как оказалось, мне нужно использовать multidex после этого. И когда я правильно настроил multidex, время сборки увеличилось до 2-3 минут. Поэтому, если вы хотите сократить время сборки, избегайте использования multidex и, насколько это возможно, уменьшите количество библиотечных зависимостей.

2) Также вы можете попробовать включить «автономную работу» в Android Studio, как это предлагается здесь, что имеет смысл. Это не будет повторно проверять библиотеки каждый раз, когда вы делаете сборку. Возможно, медленное соединение или использование прокси / vpn с отключенной «автономной работой» может привести к медленному времени сборки.

3) сервисы Google - как уже упоминалось, не используйте весь пакет, используйте только необходимые его части.


1

В бета-версии Android Studio 2.0 они выпустили функцию под названием Instant Run . Это значительно сокращает время сборки. Основная идея заключается в том, что Android Studio только вносит небольшие изменения в уже запущенное приложение.

Он классифицирует изменения, которые мы вносим в наш код, на три части: «горячая» замена, «горячая» и «холодная» замена в зависимости от того, какую нагрузку окажет изменение в сборке. После этого он просто меняет код в уже запущенном приложении, и мы видим, что изменения выполняются через несколько секунд. Смотрите их документ для получения дополнительной информации.

Здесь вы можете скачать Android Studio 2.0 превью.

PS: есть несколько проблем с этой функцией. Они перечислили это в документах. Проверьте это перед установкой.


1
  1. Перейдите в Файл-> Настройка -> Gradle -> Установите его в автономный режим и проверьте

1

Я долго сталкивался с той же проблемой, но решил ее, изменив настройки в Gradle.

Шаг 1. В приложении Module добавьте зависимость в BuildScript

buildscript {
 dependencies {
         classpath 'com.android.tools.build:gradle:2.0.0-alpha9'
}
}

Шаг 2: Добавьте dexOption и задайте следующий размер кучи

  dexOptions {
    incremental = true;
    preDexLibraries = false
    javaMaxHeapSize "4g"
}

Шаг 3: Добавить товар

    productFlavors {
    dev {
        minSdkVersion 23
        applicationId = "com.Reading.home"
    }
    prod {
        minSdkVersion 15
        applicationId = "com.Reading.home" // you don't need it, but can be useful

    }
}

Это должно сократить ваше время сборки.


0

Если вы используете Windows 8 ...

Решения DroidArc и AndroidDev полезны, но не достаточно. Моя проблема была связана с моей операционной системой Windows 8 и ее 100% использованием диска.

Особенно служба поиска Windows, была наиболее потребляющей. Отключите его с помощью: cmd (Admin)> net.exe stop "Поиск Windows"

Я следовал инструкциям в этой ссылке, и это решило проблему для настоящих 4 советов, чтобы исправить 100% использование диска и улучшить производительность Windows

Надеюсь это поможет.


0

У меня была такая же проблема в котлине. Обновление устаревшей среды исполнения Kotlin решило это для меня


0

У меня были такие проблемы, особенно при активной отладке через телефон; временами это занимало 27 минут. Я сделал следующие вещи и приму к сведению объяснения под каждым - один может работать для вас:

  1. Изменен мой файл gradle.properties (в скриптах Gradle, если у вас есть вид файла проекта под опцией Android ИЛИ в папке вашего проекта). Я добавил это, потому что у моего компьютера есть немного свободной памяти - вы можете назначить разные значения в конце, в зависимости от технических характеристик вашего компьютера и минимальных требований Android Studio (Xmx8000m -XX: MaxPermSize = 5000m):

org.gradle.daemon = верно

org.gradle.configureondemand = верно

org.gradle.parallel = верно

android.enableBuildCache = TRUE

org.gradle.caching = верно

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

  1. Это не полностью решило мою проблему в моем случае. Поэтому я также сделал, как и предлагали другие, чтобы перевести процесс сборки в автономный режим:

Файл -> Настройки / Предпочтения -> Сборка, выполнение, развертывание -> Gradle

Глобальные настройки Gradle (внизу)

Установите флажок с именем: Автономная работа.

  1. Это существенно сократило время, но было ошибочным; время от времени занимало больше времени. Поэтому я внес некоторые изменения в Instant Run:

Файл -> Настройки / Настройки -> Сборка, выполнение, развертывание -> Мгновенный запуск

Проверено: Включить Instant Run для горячего обмена кода ...

Проверено: возобновить активность при изменении кода ...

  1. Вышеуказанный шаг также был ошибочным, и поэтому я попытался выяснить, может ли проблема быть в процессах / памяти, которые запускались непосредственно на моем телефоне и компьютере. Здесь я освободил немного памяти в своем телефоне и хранилище (которое было использовано на 98% - до 70%), а также в диспетчере задач (Windows), повысил приоритет как Android Studio, так и Java.exe до высокого. Сделайте этот шаг осторожно; зависит от памяти вашего компьютера.

  2. После всего этого время сборки во время активной отладки на моем телефоне иногда уменьшалось до 1-2 минут, но время от времени увеличивалось. Я решил сделать хак, который удивил меня , сократив его до лучших секунд на том же проекте, который дал мне 22 - 27 минут - 12 секунд !:

Подключите телефон для отладки, затем нажмите RUN

После его запуска отключите телефон - сборка должна продолжаться быстрее и в конце появится сообщение об ошибке, указывающее на это: Сессия «app»: Ошибка при установке APK

Снова подключите телефон и снова нажмите «RUN» ...

АЛЬТЕРНАТИВЫ

Если сценарий / функция / метод, который я отлаживаю, является чисто JAVA, а не JAVA-android, например, для тестирования API с помощью JSONArrays / JSONObjects, я проверяю свои функции / методы Java на NetBeans, которые могут скомпилировать один файл и показать результат быстрее, а затем сделать необходимые изменения в моих файлах Android Studio. Это также экономит мне много времени.

РЕДАКТИРОВАТЬ

Я попытался создать новый проект Android в локальном хранилище и скопировал все мои файлы из предыдущего проекта в новый - java, res, manifest, приложение gradle и проект gradle (с последней зависимостью grapath от classpath). И теперь я могу собрать свой телефон менее чем за 15 секунд.


0

В вашем build.gradle, если у вас есть minifyEnabled для отладки, удалите его. У меня было это в моем проекте, и это заняло ~ 2-3 минуты. Посмотрев на прогресс сборки, я нашел это виновником, поэтому, удалив закомментированную строку ниже, моя проблема была исправлена.

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }//debug{
         //   minifyEnabled true
         //   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}


0

У меня была такая же проблема, даже сборка gradle работала 8 часов, и я волновалась. Но позже я изменил версию SDK для компиляции и минимальную версию SDK в файле build.gradle следующим образом.

Старшая:

android {
compileSdkVersion 25
buildToolsVersion "29.0.2"

defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 9
    targetSdkVersion 25
}

Новое (обновлено):

android 
{
  compileSdkVersion 28
   buildToolsVersion "25.0.2"

 defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 15
    targetSdkVersion 28
 }

-2

У меня была похожая проблема на моем компьютере. Защитник Windows блокировал какую-то часть Gradle Building. Я отключил это, работал нормально после этого.


-43

Попробуйте перезагрузить компьютер и снова запустить Android Studio. Сработал для меня, когда пытался построить проект Cordova / Phonegap с целевой базой кода Android.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.