簡體   English   中英

如何同時使用Realm.io和Dagger(或任何需要注釋處理的多個依賴項)?

[英]How can I use both Realm.io and Dagger (or any multiple dependencies that need annotation processing)?

我正在嘗試在我的Android應用程序中同時使用Realm.ioDagger ,但我似乎遇到了META-INF/services/javax.annotation.processing.Processor文件的沖突問題。

我已經嘗試將以下內容添加到我的build.gradle文件中:

packagingOptions {
    pickFirst 'META-INF/services/javax.annotation.processing.Processor'
}

並嘗試使用exclude ,但我得到的錯誤,如注釋處理器沒有在任何一個項目中運行。

我一直遇到的錯誤是Module adapter for class could not be loaded.的標准Module adapter for class could not be loaded.

我認為正在發生的是,由於兩個AnnotationProcessors都沒有被保留,一個或另一個包的處理器不會發生,但我可能會離開。

你的AnnotationProcessors不應該在你的compile依賴范圍內,它們應該是provided或者,如果你使用android-aptapt

它看起來並不像Realm那樣將它們的注釋處理器分開,因此需要保留在編譯類路徑中,但是匕首編譯器可以移動到提供的位置。

這最終會看起來像這樣:

compile 'com.squareup.dagger:dagger:1.2.2'
provided 'com.squareup.dagger:dagger-compiler:1.2.2'

compile 'io.realm:realm-android:0.87.1'

提供的(或apt)作用域使得編譯器可以使用依賴項,但不會將它們包含在最終產品中,而不需要它們。 您遇到的沖突是在dex進程中,但在這些范圍內,這些類永遠不會那么遠。

這還有一個額外的好處,即縮小最終APK的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM