2016-11-02 133 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