AndroidStudio--Error converting bytecode to dex

摘要

這幾天將原來的ECLIPSE項目遷移到了AndroidStudio開發環境中,遷移比較順利,本人有三臺測試機 ,一個是公司的(HTC–Android6.0),兩個自己的(T2-5.1.1、P7-5.1.1),項目在這三臺機子上運行正常,今天硬件部同事拿了臺手機(Android5.0以下)刷寫調試程序,點擊啓動圖標就奔潰。?從log上看到程序異常:com.android.dex.DexException 。

報錯信息如下圖:

這裏寫圖片描述

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
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: org.gradle.process.internal.ExecException: Process 'command 'D:\tools\android\JDK\bin\java.exe'' finished with non-zero exit value 2

從描述上,應該是項目中存在相同的jar包,導致運行失敗。

但是檢查了lib庫並沒有衝突,經過百度和Google出現該問題的解決方案有四種。

1 項目中存在相同的jar包,導致運行失敗

解決方案: 刪除相同的jar包即可 ,大多數是因V4包

2 出現這個問題是因爲最新的v4包(compile ‘com.Android.support:support-v4:22.2.1’)已經包含了annotation.jar這個包,但其他jar包裏也包含這個包造成的。而非同時包含了v4/V7造成的,所以一堆人說在v7包裏進行如下設置:

解決方案:
compile (‘com.android.support:appcompat-v7:22.2.1’){
exclude group: “com.android.support”, module: “support-v4”
}

3 在application的build.gradle裏的dexOptions設置裏增加一句:preDexLibraries = false

dexOptions {
incremental = true;
preDexLibraries = false
javaMaxHeapSize “2g”
}

4 需要v4包的地方exclude掉annotation包,注意compile要多加個括號:

compile (‘com.android.support:support-v4:22.2.1’){
exclude module: ‘support-annotations’ }

分別根據上面的四種解決方便,進行BUG修復,結果BUG依舊存在,心都快碎了
最終的解決方案爲如下,說不出所以然,只是通過一下方案解決了,在此記錄一下!

打開projectStucture ,進行如下配置

這裏寫圖片描述

加入後build.gradle文件顯示,沒有的補齊


dexOptions {
    preDexLibraries false
    jumboMode true
    javaMaxHeapSize "2g"
    incremental false
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章