2016-11-02 126 views
2

我有一個項目運行RxAndroid 1.x(所有作品)。 我正在嘗試遷移到2.x版本。從RxAndroid 1.x遷移到2.x(包括RxJava)

我gradle這個文件:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.android.support:design:24.2.1' 
    compile 'com.squareup.retrofit2:retrofit:2.1.0' 
    compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
    //compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 
    compile 'com.squareup.okhttp3:okhttp:3.4.1' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' 
    compile 'com.jakewharton:butterknife:8.4.0' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 
    compile 'org.apache.commons:commons-lang3:3.4' 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 

    //compile 'io.reactivex:rxandroid:1.2.1' 
    //compile 'io.reactivex:rxjava:1.2.1' 
    compile 'com.jakewharton.rxbinding:rxbinding:0.4.0' 
    compile 'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0' 

    compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' 
    compile 'io.reactivex.rxjava2:rxjava:2.0.0' 
    compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1' 
} 

我有這樣的錯誤:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. 
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties 
    File1: /Users/agustin/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.0/5151c737c01616c372c3d00ab145868ede10e826/rxjava-2.0.0.jar 
    File2: /Users/agustin/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/748f0546d5c3c27f1aef07270ffea0c45f0c42a4/rxjava-1.1.0.jar 

爲什麼RxJava 1.1.0添加?

我可以排除rxjava.properties,但我想了解錯誤。我清理了項目並使緩存失效,但錯誤仍然存​​在。

看圖片:

enter image description here

感謝

回答

1

爲了解決這個問題,現在你可以更新RxBinding和改造適配器版本2.

compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0' 
compile 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0' 
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0' 
+1

是的,我忘記了更新這個問題。 – AndroidRuntimeException

1

你可以找出文庫可以包括RxJava 1.1.0通過在項目的根目錄下運行命令./gradlew :app:dependencies這裏app是您正在包含這些依賴項的模塊的名稱。

在你的情況我建議有問題的產品:com.jakewharton.rxbinding:rxbinding:0.4.0

+1

你是對的。似乎RxBinding與RxJava2尚不兼容。 https://github.com/JakeWharton/RxBinding/issues/281謝謝 – AndroidRuntimeException

7

只是想跟進解決這個問題。 RxBinding 1.0.0已經發布了,從現在開始它應該和RxJava2兼容,但是它仍然會導入一個老版本的RxJava,這個問題會導致這個問題提出的同樣的問題。爲了解決這個問題,只需在android下添加以下內容到你的gradle build scrip。

android { 
    ... 
    packagingOptions { 
     exclude 'META-INF/rxjava.properties' 
    } 
} 
+1

是的。答案已更新! – AndroidRuntimeException