如何绕过 Android 的插孔编译器给出 Java 堆空间异常?



我最近尝试添加Apache Commons的数学库,但在编译过程中遇到了以下异常:

错误:任务":app:transformClassesWithPreJackPackagedLibrariesForDebug".com.android.sched.scheduler.RunnerProcessException:在"静态void org.apache.commons.math3.util.FastMathLiteralArrays"上的"CodeItemBuilder"运行器期间出错。(( (FastMathLiteralArrays.java:28-5102(': Java 堆空间

我认为问题类似于这些问题中遇到的问题:

错误:任务":app:transformClassesWithMultidexlistForDebug"的执行失败。> java.lang.UnsupportedOperationException (无错误消息(

Android- 错误:任务":app:transformClassesWithDexForRelease"的执行失败

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

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

有了这些,我能够克服编译错误。

最新更新