dexInProcess是什么?它有什么作用?

3

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

android {
    dexOptions {
        dexInProcess = true
    }
}

有人能解释一下它实际上是做什么的吗?我试图在官方文档中搜索,但是关于这个功能的内容不多(可能是因为 Android 插件 2.0.0 仍处于 alpha 阶段,还没有完全发布给公众)

1个回答

6
从最新的AS版本中,我认为我更好地理解了这个标志。以前,DEX步骤是在一个单独的外部进程中进行的。这个标志的想法是让DEX步骤在与您的构建相同的进程中运行,从而使构建过程更快。
唯一需要注意的重要事情是,DEX步骤确实会消耗大量内存(还记得我们之前设置的选项吗?),因此既然现在DEX步骤在与您的构建相同的进程中运行,您需要确保为JVM分配足够的内存。否则,构建过程将被大大减慢甚至抛出OutOfMemoryException异常。
我建议通过更新gradle.properties中的jvmargs,为构建过程分配4GB内存,如下所示:
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接