有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java RxJava和RxJava2能否在同一个Android项目中共存?

我有一个使用RxJava1的项目。现在我正在构建一个模块组件,并考虑从RxJava 2开始

当执行梯度同步时,一切正常。然而,在编译过程中,我得到了以下错误

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForProductionDebug'. com.安卓.build.api.transform.TransformException: com.安卓.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties File1: /Users/user.name/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.5/b423532b5a3c949cbb799468f83bf566032fe98d/rxjava-1.2.5.jar File2: /Users/user.name/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.1/57f850a6b317e5582f1dbaff10a9e7d7e1fcdcfb/rxjava-2.0.1.jar

我是否可以让它们在一个项目中共存(但不同的库),或者这是一个绝对不可能的问题

也就是说,我有

compile 'io.reactivex:rxjava:1.2.5'
compile 'io.reactivex:rx安卓:1.2.1'

另一个我有

compile 'io.reactivex.rxjava2:rx安卓:2.0.1'

共 (2) 个答案

  1. # 1 楼答案

    关于this documentation,理论上它们可以共存,因为类位于不同的包中

    您面临的错误消息可能是由android打包到apk中引起的,apk尝试导入两个库,并发现两个库中都存在一个文件(请查看this issue

    通过将以下内容添加到build.gradle的“android”块中,可以忽略该文件:

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

    但是,一定要在变更后正确地测试项目

  2. # 2 楼答案

    你需要排除一些rx属性。 添加以下内容:

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

    到你的应用程序构建gradle