RxJava 和 RxJava 2 可以共存于同一个 Android 项目中吗?
Can RxJava and RxJava 2 coexist in the same Android project?
我有一个使用 RxJava 1 的项目。现在我正在构建一个模块组件,并考虑从 RxJava 2 开始。
执行gradle同步时,一切正常。但是在编译过程中出现了以下错误
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForProductionDebug'.
com.android.build.api.transform.TransformException: com.android.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:rxandroid:1.2.1'
另一个我有
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
您需要排除一些 rx 属性。
添加:
android {
...
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
}
到您的应用构建 gradle
所以关于 this documentation 它们理论上可以共存,因为 类 位于不同的包中。
您遇到的错误消息可能只是由于 android 打包到 apk 中导致的,它尝试导入两个库并找到一个存在于两个库中的文件(查看 this issue).
您可以通过将以下内容添加到 build.gradle
的 "android" 块中来忽略该文件:
android {
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
...
}
但是,请务必在更改后正确测试您的项目。
我有一个使用 RxJava 1 的项目。现在我正在构建一个模块组件,并考虑从 RxJava 2 开始。
执行gradle同步时,一切正常。但是在编译过程中出现了以下错误
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForProductionDebug'. com.android.build.api.transform.TransformException: com.android.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:rxandroid:1.2.1'
另一个我有
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
您需要排除一些 rx 属性。 添加:
android {
...
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
}
到您的应用构建 gradle
所以关于 this documentation 它们理论上可以共存,因为 类 位于不同的包中。
您遇到的错误消息可能只是由于 android 打包到 apk 中导致的,它尝试导入两个库并找到一个存在于两个库中的文件(查看 this issue).
您可以通过将以下内容添加到 build.gradle
的 "android" 块中来忽略该文件:
android {
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
...
}
但是,请务必在更改后正确测试您的项目。