打包Multiple dex files define Landroid/support/v4問題解決
android studio 打包的時候報錯:
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
開始以為是不同包引入重複衝突了,各種exclude,如下,然並卵,還是一樣報錯
compile ('com.android.support:recyclerview-v7:+'){
exclude module: 'support-v4'
}
設定GRADLE_HOME環境變數和path,具體地址可檢視android studio -- file --setting 搜gradle
命令列執行gradle -v正常的話
到專案路徑執行gradle -q app:dependencies 或到app module下執行gradle -q dependencies檢視依賴樹
還是然並卵,甚至沒有看到v4的包路徑
最後發現其實是引用工程libs目錄下有一個android-support-v4.jar包,通過
compile fileTree(include: '*.jar', dir: 'libs')來引入v4包的,把這個jar包刪除,
改為gradle引入 compile 'com.android.support:support-v4:24.1.1'
問題解決,可能是gradle引入的gradle才能自動解決重複的包,而通過jar包引入的gradle處理不了