我在使用gradlew(4.10.2)+dagger(2.18)时遇到了一个奇怪的问题。
问题是当我打电话的时候:
./gradlew :app:compileDebugAndroidTestKotlin
/commonmodule_providesgsonFactory.java:6:错误:包javax.annotation.processing不存在导入javax.annotation.processing.generated;
/commonmodule_providesgsonFactory.java:8:错误:找不到符号@generated(
但是如果我从Android Studio运行任务,则任务成功,而@generated
不存在于dagger生成的类中。
Dagger使用auto-common
的generatedannotations
来确定要使用哪个@generated
注释。它基于类路径来完成此操作。
这意味着,当注释处理器运行时,javax.annotation.processing.generated
可用并在生成器中使用,但是当结果文件在另一个任务中编译时,它不再在类路径上。
潜在的原因可能是代码是使用较新版本的JDK生成的,而增量构建是无效的,需要完全“清理和重建”,或者是java语言级别有问题,其中注释处理器运行在Java9+上,而android被编译为Java8或更低版本。
使用./gradlew compileDebugAndroidTestKotlin-dorg.gradle.java.home=
解决了这个问题。
基本上,这个IThttps://github.com/ribot/android-boilerplate变成了Kotlin。
:此接口包含此组件所需的所有方法。 现在,问题是,如果我在中执行此调用,则此类不是由Dagger生成的。如果调用相同的行,则由dagger生成de类,不会有任何问题。 我寻找的另一个解决方案是创建一个具有相同结构的其他不同类,并将作为内部对象,结果也是一样。
我一直在纠结于一个遗留的Android应用程序,试图为其添加测试和适当的架构。该应用程序有一个主,它在启动时运行一系列检查。最初,activity使用Dagger很差劲地“注入依赖项”,activity将使用这些依赖项来运行检查。 我转向了MVVM,这样我就可以单独测试视图模型,而不需要检测,并且只需要为UI测试注入一个模拟视图模型。我跟随本文介绍了这些更改,包括切换到使用新的Dagger And
我已经编写了一个简单的注释处理器(只是为了好玩),它将生成一些我在以前的项目中编写的样板代码。它实际上通过收集活动类上的注释来生成如下所示的模块 但是,当我用dagger运行时,dagger似乎找不到我的注释处理器生成的类。虽然,类是生成的,并且存在于生成的目录中,我可以在源代码中使用它,但在编译时,dagger会产生以下异常。有什么专家建议吗? 这是主要的应用程序组件。 如果有人想做实验,这里有
https://github.com/google/dagger/blob/master/examples/simple/src/main/java/coffee/coffeeapp.java 任何帮助都将不胜感激。
问题内容: 我正在使用Java 6注释处理API。我遵循了以下出色的教程,以创建用于在构建时显示消息的注释处理器: http://kerebus.com/2011/02/using-java-6-processors-in- eclipse/ 但是,就我而言,我有一个简单的类: 如您所见,使用元注释“ Retention”在运行时使JVM可以使用上述注释。我在另一个类的源代码中使用此“标准”注释来