我见过这个问题的许多版本,其中解决方案是简单地排除 META-INF 文件名,但那些已经被排除在外,并且在这种情况下,重复文件甚至不是与 META-INF 关联的文件。当我运行 ./gradlew --stacktrace 时,它编译得很好,但是如果我在设备上运行应用程序,应用程序会因重复文件警告而崩溃。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "rocks.morrisontech.historicsf"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/license'
}
dependencies {
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:25.1.0'
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.socrata:soda-api-java:0.9.12'
compile 'com.google.code.findbugs:jsr305:2.0.1'
testCompile 'junit:junit:4.12'
// play-services imports
compile 'com.google.android.gms:play-services-maps:10.0.1'
}
FAILURE:构建失败并出现异常。
出了什么问题:任务“:app:transformResourcesWithMergeJavaResForDebug”执行失败。
com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在 APK com/sun/jersey/impl/api.properties File1 中复制的重复文件:/Users/Quinn/.gradle/caches/ modules-2/files-2.1/com.sun.jersey/jersey-core/1.9.1/cf6c0f8b945081fca5f5eb7417d10d58cefd7035/jersey-core-1.9.1.jar 文件2:/Users/Quinn/.gradle/caches/modules-2/files -2.1/com.sun.jersey/jersey-bundle/1.9.1/67d37c4e80633a0196b733886441855201742a65/jersey-bundle-1.9.1.jar
尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。
我注意到 jersey 是 com.socrata:soda-api-java:0.9.12 的依赖项,当我删除该依赖项时,我没有任何问题。我也尝试过使用 soda-android-api,但也有类似的问题。