我的应用程序使用旧的架构组件。我想转移到新的 android架构组件。
为此,我在开头添加了与room相关的依赖项,之后构建是正常的。
但是,当我尝试添加生命周期、LiveData和ViewModel的依赖项时,如这里所述。
应用程序构建过程显著减慢,需要5分钟甚至更长时间来构建apk。
在应用程序的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"
此外,我需要启用jack以实现Java 8兼容性,如下所示:
defaultConfig {
........
jackOptions {
enabled true
}
}
在添加了所有这些组件之后,构建过程明显变慢了。我尝试通过转到帮助 -> 编辑自定义VM选项
来更改一些参数的自定义VM选项。
-Xmx5120m
我将其设置为接近5GB,但对我没有任何作用。 我相信我的机器有足够的硬件(8GB RAM,Windows 10,1TB HDD,AMD A8)。
我的应用程序使用了许多Google服务,例如Gmail API,Firebase API,一些其他库,我是否已经超出了64K参考限制? 但是,如此处所述,我已经启用了multidexing。
这是由于新的架构组件或其他原因引起的吗? 如何使构建过程更快?
更新:
下面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
大多数时间由Jack记录。
我尝试了Bryan在下面答案中建议的canary版本,以下是构建过程所需时间的输出:
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版本,构建速度肯定比之前快,但对于使用来说仍然很慢。