我有一个使用RxJava 1的项目。现在我正在构建一个模块组件,并考虑从RxJava 2开始。
执行gradle sync时,一切都很好。但是在编译期间我收到以下错误
错误:任务':app:transformResourcesWithMergeJavaResForProductionDebug'执行失败。 com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在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:rxandroid:1.2.1'
另一个我有
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
答案 0 :(得分:1)
因此,对于this documentation,它们可以在理论上共存,因为这些类位于不同的包中。
你面对的错误信息可能只是由android打包到apk中,它试图导入两个库并找到两个库中都存在的文件(看看this issue)。
您可以通过将以下内容添加到build.gradle
的“android”块中来忽略该文件:
android {
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
...
}
但是,请确保在更改后正确测试您的项目。
答案 1 :(得分:0)
您需要排除某些rx属性。 加上这个:
android {
...
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
}
到你的app build gradle