Как я могу обойти компилятор Android jack, предоставляющий исключения пространства кучи Java?

Недавно я пытался добавить математическую библиотеку Apache Commons, но во время компиляции столкнулся со следующим исключением:

Ошибка: не удалось выполнить задачу ':app:transformClassesWithPreJackPackagedLibrariesForDebug'. com.android.sched.scheduler.RunnerProcessException: ошибка во время выполнения «CodeItemBuilder» на «static void org.apache.commons.math3.util.FastMathLiteralArrays.() (FastMathLiteralArrays.java:28-5102)»: пространство кучи Java

Я думаю, что проблема аналогична проблемам, возникающим в этих вопросах:

Ошибка: не удалось выполнить задачу ':app:transformClassesWithMultidexlistForDebug'. > java.lang.UnsupportedOperationException (без сообщения об ошибке)

Android-ошибка: не удалось выполнить задачу ':app:transformClassesWithDexForRelease'


person Saites    schedule 20.03.2017    source источник
comment
не забывайте, что Джек устарел, подумайте о возвращении   -  person agonist_    schedule 20.03.2017
comment
Какая? Не имел представления. Спасибо за внимание.   -  person Saites    schedule 20.03.2017
comment
да, см. android-developers.googleblog. ком/2017/03/   -  person agonist_    schedule 20.03.2017


Ответы (1)


Как указано в исключении, существует проблема с доступным пространством кучи. Чтобы увеличить размер кучи, выделенный для компилятора Jack, вы должны запустить процесс вне процесса, а затем применить соответствующую опцию dex:

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

С ними я смог обойти ошибку компиляции.

person Saites    schedule 20.03.2017