2018年3月1日 星期四

治療 Android 編譯時造成的 com.android.builder.dexing.dexarchivemergerexception: Unable to merge dex 錯誤

使用 Android Studio 編譯時,可能有幾種原因導致 com.android.builder.dexing.dexarchivemergerexception: Unable to merge dex 錯誤發生,本篇紀錄數個解決方案。


此情形會被 Gradle 報錯,因此應該要從 build.gradle (Module), 和 build.gradle(Project) 開始下手。


重複使用同一個 dependency library 類別庫


導致原因可能是重複用到兩次 com.android.support:appcompat (比較常見),或其他 Library 被引用兩次重複。 (檢查 Gradle 設定的Module 端)

com.google.android.gms:play-services 引用版本


導致原因可能跟引用模組的版本有關,像是 com.google.android.gms:play-services 這個模組。

類別庫過大


如果編譯時用的類別庫太大,可能會導致錯誤,解決方案是在 Gradle Module 端的 android 設定中打開 multiDexEnabled:
android {
    defaultConfig {
       multiDexEnabled true
    }
}

清空專案


使用 Build -> Clean, Rebuild 來清空,及 File ->  Invalidate  Caches & Restart。



Reference:
http://blog.csdn.net/qq_33445600/article/details/78550455
https://stackoverflow.com/questions/46267621/unable-to-merge-dex
https://github.com/paypal/PayPal-Android-SDK/issues/448
http://blog.darkwing.co/2016/02/%E9%96%8B%E5%95%9Fmultidexenabled%E6%89%80%E9%80%A0%E6%88%90%E7%9A%84crash/
http://blog.csdn.net/u012426327/article/details/78361743
http://www.it72.com/thread-12286.htm
http://blog.csdn.net/qq_37299249/article/details/78174604

沒有留言:

張貼留言

© ERIC RILEY , 自由無須告知轉貼
Background Japanese Sayagata by Olga Libby