之前项目用到了umeng的feedback模块,在尝试Build的时候出现如下报错:
Error:Execution failed for task ‘:app:transformResourcesWithMergeJavaResForDebug’.
com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okio/okio/pom.xml
File1: /Users/chan/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.6.0/98476622f10715998eacf9240d6b479f12c66143/okio-1.6.0.jar
File2: /Users/chan/Documents/xxxx/ChanWeather/app/build/intermediates/exploded-aar/com.umeng/message/2.4.1/jars/libs/com.umeng.message.lib_v2.4.1.jar
初步判定可能是由于包冲突
google一顿后 初步解决方案是使用分包,但是无果,显然这里并不是这个原因
仔细排查发现问题出在okio这个包上,我的项目用到的网络库是okhttp,而okhttp引用了okio,同样umeng也引用了。按照网上的普遍做法,都是在 compile后面加入exclude,但是貌似这个方法已被废弃,而改用packagingOptions。
如下:
android {
packagingOptions {
exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
}
}