首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android「Multiple dex files define」錯誤徹底解決方案

     編輯:程式設計綜合問答

錯誤本質

DEX 文件中存在**重複類定義**,導致打包失敗。常見於 Eclipse/ADT 時代,現代 Gradle 構建較少見。

五大排查方案(按成功率排序)

方案一:清理構建緩存(最簡單)

# Eclipse
Project → Clean → 勾選項目 → OK
# 或
關閉 Eclipse → 刪除 workspace/.metadata → 重啟

方案二:檢查重複 JAR 包(高發區)

  • 右鍵項目 → Properties → Java Build Path → Libraries
  • 展開 **Android Dependencies**,查找重複 JAR
  • 常見:`android-support-v4.jar` 同時存在於 `libs/` 和庫項目中
  • 解決:從 `libs/` 刪除,保留庫項目依賴,或統一版本

方案三:檢查項目內重複類(隱蔽)

  • 項目中定義的類與引用庫中的類**包名+類名完全相同**
  • 例如:項目有 `com.example.Utils`,引用的 JAR 也有 `com.example.Utils`
  • 解決:刪除項目中的重複類,使用庫中的版本

方案四:APK 文件殘留(罕見)

  • 項目目錄下存在 `.apk` 文件(可能是舊版構建產物)
  • 解決:刪除項目根目錄下的所有 `.apk` 文件

方案五:更新 ADT/構建工具(治標不治本)

  • Help → Install New Software → 更新 ADT 插件
  • 更新 Build Tools 至最新版

現代 Gradle 環境下的對應錯誤

// 錯誤:Duplicate class xxx found in modules jetified-xxx.jar and xxx.jar
// 解決:依賴去重
implementation ('com.xxx:lib:1.0') {
    exclude group: 'com.google.guava'  // 排除傳遞依賴
}
// 或強制統一版本
configurations.all {
    resolutionStrategy.force 'com.google.guava:guava:31.1-jre'
}

根治建議

  • 遷移至 **Android Studio + Gradle**,享受依賴管理、增量構建、現代工具鏈
  • 使用 `./gradlew dependencies` 分析依賴樹
  • 配置 `multiDexEnabled true` 解決 65K 方法限制(而非重複類)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved