Android 错误:java.io.IOException:重复的zip条目
我想用几天时间解决一个问题。 当我运行我的应用程序时,出现以下错误:Android 错误:java.io.IOException:重复的zip条目,android,android-gradle-plugin,Android,Android Gradle Plugin,我想用几天时间解决一个问题。 当我运行我的应用程序时,出现以下错误: Error:java.io.IOException: Duplicate zip entry [simple-xml-2.7.1.jar:org/simpleframework/xml/Attribute.class] 这里更详细地说:simple-xml-2.7.1.jar,但我在图中看到了simple-xml-2.3.4.jar Error:java.lang.RuntimeException: java.io.IOE
Error:java.io.IOException: Duplicate zip entry
[simple-xml-2.7.1.jar:org/simpleframework/xml/Attribute.class]
这里更详细地说:simple-xml-2.7.1.jar,但我在图中看到了simple-xml-2.3.4.jar
Error:java.lang.RuntimeException: java.io.IOException: Can't write [C:\Users\Alfonso\Documents\AndroidStudioProjectsNew\Business\VOIPMonitoring\app\build\intermediates\multi-dex\debug\componentClasses.jar]
(Can't read [C:\Users\Alfonso\.gradle\caches\modules-2\files-2.1\org.simpleframework\simple-
xml\2.7.1\dd91fb744c2ff921407475cb29a1e3fee397d411\simple-xml-2.7.1.jar(;;;;;;**.class)]
(Duplicate zip entry [simple-xml-2.7.1.jar:org/simpleframework/xml/Attribute.class]))
Caused by: java.io.IOException: Duplicate zip entry [simple-xml-2.7.1.jar:org/simpleframework/xml/Attribute.class]
at proguard.io.JarWriter.getOutputStream(JarWriter.java:138)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:106)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:106)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:92)
at proguard.io.ClassRewriter.read(ClassRewriter.java:68)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.JarReader.read(JarReader.java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
at proguard.InputReader.readInput(InputReader.java:184)
关联的Proguard文件为空
清洁后,我得到:
这里是我正在使用的外部库
我的proget build.gradle:
buildscript {
repositories {
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.1.0'
}
}
allprojects {
repositories {
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
maven { url "https://dl.bintray.com/httprequester/maven" }
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/'}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我的模块:android ngn stack build.gradle
buildscript {
repositories {
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.1.0'
}
allprojects {
repositories {
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
maven { url "https://dl.bintray.com/httprequester/maven" }
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/'}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我的模块:app build.gradle,我认为这是问题所在
apply plugin: 'com.android.application'
repositories {
maven { url 'https://maven.fabric.io/public' }
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
android {
compileSdkVersion 25
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "monitoring.voip.business.tim.voipmonitoring"
minSdkVersion 19
targetSdkVersion 24
multiDexEnabled true
versionCode 3
versionName "1.3"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile project(':android-ngn-stack')
implementation 'com.android.support:support-v4:25.4.0'
implementation 'com.google.firebase:firebase-config:11.0.4'
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile project(path: ':librarynetwork')
compile 'com.android.support:appcompat-v7:25.4.0'
compile 'com.android.support:animated-vector-drawable:25.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:design:25.4.0'
compile 'com.android.support:recyclerview-v7:25.4.0'
compile 'com.android.support:mediarouter-v7:25.4.0'
testCompile 'junit:junit:4.12'
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
transitive = true;
}
compile 'com.getkeepsafe.taptargetview:taptargetview:1.10.0'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'com.loopeer.library:cardstack:1.0.2'
compile 'com.github.aakira:expandable-layout:1.4.2@aar'
// Room
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
compile 'ir.bpadashi.requester:requester:1.1.6'
compile 'com.google.code.gson:gson:2.8.2'
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.0.0'
}
}
}
}
apply plugin: 'com.google.gms.google-services'
这可能是你的问题。您将simple-xml-2.3.4.jar放在依赖项中,其他一些依赖项也依赖于simple-xml-2.7.1.jar 使用./gradlew:dependencies | grep simple xml找出是否是这种情况,并搜索使用它的依赖项 您最好尝试在不使用simple-xml-2.3.4.jar的情况下进行编译,看看代码是否使用simple-xml-2.7.1.jar运行 simple-xml-2.7.1.jar,但我不使用它 您可能不需要,但其他库中的一个需要 SimpleXMLJAR不是JNI库,所以我不知道为什么要将它放在jniLibs中,但是 删除您的JAR,改用此依赖项
compile 'org.simpleframework:simple-xml:2.7.1'
几天后,我从一个新项目开始,逐步添加依赖项,解决了我的问题 该问题是由于gradle文件中的依赖项与外部库冲突而导致的 这是我发现的,多亏了命令
./gradlew app:dependencies > dependencies.txt
where app是您的项目模块
冲突问题位于箭头->处
您可以使用如下排除模块排除该依赖项
但我更喜欢从新的空项目开始,我会在之后排除依赖性问题
例如,让我们假设com.android.support:support-v4是具有导致这些错误的重复类的模块。以下是如何从依赖项中排除该重复模块:
//Your dependency that includes the module with the duplicates.
compile('com.my.project:my-module:0.1') {
//exclude the offending module so there won’t be duplicates.
exclude module: 'support-v4'
//maybe you need to exclude a group also?...
exclude group: 'com.google.android.gms'
}
对同一解决方案的引用
我知道这是个愚蠢的答案,但你试过了吗。/gradlew先清理一下。@TheKarlo95我删除了.gradle文件夹。对吗?我不这么认为。试着同时做这两件事不会有什么坏处。@TheKarlo95我得到了这个错误:观察到的包id“add-ons;addon-google_api-google-19'位于不一致的位置。我在问题中加上了我的错误。对不起,我不能帮你,因为我不知道该怎么办。尝试通过sdk管理器重新安装google api图像,更新到最新的Android Studiostable分支,使用新的gradle FunctionsSimplementation,而不是编译和您发布的新图像中描述的类似内容,因为问题似乎不在您的代码中。