Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate file copied in APK META-INF/LICENSE
File 1:D:\**\app\build\intermediates\explored-aar\com.esri.arcggis.android\arcgis-android\10.2.9\jars\libs\jackson-core-1.9.5.jar
File 2:D:\**\app\build\intermediates\explored-aar\com.esri.arcggis.android\arcgis-android\10.2.9\jars\libs\jackson-mapper-1.9.5.jar
在用Android Studio进行arcgis for android编程时,编译出现上述错误。
解决办法
看起来是因为多个 jar 包里包含了同样的文件(NOTICE.txt),导致打包时因为担心相互覆盖问题而提示出错。 尝试下在 app 下的 build.gradle 中的 android 部分增加一段配置,如下面这段代码所示:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "27.0.3"
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LGPL2.1'
}
defaultConfig {
applicationId "bjx.cumt.com.cumtiptest"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.esri.arcgis.android:arcgis-android:10.2.9'
testCompile 'junit:junit:4.12'
compile files('libs/ips_wifi.jar')
compile files('libs/ips_ble.jar')
}
我在build.gradle文件中添加了以下几行:
packagingOptions {
exclude 'META-INF/LICENSE' // 新添加
exclude 'META-INF/NOTICE' //新添加
exclude 'META-INF/LGPL2.1' //新添加
}
其中,exclude 'META-INF/LGPL2.1'是因为下述报错语句。
因此,此类异常的解决办法就是:
META/INF后面报错什么就exclude什么。