1. 程式人生 > >Android程式編譯時報錯:duplicate entry: android/support/v4/content/res/TypedArrayUtils.class

Android程式編譯時報錯:duplicate entry: android/support/v4/content/res/TypedArrayUtils.class

  為了解決這個報錯,弄到晚上快12點,現在懷著激動的心情記錄一下解決過程:

報錯全部內容如下:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/content/res/TypedArrayUtils.class

報錯分析

  根據報錯資訊分析是重複依賴了V4包導致的報錯。
  因為使用AndroidStudio,我們大部分時候預設使用的是v7包,而V7包預設包含V4包的,一旦我們依賴的第三方如果使用V4包,就有可能導致V4包中檔案的衝突。

網上的解決辦法如下:

  方法一:
  專案中和依賴庫中都有明顯的V4包依賴,刪除一個就可以了。也有可能是專案中的Libs檔案中既添加了V4的jar包又添加了V4包的依賴。
  這兩種情況都比較簡單,我不會犯這樣的錯誤

  方法二:
  不刪除第三方庫中的V4包,直接在主工程Module的build.gradle檔案中新增如下:

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

  這個我也試過,但沒有解決我的問題

  方法三:
  專案中和依賴庫中都使用V7包,將依賴庫中的V7包換成對應版本的V4包,比如:v7:25.1.0 和v4:25.1.0

我自己實現的方法:

  我發現我專案中和依賴庫中都依賴的是V7包,而且我刪掉依賴庫中的V7包後,依賴庫中的需要V4包支援的程式碼會報錯,沒有使用專案中的V4包,所以依賴庫中的V4的依賴不能刪掉,我在網上找到了方法三,更換之後還是報錯,但我將v4包改為目前最新版本 v4:26.0.0-alpha1 依賴時,問題解決

  真神奇的報錯!關鍵是專案已經迭代了7個版本,之前開發了幾個月都沒有出現這個問題,今天一開啟專案就報著個錯誤,真是抽風了,而且問題解決後現在感覺還是莫名其妙的,現在時間0:06,下班回家!

———-因本人才疏學淺,如部落格或Demo中有錯誤的地方請大家隨意指出,與大家一起討論,共同進步,謝謝!

———-