Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/baidu/location/Address$1.class
locSDK_xxx.jar(定位)與 BaiduLBS_Android.jar(地圖)。duplicate entry。現代百度地圖 SDK 提供 AAR 發布至 Maven 倉庫,優先使用 Gradle 依賴管理,不要手動複製 JAR 到 `libs/`。
// build.gradle (Module: app)
dependencies {
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.0' // 地圖
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.0' // 定位
// 刪除 libs/ 下所有百度相關 .jar
}
若專案必須離線,請確認 只導入一份完整 SDK 包,不要同時導入「地圖包」與「定位包」的 JAR,它們有重疊。
若必須保留多個 JAR,在依賴聲明中排除衝突包:
implementation (files('libs/BaiduLBS_Android.jar')) {
exclude group: 'com.baidu.location' // 排除定位相關類
}
implementation files('libs/locSDK_xxx.jar')
android {
defaultConfig {
multiDexEnabled true
}
packagingOptions {
exclude 'com/baidu/location/Address.class' // 強制排除衝突類
}
}
缺點:可能導致運行時 `ClassNotFoundException` 或邏輯錯誤,不推薦長期使用。
libs/ 目錄下是否有多個百度 JAR?./gradlew app:dependencies 檢查依賴樹,搜尋 com.baidu.location 出現次數。核心原則:**一個類別在最終 APK 中只能有一個定義**。善用 Gradle 依賴管理,拒絕手動疊加 JAR,從源頭杜絕衝突。