簡體   English   中英

為什么 DaggerAndroidProcessor 庫在處理器路徑上找不到 @ContributesAndroidInjector?

[英]Why @ContributesAndroidInjector cant be found by DaggerAndroidProcessor library on the processor path?

我正在實現 Dagger2,當我使用 @ContributesAndroidInjector 時,出現編譯時錯誤: @dagger.android.ContributesAndroidInjector was used,but dagger.android.processor.AndroidProcessor was not found on the processor path

我嘗試了多種解決方案,但這個錯誤永遠不會消失。 我嘗試使用舊庫
dagger2 依賴項的版本。 我嘗試創建一個 java 抽象 @Module class。
嘗試使用 Kotlin android 處理器聲明 kapt 依賴項,但沒有任何幫助。 有人可以幫我擺脫這個錯誤。 以下是我在項目中使用的 Dagger2 的依賴項以供參考:

implementation "com.google.dagger:dagger:2.35.1"
implementation "com.google.dagger:dagger-android:2.35.1"
implementation "com.google.dagger:dagger-android-support:2.35.1"
annotationProcessor "com.google.dagger:dagger-android-processor:2.35.1"
kapt 'com.google.dagger:dagger-compiler:2.28.3'
implementation 'javax.inject:javax.inject:1'
kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0"
implementation "androidx.compose.runtime:runtime:1.2.1"

我設法通過將我的依賴項更改為以下內容來解決這個問題 -

implementation 'com.google.dagger:dagger-android:2.16'
implementation 'com.google.dagger:dagger-android-support:2.16'
kapt "com.google.dagger:dagger-compiler:2.16"
kapt "com.google.dagger:dagger-android-processor:2.16"

這似乎更像是一個黑客而不是一個正確的解決方案,因為當我更新我的庫時它開始給我編譯時錯誤

哦。 您沒有使用與您的實現相同的 Dagger 編譯器。 您的編譯器是 2.28.3,而您的實現是 2.35.1,如果 Dagger 編譯器的版本與其實現不同,它可能會生成引用缺失實現的非工作代碼。 或者(如此處)它可能根本不會生成代碼。

使它們匹配:

implementation "com.google.dagger:dagger:2.35.1"
implementation "com.google.dagger:dagger-android:2.35.1"
implementation "com.google.dagger:dagger-android-support:2.35.1"
kapt "com.google.dagger:dagger-android-processor:2.35.1"
kapt "com.google.dagger:dagger-compiler:2.35.1"

implementation 'javax.inject:javax.inject:1'
kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0"
implementation "androidx.compose.runtime:runtime:1.2.1"

我還根據kapt上的 Dagger README 部分將您的 Android 編譯器切換為 kapt

暫無
暫無

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

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