话说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的版本
话说android-support-v4.jar的版本冲突产生的问题_第1张图片
先说直观的感受,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的版本冲突产生的问题_第2张图片
版本号放在文件名后,看的清楚一点,然后我们再看各个版本android-support-v4.jar的内容,26和39的android\support目录下只有一个v4目录
话说android-support-v4.jar的版本冲突产生的问题_第3张图片
而45和79版本的android\support目录下有两个目录,分别是v4和annotation
话说android-support-v4.jar的版本冲突产生的问题_第4张图片
所以事情就很明显了,高版本的android-support-v4.jar包,里面包含了annotation。和外面其它jar包里的annotation冲突,这事儿和android-support-v7没关系。我的解决办法也很简单,就是把所有v4包统一到39版本,覆盖掉45、79版,Project Clean一下,问题解决。

你可能感兴趣的:(技术文章)