Могу ли я использовать RxAndroidBle и RxJava2 в одном проекте?

У меня есть приложение для Android, которое опирается на RxAndroid (на основе RxJava2). Я также добавил зависимость RxAdnroidBle, которая все еще использует RxJava1.

Во время компиляции у меня была следующая ошибка:

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: /home/eddy/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.1.0/2fdf84dedcaaeabb9d70cde9dbb8aad4eccb80a1/rxjava-2.1.0.jar
    File2: /home/eddy/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.3.0/af000bec2036a2a9d07197c4b03b8966bfc60b03/rxjava-1.3.0.jar 

Что я решил, добавив следующий блок в build.gradle:

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

Кажется, все отлично работает. Но просто чтобы убедиться - наличие обеих библиотек RxJava 1 и 2 в качестве зависимостей может вызвать проблемы?

Спасибо,

1 ответ

Решение

Они живут в разных пакетах, поэтому вы можете использовать их вместе

Из официальной документации

Чтобы позволить иметь RxJava 1.x и RxJava 2.x бок о бок, RxJava 2.x находится под maven координатами io.reactivex.rxjava2:rxjava:2.xy и классы доступны ниже io.reactivex

Здесь мы видим, что они могут быть рядом в одном проекте

https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0

Другие вопросы по тегам