我有一个Android项目(Gradle),我需要包含Joda Time和Commons 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库依赖项,那么所有编译都会完美。
谢谢,
答案 0 :(得分:14)
您需要排除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'
}
这对我有同样的错误。 也请注意版本。