В моем приложении используются компоненты старой архитектуры. Я хочу перейти к новым компонентам архитектуры Android.
С этой целью я добавил связанные зависимости в зависимости от комнаты в начале, после чего сборка была нормальной.
Но когда я попытался добавить зависимости для Lyfecycles, LiveData и ViewModel, как упоминалось здесь.
Процесс сборки приложения значительно замедлился, для сборки apk требуется 5 минут и более.
Следующие зависимости добавлены в app build.gradle:
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
}
}
После добавления всех этих компонентов процесс сборки значительно замедлился. Я попытался сделать некоторые пользовательские изменения параметров VM для некоторых параметров, перейдя в Help -> Edit custom VM options
-Xmx5120m
Я установил его почти на 5 ГБ, но ничего не сработало для меня. Я считаю, что у моей машины достаточно аппаратных средств. (8 ГБ оперативной памяти, Windows 10, 1 ТБ HDD, AMD A8)
В моем приложении используются многие сервисы google, такие как API Gmail, API Firebase, некоторые другие библиотеки, которые я исчерпал лимит ссылок на 64 КБ? Но я уже включил multidexing, как упомянуто здесь.
Это произошло из-за новых компонентов архитектуры или чего-то еще? Как ускорить процесс сборки?
Обновление:
В одном из ответов ниже Budius был предложен script, который будет отображать тайминги, полученные каждым процессом сборки, я выполнил его в своем приложении, вот результаты:
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
Большая часть таймингов берется Джеком.
Я попробовал канарейку версии, предложенную ниже в ответе Bryan. следующая - вывод времени, затраченного на процесс сборки:
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
Итак, я удалил гнездо и переключился на эту версию canary, сборка быстрее, чем предыдущая, но все же медленная для использования.