dexInProcess。它有什么作用?

时间:2016-01-28 17:28:47

标签: android android-gradle

Google建议的其中一项构建优化是为您的构建启用dexInProcess(请参阅here):

android {
    dexOptions {
        dexInProcess = true
    }
}

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

1 个答案:

答案 0 :(得分:6)

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

你应该注意的唯一重要的事情是,DEX步骤实际上是内存消耗(请记住我们之前设置的$wsProxy = New-WebServiceProxy -uri http://localhost:63600/Service1.svc $wsProxy.UseDefaultCredentials = $true $namespace = $wsProxy.GetType().Namespace $myct = New-Object "$namespace.CompositeType" $myct.BoolValue = $true; $myct.StringValue = "asdfasdg"; $wsProxy.GetDataUsingDataContract($myct) $wsProxy.GetData(123,$true) 选项吗?),所以现在DEX步骤在与构建相同的过程中运行,您需要确保为JVM分配了足够的内存。否则构建将显着减慢甚至抛出OutOfMemoryException。

我建议您通过更新dexOptions.javaMaxHeapSize "4g"中的jvmargs给出构建过程4演出,如下所示:

gradle.properties
相关问题