[Dex Loader] Unable to execute dex: Multiple dex files define Lcom/baidu/location/Address$1;
Conversion to Dalvik format failed...
專案昨日可正常執行,今日重新建置即報錯。使用官方 Key 與範例代碼,未更改邏輯。
專案中重複引入了百度定位 SDK 的 Jar/AAR,導致同一個類別(如 Address$1 內部類)在多個 dex 檔中被定義。常見情況:
locSDK_x.x.jar 與 baidu-map-sdk-x.x.x.jar(後者已內含定位功能)。implementation 與 api 重複傳遞。libs 目錄,又在 build.gradle 中宣告依賴。./gradlew app:dependencies 查看依賴樹,搜尋 baidu 或 locSDK 關鍵字。build.gradle 中排除傳遞依賴:implementation('com.baidu.mapapi:map-sdk:3.0.0') {
exclude group: 'com.baidu.lbsapi', module: 'locSDK'
}
libs 目錄手動放 Jar,請刪除 libs 下相關 Jar,改用 Gradle 依賴管理。dependencyManagement 鎖定版本,子模組不再指定版本號。./gradlew clean → Build → Rebuild Project。打包 APK 後用 dexdump 或 Android Studio Analyze APK 檢查 classes.dex 中 com.baidu.location.Address 僅出現一次。
百度地圖 SDK 版本更新頻繁,升級前務必閱讀釋出說明確認是否已整合定位模組,避免重複引入。