我如何绕过 Android 的 jack 编译器给出 Java 堆 space 异常?

How can I get around Android's jack compiler giving Java heap space exceptions?

我最近尝试添加 Apache Commons 的数学库,但 运行 在编译过程中出现以下异常:

Error:Execution failed for task ':app:transformClassesWithPreJackPackagedLibrariesForDebug'. com.android.sched.scheduler.RunnerProcessException: Error during 'CodeItemBuilder' runner on 'static void org.apache.commons.math3.util.FastMathLiteralArrays.() (FastMathLiteralArrays.java:28-5102)': Java heap space

我觉得问题和这些问题遇到的问题类似:

如异常所述,可用堆存在问题 space。要增加分配给 Jack 编译器的堆 space 大小,您必须 运行 在进程外,然后应用适当的 dex 选项:

defaultConfig {
    jackOptions {
        enabled true
        jackInProcess false
    }
    dexOptions {
        javaMaxHeapSize "2048M"
    }
}

通过这些,我能够克服编译错误。