web-dev-qa-db-ja.com

APK META-INF / rxjava.propertiesにコピーされた重複ファイルを解決する方法

Android aplication。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
}
}

この問題を修正するにはどうすればよいですか?

23
Dani Garcia

同じ問題がありました。 重複ファイルrxjava.properties で説明されているように、アプリグラドルにpackagingOptionsを追加することで修正しました。

Android {

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

同じ問題がありました。
私の場合、_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'
_

とにかく、一番上にあるように、より良い解決策があります

5
JoCuTo

2019年以降にこの問題に直面している場合、これはおそらくdeprecatedRxJava 2 CallAdapter.Factory ieを使用しているためです

com.jakewharton.retrofit:retrofit2-rxjava2-adapter

その依存関係を削除し、これを追加する必要があります

実装 'com.squareup.retrofit2:adapter-rxjava2:latest.version'

here から最新バージョンを入手してください

0
war_Hero

私も同じ問題を抱えていますが、コードで使用していないすべての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'
0
mahmoud Zahran

今日この問題が発生し、この問題を修正しました

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'
0
fundmarkhua

私もこの問題を抱えています、私はあなたと同じ方法を使用しましたが、2つのモジュールを持っているので、依存関係Rxjavaのモジュールでのみ変更し、最後にアプリのgradleにpackaginOptionsを追加しています

packagingOptions {
    exclude 'META-INF/rxjava.properties'
}
0
Peter Pan

同じ問題が発生したため、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/*'
    }
0
Deepesh