微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android项目中包含Joda Time和Common IO库时,复制的APK中的重复文件

我有一个 Android项目(Gradle),我需要包括 Joda TimeCommons IO库.这是我的Gradle文件
apply plugin: 'android-library'
apply plugin: 'android-test'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.10.+'
        classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.+'
    }
}

dependencies {
    repositories {
        mavenCentral()
        maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots/'
        }
    }

    androidTestCompile 'com.google.guava:guava:14.0.1','com.squareup.dagger:dagger:1.1.0','org.hamcrest:hamcrest-integration:1.1','org.hamcrest:hamcrest-core:1.1','org.hamcrest:hamcrest-library:1.1'

    androidTestCompile('junit:junit:4.11') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile 'org.mockito:mockito-all:1.9.5'

    androidTestCompile('org.robolectric:robolectric:2.3') {
        exclude module: 'classworlds'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-plugin-registry'
        exclude module: 'maven-profile'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'nekohtml'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-http-shared'
        exclude module: 'wagon-provider-api'
    }
    androidTestCompile 'com.squareup:fest-android:1.0.+'

    compile files('./libs/joda-time-2.4.jar')
    compile files('./libs/commons-io-2.1.jar')
    compile files('./libs/jackson-annotations-2.0.2.jar');
    compile files('./libs/jackson-core-2.0.2.jar');
    compile files('./libs/jackson-databind-2.0.2.jar');
    compile files('./libs/scribe-1.2.3.jar');
}

android {
    packagingOptions {
        exclude 'LICENSE.txt'
        exclude 'meta-inf/LICENSE'
        exclude 'meta-inf/LICENSE.txt'
        exclude 'meta-inf/NOTICE'
    }
    compileSdkVersion 19
    buildToolsversion "19.0.3"

    defaultConfig {
        versionName "1.0"
        versionCode 1
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['res']
        }

        androidTest {
            java.srcDirs = ['src/test/java']
        }
    }

    lintOptions {
        abortOnError false
    }
}

问题是我无法编译应用程序,出现以下错误

Error:Gradle: Execution Failed for task ':App:packageDebug'.
> Duplicate files copied in APK meta-inf/LICENSE.txt
    File 1: <Path>/unspecified/libs/commons-io-2.1.jar
    File 2: <Path>/unspecified/libs/commons-io-2.1.jar

如您所见,我已经将exclude’meta-inf / LICENSE.txt’行放在我的build.gradle中,但问题仍然存在.如果我删除了commons-io库依赖关系,那么所有的编译都是完美的.

谢谢,

解决方法

您需要排除LICENSE.txt和NOTICE.txt:
android {
    //code

    packagingOptions {
        exclude 'meta-inf/NOTICE.txt'
        exclude 'meta-inf/LICENSE.txt'
    }
}

dependencies {
    compile 'joda-time:joda-time:2.3'
    compile 'commons-io:commons-io:2.4'
}

这对我来说同样的错误.请注意版本.

原文地址:https://www.jb51.cc/android/313303.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐