今天跑了下某項目,發現報錯:
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'
編譯,成功。