【问题标题】:Dagger not see my own generated dependencyDagger 看不到我自己生成的依赖
【发布时间】:2019-09-21 21:45:15
【问题描述】:

我对 Dagger 和我自己生成的代码有疑问。

假设:

  1. 我需要为 UI 测试生成自己的 dagger 组件
  2. 我有自己的 Gradle 用于注释处理的模块,它为 dagger 组件提供依赖项。打电话给GeneratedTestCoreComponent。这个类生成正确
  3. GeneratedTestCoreComponent 建于\build\generated\source\kapt\debug\...
  4. GeneratedTestCoreComponent用在匕首组件中,像这样
@Component(modules = [UiTestModule::class],
    dependencies = [GeneratedTestCoreComponent::class])
interface TestUiComponent {}
  1. 我的注释处理器模块已正确添加到 gradle
  implementation project(path: ':processor')
  kapt(name: 'processor')

问题是。在编译期间我得到以下错误

TestUiComponent.java:6: error: cannot find symbol
@com.dagger.Component(modules = {com.xxx.xxx.UiTestModule.class}, dependencies = {GeneratedTestCoreComponent.class})

symbol: class GeneratedTestCoreComponent
TestUiComponent.java:8: error: [ComponentProcessor:MiscError] com.dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
public abstract interface TestUiComponent

附加信息。 当我将 GeneratedTestCoreComponent 类从构建目录复制到 src(保持相同的包)并禁用我的处理器时,一切正常

【问题讨论】:

  • 您是否为此使用范围?
  • 您是否尝试过使用 testImplementation 和 kaptTest 将这些依赖项添加到测试变体中
  • @UserOne 我试过 androidTestImplementationkaptAndroidTest 但没有帮助
  • @StavroXhardha 我使用自己的范围,但我认为这不是问题。正如我在附加信息中提到的,当我将此类复制到 src 目录时它可以工作
  • 你希望你的测试组件不是本地的,所以我在本地单元测试中遇到了类似的问题,这篇文章帮助了我stackoverflow.com/a/45603080/9884320

标签: android gradle dagger-2 auto-generate kapt


【解决方案1】:

尝试将kapt(name: 'processor') 更改为kapt project(':processor')

【讨论】:

  • 不幸的是,它不起作用:/我得到同样的错误
猜你喜欢
  • 2016-07-11
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2015-06-24
相关资源
最近更新 更多