【问题标题】:annotationProcessor + androidTest + dagger2annotationProcessor + androidTest + dagger2
【发布时间】:2016-12-02 01:28:10
【问题描述】:

对于插桩测试,我有一个 TestApplication,它创建了一个 TestComponent,但不再生成该文件 (Error:/xxx/TestApplication.java:16: The import.xxx.DaggerTestApplicationComponent cannot be resolved)。我无法确定根本原因。我尝试过不同的 Android Studio(2.2、2.1.2)、不同的 gradle 插件(2.2.0-alpha6、5、4)和不同版本的 dagger(2.2 到 2.6)。

我应该使用androidTestAnnotationProcessor 吗? (以前不是这样的)

编辑:要使用dagger 2.6,需要添加classpath 'com.google.guava:guava:19.0'

更新:Module 存在问题,因此无法创建 Component。但是,使用千斤顶(即使有调试选项),我看不到问题。现在,恢复到 java 7,gradle 插件 2.1.2。这样,无需指定哪个 guava 版本,并且可以使用所有最新的库(dagger 2.6、butterknife 8.2.1、apt 1.8)

【问题讨论】:

  • 您是否尝试在命令行中生成它?以前dagger和测试文件生成有问题,不知道现在还是这样
  • 我没有...但我怀疑它是在启用 jack 后开始发生的

标签: android android-gradle-plugin dagger-2 android-instrumentation annotation-processor


【解决方案1】:

除了@Ognyan 的回答,请记住DaggerTestApplicationComponent 在您构建测试之前不会生成。

要构建测试,请打开 ActivityTest.kt,右键单击公共类 ActivityTest 并选择Run -> ActivityTest.kt

【讨论】:

    【解决方案2】:

    我在使用 Dagger 2.9 时遇到了同样的问题。 compileDebugAndroidTestSources 已成功完成,但未生成 Dagger*Component

    在挣扎了大约一个小时后,我找到了这个问题,最后通过一些实验找到了解决方案:

    添加

    androidTestAnnotationProcessor 'com.google.dagger:dagger-compiler:2.9'

    并再次执行compileDebugAndroidTestSources。如果您的图表正常,现在应该生成源代码(您可能必须临时注释掉对 Dagger*Component 的引用才能成功编译)。

    如果您的图表有问题(例如缺少@Provides),现在您将收到错误消息(与之前没有androidTestAnnotationProcessor 的状态相比,任务完成时没有错误但未生成源)

    <rant>

    我曾经很喜欢 Dagger,但它时不时会出现一些奇怪的问题,这使其成为长期商业项目的巨大风险。此外,他们仍然没有像样的文档,这使得新开发人员很难学习它。可能不仅仅是 Dagger 的错,可能 gradle 和 Android Studio 也有问题,但我正在认真考虑转储它。

    </rant>

    【讨论】:

    • 如果执行构建,它将不起作用。任务构建是否调用 compileDebugAndroidTestSources?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多