前段時間項目在要打包的時候突然報錯了,報錯如下:
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.android.dx.command.Main with arguments {--dex --num-threads=4 --multi-dex --main-dex-list E:******-master (3)******-master\app\build\intermediates\multi-dex\debug\maindexlist.txt --output E:******-master (3)******-master\app\build\intermediates\transforms\dex\debug\folders\1000\1f\main E:******-master (3)******-master\app\build\intermediates\transforms\jarMerging\debug\jars\1\1f\combined.jar}
最初一看到這個error信息里面的--multi-dex迹恐,想著是不是因為因為項目里面有重復(fù)的jar包愉豺,因為以前項目有類似問題豪诲,通過刪除重復(fù)jar包可以解決問題霉囚,但是這一次卻不行柄粹。
接著思考是否文件的方法引用超過了65535個方法限制, 然后我給項目進(jìn)行分包,對其虛擬機堆分配內(nèi)存大小 ,在項目app的gradler配置文件中,添加如下
defaultConfig {
multiDexEnabled true
}
dexOptions {
incremental true
jumboMode true
javaMaxHeapSize "4g"
preDexLibraries = false
}
依然無法解決問題键畴,最后終于在https://stackoverflow.com/questions/19955297/how-can-i-use-the-multi-dex-option這里看到了類似的解決方案:
其中在問題回答部分最盅,我看到了這樣一段話“Then you need to add the multidex support library jar, located in sdk/extras/android/support/multidex/library/libs. And install it either by extending your application from MultiDexApplication, or calling Multidex.install() from your application's attachBaseContext method.”。重點就是“ application from MultiDexApplication”起惕,讓你的Application extends MultiDexApplication就ok了