android 如何解决APK META-INF中复制的重复文件/rxjava.properties

nfeuvbwi  于 2023-05-27  发布在  Android
关注(0)|答案(9)|浏览(92)

我在我的android应用程序上使用rxjava和rxvolley。当我尝试运行它时,我得到这个错误

Execution failed for task ':testapp:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
            File1: C:\Users\Daniel\.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.1.0\748f0546d5c3c27f1aef07270ffea0c45f0c42a4\rxjava-1.1.0.jar
            File2: C:\Users\Daniel\.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.3\d2f725668bd22e21170381b23f8fbdf72c69d886\rxjava-2.0.3.jar

我有一个像这样的exclude.gradle文件

android {
packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/rxjava.properties'
    exclude 'META-INF/rxjava.PROPERTIES'
    exclude 'META-INF/RXJAVA.properties'
    exclude 'META-INF/RXJAVA.PROPERTIES'
    exclude 'META-INF/rxjava'
    exclude 'META-INF/RXJAVA'
}

lintOptions {
    abortOnError false
}
}

如何解决这个问题?

krugob8w

krugob8w1#

我也有同样的问题。我修复它的方法是在app gradle中添加packagingOptions,如Duplicated file www.example.com中所述rxjava.properties

android {

    defaultConfig {
    }
    buildTypes {
    }
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
}
1cklez4t

1cklez4t2#

我也有同样的问题。
在我的例子中,我使用的是Retrofit2,但我假设问题出在rx libraries
这是我正在使用的build.gradle (module:app),在我的情况下工作。

compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'

compile 'io.reactivex:rxandroid:1.1.0' //<-use this
compile 'io.reactivex:rxjava:1.1.3'    //<-use this

compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'

无论如何,有一个更好的解决方案,你可以看到在顶部

kqlmhetl

kqlmhetl3#

我也有同样的问题,但很容易删除重复的“注解”所有Rxjava相关的依赖关系,它不使用在我的代码。

//RxJava removes or comment duplicated and not used dependencies.
      //  implementation 'com.squareup.retrofit2:adapter-rxjava:2.4.0'
       // implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
       // implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
3npbholx

3npbholx4#

在www.example.com中添加此代码build.gradle.app

android {
 ...
 ...
 ...

 packagingOptions {
        exclude 'META-INF/rxjava.properties'
 }
}
juzqafwq

juzqafwq5#

我遇到了同样的问题,并通过将下面的代码放在app/build.gradle文件中来修复它。请注意,您必须在路径的末尾加上“*”,以排除文件夹中的所有文件。您将不得不更改文件的路径,以排除在下面的代码的基础上的错误描述。

compileSdkVersion 25
    buildToolsVersion "24.0.3"

    packagingOptions {
        exclude 'com/google/appengine/repackaged/org/apache/commons/codec/language/bm/*'
        exclude 'com/google/appengine/repackaged/org/codehaus/jackson/impl/*'
        exclude 'com/google/appengine/repackaged/org/apache/commons/codec/language/*'
    }
6za6bjd0

6za6bjd06#

我今天遇到了这个问题,并解决了这个问题

compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'

//RxJava dependencies
compile 'io.reactivex.rxjava2:rxandroid:2.0.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.2'
compile 'org.reactivestreams:reactive-streams:1.0.0'
guz6ccqo

guz6ccqo7#

我也有这个问题,我也用了和你一样的方法,但是因为我有两个模块,所以我只在依赖Rxjava的模块中修改了一下,最后我把它修复了,就是在app gradle中添加了packaginOptions

packagingOptions {
    exclude 'META-INF/rxjava.properties'
}
nc1teljy

nc1teljy8#

如果您在2019年及更高版本中遇到此问题,则很可能是因为您使用了已弃用的RxJava 2 CallAdapter.Factory ie
com.jakewharton. reflect:retrofit2-rxjava2-adapter
你必须删除该依赖项并添加此

implementation 'com.squareup.retrofit2:adapter-rxjava2:latest. version'

请从here获取最新版本

frebpwbc

frebpwbc9#

通常情况下,这种问题的发生是由于在我们的应用程序级别Gradle文件中包含的两个或多个库中包含相同的包名和类名。我在运行时遇到了这个问题,我解决了它降级的库之一。
我的问题在下面:

Duplicate class a.a found in modules jetified-eSewaSdk-runtime (:eSewaSdk:)
and jetified-khalti-android-2.01.02-runtime (com.khalti:khalti-android:2.01.02)

I downgrade one of the library from com.khalti:khalti-android:2.01.02 to com.khalti:khalti-android:2.00.01

相关问题