关于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'
编译,成功。