Подтвердить что ты не робот

Оптимизация времени сборки в Android Studio

Я попытался создать его:

  • parallel (немного помогает)
  • демон = истина
  • preDexLibraries true/false (нет большой разницы)
  • incremental true
  • отсутствует

Требуется 40 с. КАЖДЫЙ раз. Неважно, я что-то изменю или нет. Построить его после "gradle clean" занимает > 50 секунд.

Я надеюсь, что я делаю что-то неправильно. Eclipse/ ant может строить последовательные сборки WITH CHANGES в < 10s.

Любая помощь в том, как довести это значение до 10 баллов. Да, у нас есть много модулей, некоторые библиотеки jar, некоторые зависимости от maven. По-прежнему не получается, почему он должен принимать > 40 секунд для двух последовательных сборок без изменений.

Gradle: 2.2.1 Студия Android: не очень актуальна, обычно она создается только с помощью Gradle.

EDIT: добавление некоторых профилирующих журналов.

: приложение: dexProjDebug 22.541s

: приложение: shrinkProjDebugMultiDexComponents 4.279s

: app: compileProjDebugJava 3.478s

: приложение: packageProjDebug 2.591s

: приложение: processProjDebugResources 2.590s

: app: packageAllProjDebugClassesForMultiDex 2.536s

: app: createProjDebugMainDexClassList 2.126s

4b9b3361

Ответ 1

Вам необходимо правильно определить входы и выходы даже для проектов библиотек с исходным кодом. (Gradle Документация). Получаете ли вы сообщение UP-TO-DATE, когда вы перестраиваете второй раз?

Ответ 2

Если у вас нет изменений в других модулях, вы можете сами создать приложение, используя gradlew :app:build. Это позволит исключить время Gradle, затрачиваемое на создание других модулей. Вы также можете построить любой модуль отдельно, используя gradlew :moduledirectoryname:build. Если вам нужно создать один модуль и приложение, вы можете выполнить обе задачи сразу, чтобы избежать перехода через этап конфигурации Gradle дважды: gradlew :app:build :moduledirectoryname:build

Ответ 3

Если возможно, обновите до Gradle 2.4. Это значительно быстрее (требуется 20-40%).

Ответ 4

Одним из наиболее значительных сокращений времени сборки является задача preDex. Проверьте, работает ли preDex в вашей сборке. Это увеличивает время сборки при первом запуске, но значительно сокращает время сборки в последующих сборках, так как большинство ваших SDK и библиотек уже будут обработаны. Обратите внимание, однако, что он не будет работать при некоторых условиях, например. если вы используете multidex.

Btw Google хорошо знает времена сборки с Gradle и Android Studio и намерены внести существенные улучшения в предстоящие выпуски, включая Jack и Jill, которые позволят компилировать исходный код непосредственно в dex. Вы уже можете попробовать экспериментировать с ними - см. Здесь: http://tools.android.com/tech-docs/jackandjill.

Также стоит посмотреть это видео из недавних Google I/O: https://youtu.be/f7ihSQ44WO0?t=327

Ответ 5

Загрузите эмулятор Genymotion. Очень быстро и полезно запускать приложения для Android. Это сэкономит вам много времени. Вот ссылка - GenyMotionDownload