Google建议的其中一项构建优化是为您的构建启用dexInProcess
(请参阅here):
android {
dexOptions {
dexInProcess = true
}
}
有人可以解释一下它究竟做了什么吗?试图搜索官方文档,但没有太多关于这个功能(可能是因为android插件2.0.0仍处于alpha阶段,所以没有完全发布给公众)
答案 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