1. 程式人生 > >話說android-support-v4.jar的版本衝突產生的問題

話說android-support-v4.jar的版本衝突產生的問題

Android開發的環境:
Eclipse+ADT
SDK Tools版本:23.0.2
SDK Platform-tools版本:20
SDK Build-tools版本:20
SDK Platform 版本:20
Android Support Library版本22.2
AVD Target Name:Android 4.4.2(19)Intel Atom(x86)
——————————————————————————————
遇到的問題:
LogCat報:Multiple dex files define Landroid/support/annotation/AnimRes

上網查了一下,有人說是android-support-v4.jar的版本太高的問題。我搜了一下我機器上的android-support-v4.jar,結果發現有4個不同的版本。可能是前期下載安裝試驗各個版本導致的。於是接下來仔細分析了一下android-support-v4.jar的版本
這裡寫圖片描述


先說直觀的感受,4個版本的jar包大小不同,分別是543KB、644KB、740KB、1.12MB。用rar開啟它,在 META-INF\MANIFEST.MF 檔案裡,內容是這樣的

Manifest-Version: 1.0
Created-By: 1.6.0_26 (Sun Microsystems Inc.)

或者

Manifest-Version: 1.0
Created-By: 1.7.0_79 (Oracle Corporation)

4個檔案的Manifest-Version都是1.0,但Created-By不相同,我們姑且把它當是版本,梳理了一下,結果如下:
這裡寫圖片描述
版本號放在檔名後,看的清楚一點,然後我們再看各個版本android-support-v4.jar的內容,26和39的android\support目錄下只有一個v4目錄
這裡寫圖片描述


而45和79版本的android\support目錄下有兩個目錄,分別是v4和annotation
這裡寫圖片描述
所以事情就很明顯了,高版本的android-support-v4.jar包,裡面包含了annotation。和外面其它jar包裡的annotation衝突,這事兒和android-support-v7沒關係。我的解決辦法也很簡單,就是把所有v4包統一到39版本,覆蓋掉45、79版,Project Clean一下,問題解決。