Alf*_*ano 5 android dagger-2 retrofit2 kapt
我向我的项目添加了一个新的 Retrofit 接口,其中包含几个用@GET和注释注释的端点,在使用所述类的构造函数中的注释@HEADERS将所述接口注入到存储库类后,Android Studio 抛出此错误:@Inject
NonExistentClass cannot be converted to Annotation
Run Code Online (Sandbox Code Playgroud)
查看生成的 Java 代码后,它将@GET和@HEADERS注释替换为:
@error.NonExistentClass()
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下操作:
使用annotatioProcessor代替kapt
设置jetifier.enabled为false在gradle.properties
在我的文件generateStubs中设置truebuild.gradle
在我的文件correctErrorTypes中设置truebuild.gradle
我在用着:
安卓工作室3.3
科特林 1.3.11
匕首2.21
改造2.3.0
科特林
卡普特
可能是匕首范围的问题吗?或者Retrofit/dagger 与新版本的Kapt 插件不完全兼容?
幸运的是这个问题让我弄清楚了我的问题。在将类从应用程序模块移动到库时,我引用了仅存在于调试文件夹中的注释类。gradlew install因此调试版本没问题,但在生成发布文件时调用失败。
对我来说,错误非常明确,尽管我花了很长时间才意识到 - 生成的文件实际上已将丢失的注释替换为@error.NonExistentClass()
将文件移动到主 src 集中意味着调试和发布版本都可以看到该类。我花了一段时间才弄清楚,我以为这是被 kapt 掩盖的 Dagger 问题,但实际上这只是一个普通的旧 Dagger 问题。我的建议是仔细查看您的 Dagger 设置。
| 归档时间: |
|
| 查看次数: |
17104 次 |
| 最近记录: |