dexInProcess.它有什么作用?

Pav*_*dka 3 android android-gradle-plugin

Google建议的构建优化之一是dexInProcess为您的构建启用(请参阅此处):

android {
    dexOptions {
        dexInProcess = true
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释它实际上做了什么吗?试图搜索官方文档,但没有太多关于这个功能(可能是因为android插件2.0.0仍处于alpha阶段,所以没有完全发布到公众)

Pav*_*dka 6

从最新的AS版本开始,我想我对这个标志有了更好的理解.以前,DEX步骤发生在一个单独的外部过程中.这个标志的想法是DEX步骤在与构建相同的过程中运行,这使得构建过程更快.

您应该注意的唯一重要的事情是,DEX步骤实际上是内存消耗(记住dexOptions.javaMaxHeapSize "4g"以前设置的选项吗?),所以既然现在DEX步骤在与构建相同的过程中运行,您需要确保已分配足够的内存到你的JVM.否则,构建将显着减慢甚至抛出OutOfMemoryException.

我建议通过更新jvmargs您的构建过程4演出gradle.properties如下:

org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)