Intereting Posts
Перехватите экран входящих вызовов ОС Android и замените Android: статические поля и утечки памяти Android, Как преобразовать String в Date? Android. Могу ли я увеличить размер текста для виджета NumberPicker? Использование VideoView для потокового или прогрессивного скачивания видео Theme.AppCompat.Light.DarkActionBar не приводит к тому, что ActionBar не показывает Каков наилучший способ проверить, видно ли в окне вид? Как я могу получить отпечаток MD5 от keytool от Java, а не только SHA-1? ListView setOnItemClickListener не работает, добавив кнопку Пользовательская информация в Google карте android v2 9-Patch доступных размеров Android. Как различные плотности обрабатывают не растянутые области? Повторить андроидную анимацию Android Studio – данные об ошибках сборки Appcompat-v23 / styles_bases.xml Не удается найти класс com.google.android.gms.location.LocationClient (android) Сохранение состояния активности Android с использованием состояния Save Instance

Сборка Android-студии замедлилась после добавления новых библиотек?

В моем приложении используются старые компоненты архитектуры. Я хочу перейти к новым компонентам архитектуры Android .

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

Но когда я попытался добавить зависимости для Lyfecycles, LiveData и ViewModel, как упоминалось здесь .

Процесс сборки приложения значительно замедлился, для сборки apk требуется 5 минут и больше времени.

Следующие dependecies добавлены в app build:

compile "android.arch.lifecycle:runtime:1.0.0-alpha5" compile "android.arch.lifecycle:extensions:1.0.0-alpha5" annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha5" 

Также мне нужно включить разъем для совместимости с Java 8 следующим образом:

 defaultConfig { ........ jackOptions { enabled true } } 

После добавления всех этих компонентов процесс сборки значительно замедлился. Я попытался сделать некоторые изменения параметров виртуальной виртуальной машины для некоторых параметров, перейдя в Help -> Edit custom VM options

 -Xmx5120m 

Я установил его почти на 5 ГБ, но ничего не сработало для меня. Я считаю, что у моей машины достаточно аппаратных средств. (8 ГБ оперативной памяти, Windows 10, 1 ТБ HDD, AMD A8)

Мое приложение использует многие сервисы google, такие как API Gmail, API Firebase, некоторые другие библиотеки, которые я исчерпал лимит ссылок на 64 КБ? Но я уже включил мультисайсинг, как указано здесь .

Это произошло из-за новых компонентов архитектуры или чего-то еще? Как ускорить процесс сборки?

Обновить :

Один из ответов ниже Budius предложил сценарий, который будет показывать тайминги, полученные каждым процессом сборки, я запустил его в своем приложении, вот выдержки:

 BUILD SUCCESSFUL Total time: 18 mins 28.44 secs Task timings: 480ms :app:mergeDebugResources 2516ms :app:processDebugResources 487725ms :app:transformClassesWithPreJackPackagedLibrariesForDebug 29213ms :app:transformClassesWithPreJackRuntimeLibrariesForDebug 752ms :app:transformResourcesWithMergeJavaResForDebug 556894ms :app:transformJackWithJackForDebug 5184ms :app:transformNativeLibsWithMergeJniLibsForDebug 17524ms :app:packageDebug 

Джек и Джек.

Я попробовал версию канарейки, предложенную ниже в ответ Брайаном, – это результат времени, затраченного на процесс сборки:

 BUILD SUCCESSFUL in 6m 11s 42 actionable tasks: 33 executed, 9 up-to-date Task timings: 608ms :app:preDebugBuild 350ms :app:mergeDebugResources 394ms :app:processDebugManifest 2543ms :app:processDebugResources 9410ms :app:javaPreCompileDebug 46585ms :app:compileDebugJavaWithJavac 262ms :app:compileDebugShaders 395ms :app:mergeDebugAssets 5835ms :app:packageInstantRunResourcesDebug 98922ms :app:transformClassesWithDesugarForDebug 334ms :app:transformClassesWithExtractJarsForDebug 7765ms :app:transformClassesWithInstantRunVerifierForDebug 23117ms :app:transformNativeLibsWithMergeJniLibsForDebug 10128ms :app:transformResourcesWithMergeJavaResForDebug 16565ms :app:transformClassesWithInstantRunForDebug 11825ms :app:transformClassesWithInstantRunSlicerForDebug 84703ms :app:transformClassesWithDexBuilderForDebug 17061ms :app:transformDexArchiveWithDexMergerForDebug 1706ms :app:transformDexWithInstantRunDependenciesApkForDebug 9770ms :app:transformDexWithInstantRunSlicesApkForDebug 10571ms :app:packageDebug 1387ms :app:buildInfoGeneratorDebug 

Поэтому я удалил jack и переключился на эту версию canary, сборка быстрее, чем предыдущая, но все же медленная для использования.

Solutions Collecting From Web of "Сборка Android-студии замедлилась после добавления новых библиотек?"

Jack Toolchain устарел и все еще находился в экспериментальной фазе до его устаревания. Хотя процесс генерации кода может быть медленным (как упоминал @ FlorescuGeorgeCătălin), он обычно не вызывает таких чрезмерно медленных сроков сборки. Я подозреваю, что причиной медленного времени сборки является Jack Toolchain; Поскольку это, как известно, медленное .

Если вы хотите использовать функции языка Java 8, я предлагаю вам перейти на версию Canary версии Android Studio 3.0, в которой есть встроенная функция.

Если это не вариант, вы можете использовать Retrolambda вместо этого, который включает в себя большинство тех же функций языка Java 8.

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

Вот скрипт, который я сделал для измерения времени сборки , просто добавьте его в корневую папку вашего проекта и в файл верхнего уровня градиента добавьте apply from: 'time.gradle'

timer.gradle

 import java.util.concurrent.TimeUnit class TimingsListener implements TaskExecutionListener, BuildListener { private long startTime private timings = [] @Override void beforeExecute(Task task) { startTime = System.nanoTime() } @Override void afterExecute(Task task, TaskState taskState) { def ms = TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS); timings.add([ms, task.path]) } @Override void buildFinished(BuildResult result) { println "Task timings:" for (timing in timings) { if (timing[0] >= 250) { printf "%7sms %s\n", timing } } } @Override void buildStarted(Gradle gradle) {} @Override void projectsEvaluated(Gradle gradle) {} @Override void projectsLoaded(Gradle gradle) {} @Override void settingsEvaluated(Settings settings) {} } gradle.addListener new TimingsListener() 

Поскольку в библиотеке есть обработчик аннотации, он должен генерировать новый код в сгенерированные классы. Кинжал также является библиотекой, которая генерирует код. Бутерброд же.

Вы можете найти их в папке проекта app/build/generated проекта.

Здесь вы можете узнать больше о процессоре аннотаций.

Также может быть с вашего жесткого диска. SSD может дать вам гораздо больше вычислительной мощности.

Вы установили Gradle в Offline Work и попытались Edit custom VM options на больший размер кучи?

Другим решением является обновление Android Studio до Android Studio 3.0, которое также увеличивает скорость сборки

Файл -> Настройки -> (Левая сторона) Сборка, выполнение, разработка -> Инструменты сборки -> Gradle

В разделе «Глобальные настройки градиента» появится флажок «Автономная работа». Проверь это.

Вы делали это?

Добавьте следующее в build.gradle внутри android {}

 dexOptions { incremental true javaMaxHeapSize "4g" } 

Задайте в файле gradle.properties следующее:

 org.gradle.parallel=true org.gradle.daemon=true org.gradle.configureondemand=true org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 android.enableBuildCache=true org.gradle.caching=true 

Это длинный снимок, но есть ли у вас настоящие Android-устройства, подключенные к вашей тестовой машине? Я действительно замечаю, что моя AS работает очень медленно, если у меня подключены мои тестовые устройства, возможно, у adb возникают проблемы и это замедляет работу системы.

Кроме того, я обновил до 16 гб процессора i7 с моей старой машины, и все началось гораздо быстрее.