com.android.build.api.transform.TransformException解决办法

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什么。


猜你喜欢

转载自blog.csdn.net/renwudao24/article/details/79688845
今日推荐