2017-07-07 55 views
0

我有一個使用RxJava 1的項目。現在我正在構建一個模塊組件,並且正在考慮以RxJava 2開頭。RxJava和RxJava 2可以在同一個Android項目中共存嗎?

執行gradle sync時,一切正常。但是在編譯過程中,我得到了以下錯誤

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' 
+0

你有沒有嘗試從gradle中排除一些罐子? – Konrad

+0

https://stackoverflow.com/search?q=rxjava.properties – akarnokd

回答

0

所以就到this documentation他們可以共存理論上,因爲類都位於不同的包。

您面臨的錯誤信息可能是由android打包成apk文件導致的,該apk嘗試導入兩個庫並找到兩個庫中都存在的文件(查看this issue)。

您可以通過添加以下到您的build.gradle的「機器人」塊忽略文件:

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

然而,可以肯定的是更改後正確地測試項目。

0

你需要排除一些RX性能。 補充一點:

爲您的應用程序的gradle構建