Чрезвычайно долгая сборка с помощью Gradle (Android Studio)

StackOverflow https://stackoverflow.com//questions/25006075

  •  20-12-2019
  •  | 
  •  

Вопрос

прямо сейчас мы находимся в ситуации, когда время сборки для очень простых изменений составляет 2 минуты 30 секунд.Это (по сравнению с ANT) невероятно медленно и снижает продуктивность всей команды.Я использую Android Studio и использую «Использовать локальное распределение Gradle».Я попытался предоставить gradle больше памяти:

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

Намного больше памяти.И ВСЕ ЕЩЕ время от времени ВЫДАЕТ ОШИБКИ ПАМЯТИ.

Исключение в потоке «pool-1-thread-1» java.lang.OutOfMemoryError:Превышен лимит накладных расходов GC

Удивительный.Я использую параллельную опцию и демон:

org.gradle.parallel=истина

org.gradle.daemon=истина

Это не очень помогает.

Я поместил вышеупомянутые параметры в ~/.gradle/gradle.properties (и я даже сомневался, что студия Android это игнорирует, поэтому я проверил - она ​​не игнорирует).

Тем не менее из терминала я получаю время сборки 1:30 против 2:30 в Android Studio, поэтому не уверен, что там не так.1:30 ВСЕ ЕЩЕ БЕЗУМНО по сравнению с Ant.Если вы знаете, что делает Android Studio (или игнорирует, или переписывает конфигурацию Gradle), я был бы благодарен узнать.

Таким образом, просто CMD + B (простая компиляция) после изменений выполняется очень быстро, около 7 секунд.Но когда дело доходит до запуска приложения, оно запускает задачу dexXxxDebug, которая нас просто убивает.Я попробовал поставить

dexOptions {
    preDexLibraries = false
}

Не помогает.

Я понимаю, что gradle, вероятно, еще не готов к использованию в производственных средах, но начинаю сожалеть о нашем решении так рано перейти на него.У нас много модулей, и это, вероятно, является частью проблемы, но с Ant это не было проблемой.

Любая помощь оценена, Дэн

Еще немного информации о времени выполнения:

Описание Продолжительность

Total Build Time    1m36.57s
Startup 0.544s
Settings and BuildSrc   0.026s
Loading Projects    0.027s
Configuring Projects    0.889s
Task Execution  1m36.70s

Пожиратель времени::app:dexDebug 1m16.46s

Это было полезно?

Решение

Я не совсем понимаю, почему Android Studio работает медленнее, чем командная строка, но вы можете ускорить сборку, включив инкрементное индексирование.В файле сборки вашего модуля добавьте эту опцию в свой android блокировать:

dexOptions {
    incremental true
}

В этом dexOptions блоке вы также можете указать размер кучи для процесса dex, например:

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}

Эти параметры взяты из темы в списке рассылки adt-dev (https://groups.google.com/forum/#!topic/adt-dev/r4p-sBLl7DQ), который имеет немного больше контекста.

Другие советы

Наша команда столкнулась с той же проблемой. Наш проект превышает предел метода для DEX (> 65k). Итак, IN OUT Library Project мы поставили ниже варианты в Build.Gradle:

dexOptions {
    jumboMode = true
    preDexLibraries = false
}
.

В нашем проекте Build.gradle:

 dexOptions {
    jumboMode = true
//  incremental true
}
.

Ранее мы поинтересовались.После комментарии его принимая около 20 лет, чтобы пройти по сравнению с 2 минутами 30 секунд. Я не знаю, что это может решить вашу проблему.Но это может помочь другим.:)

Отказ от ответственности: Это не решение - это утверждение, что нет никакого решения с помощью соответствующих источников ссылок, чтобы доказать его .

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

Первый - это Фактический aosp-tracker execter Ссылаясь на параллелизацию < / a>, с большим количеством соответствующих вещей, по-прежнему открытым и еще с большим количеством людей, жалующихся как выкл. 2.2.1. Мне нравится парень, который отмечает проблему (высокоприотность один в этом), включая «666», не являющийся совпадением. То, как большинство людей описывают музыкальные программы и движения мыши, заикание мыши во время наращивания, похоже на зеркало ...

Вам следует отметить, что люди сообщают о хороших вещах с помощью Process Lasso для Windows, в то время как я вижу, не вижу, что не очень сообщают о чем-либо хорошее с помощью Rebice's или CPU в вариантах * NIX.

Этот парень (который заявляет, что он не использует Грейл) на самом деле представляет некоторые очень приятные вещи в Спроси Убунту, что к сожалению Работа в моем случае.

Вот еще одна альтернатива , которая ограничивает резьбы выполнения Грейла, но это на самом деле не улучшилось в моем сценарии К тому, что кто-то говорит по другому ссылке о студии нереста несколько экземпляров Группы (пока параметр влияет только на параллелизм одного экземпляра).

Обратите внимание, что это все возвращается к исходному вопросу «666», высокая приоритетная проблема ...

Лично я не мог проверить многие решения, потому что я работаю над управляемым (без корневых приложений) Ubuntu Machine и не могу открыть - Get / Rebice, но я могу сказать вам, что у меня есть I7-4770, 8 ГБ RAM И гибридный SSD, и у меня есть эта проблема даже после многих памяти и <сильные> подморозки Грейла в течение многих лет . Это тентализующая проблема, и я не могу понять, как Google не совершил необходимых людских ресурсов в проект Группы, чтобы исправить то, что находится в основе разработки для самой важной платформы, которую они строят.

Одно следует отметить на мою среду: я работаю в многоплодной студийной проекте, причем около 10 подпроектов, все они наращивают свои собственные и заполняющие трубопровод Грейла.

При прохождении значения вы можете добавить букву «K», чтобы указать килобайты, «M», чтобы указать мегабайты или «g», чтобы указать гигабайты.

'- автономный "решил мою проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top