重複文件導致無法打包apk
在eclipes工程轉到Android studio下打開時,遇到了文件重複導致無法生成apk的問題。
先來看錯誤提示:
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/LICENSE
File1: D:\AS workspace\code\app\libs\jackson-core-asl-1.9.7.jar
File2: D:\AS workspace\code\app\libs\jackson-mapper-asl-1.9.7.jar
問題原因
在jar包jackson-core-asl-1.9.7.jar和jackson-mapper-asl-1.9.7.jar中,同時包含了一個LICENSE的文件,導致打包時因爲擔心相互覆蓋問題而提示出錯,如下圖所示:
解決方法
在 app 下的 build.gradle 中的 android 部分增加一段配置:
packagingOptions {
exclude 'META-INF/LICENSE'
}
同理,如果出現其他提示:
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/ASL2.0
File1: D:\AS workspace\code\app\libs\jackson-core-asl-1.9.7.jar
File2: D:\AS workspace\code\app\libs\jackson-mapper-asl-1.9.7.jar
只需要在packagingOptions中再添加上就可以解決:
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
}
參考鏈接:https://segmentfault.com/q/1010000002397220/a-1020000002397606