android– 错误:error.NonExistentClass Kotlin在多模块Dagger项目中

android– 错误:error.NonExistentClass Kotlin在多模块Dagger项目中,第1张

概述我正在使用Dagger2和Kotlin进行Android开发.我的项目也是一个多模块项目.我的settings.gradle文件是这样的:include:appinclude:lib我也在维护lib模块.在Dagger文件中(例如在组件中),我尝试从其他模块中获取项目.例如:@ComponentinterfaceAppComponent{fungetPre

我正在使用Dagger 2和Kotlin进行Android开发.
我的项目也是一个多模块项目.
我的settings.gradle文件是这样的:

include :appinclude :lib

我也在维护lib模块.

在Dagger文件中(例如在组件中),我尝试从其他模块中获取项目.例如:

@Componentinterface AppComponent{    fun getPresenter() : Presenter}

Presenter对象在lib模块中定义.我在linux环境中工作,我正在使用AndroID Studio 3预览金丝雀5.代码运行良好,我能够生成APK.

但是我的公司希望使用稳定版的AndroID Studio生成APK.我正在使用AndroID Studio 2.3.3.

在编译AndroID项目时,我遇到了这个错误

error: error.NonExistentClass

出现错误

:app:kaptDeBUGKotlin 

执行并由dagger类找不到,该类在其他项目中定义.可能的解决方法是什么?对不起,我的英语不好.

解决方法:

根本原因

基本上,使用kapt时没有太多可以解决的问题.引用this link解决另一个使用预处理器(OrmaDatabase)的库中的相同问题:

Because Kotlin makes its stubs before Java Annotation Processing runs,
Kotlin kNows just nothing about OrmaDatabase, and the name of the
declaration in stubs will be error.NonExistentClass. This breaks the
Annotation Processing tool. It’s a kind of kapt limitation

如何解决(解决方法)

只需使用plain apt或annotationProcessor来运行Dagger编译器.我一改变了:

kapt libs.daggerCompiler

annotationProcessor libs.daggerCompiler

在我的模块级build.gradle文件中,我能够得到错误.在修复错误之后,你必须将该行恢复为kapt,否则将无法生成匕首类,因为它们是在Kotlin中定义的.

总结

以上是内存溢出为你收集整理的android – 错误:error.NonExistentClass Kotlin在多模块Dagger项目中全部内容,希望文章能够帮你解决android – 错误:error.NonExistentClass Kotlin在多模块Dagger项目中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1096786.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存