关于Support包的版本问题

今天跑了下某项目,发现报错:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDevDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/content/SharedPreferencesCompat$1.class

大家看了就知道,这基本上就是support包版本兼容问题,可是之前打开过没有问题啊,怎么今天就跑不起来了?

怀疑是Dependency中存在标示为获取最新版本的库(依赖包没有标记具体的版本号,而是使用了加号“+”),因为发布了新的包,和项目中其他的包发生了版本冲突所导致的。

所以直接就来看项目中的build.gradle文件,发现以下代码:

compileSdkVersion 23
...
dependencies { compile fileTree(dir:
'libs', include: ['*.jar']) compile 'com.android.support:design:23.1.0' compile 'com.android.support:support-v4:23.1.0' compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:recyclerview-v7:+' }

我们知道,support包的版本都需要和compileSdkVersion是一致的(大版本号上一致)。

而这里recyclerview的support包制定了最新版本进行编译(题主不久前更新到24),所以recyclerview使用了24的包进行编译,所以导致了上面的错误。

 

找到了问题,那么解决的方法也就有了,直接把版本号改成和其他support包一样:

compile 'com.android.support:recyclerview-v7:+'

=>

compile 'com.android.support:recyclerview-v7:23.1.0'

编译,成功。

 

posted @ 2016-11-03 10:43  Blue Vienna  阅读(4509)  评论(0编辑  收藏  举报