【问题标题】:Android Dagger not buildingAndroid Dagger 未构建
【发布时间】:2019-05-09 15:08:39
【问题描述】:

我已经将 Dagger 添加到我的应用程序中。现在我在更新 Android Studio 和项目更新到最新的 AndroidX 版本后面临以下错误。

error: [RefersToDaggerCodegen] Don't refer to Dagger's internal or generated code
(see https://errorprone.info/bugpattern/RefersToDaggerCodegen)

如何解决这个构建错误。

编辑: 我正在尝试像下面这样注入匕首

((App) appContext).getApplicationComponent().inject(this);

界面内部

@SuppressWarnings({"RefersToDaggerCodegen"})
@Singleton
@Component(modules = {
    ApplicationModule.class,
    DatabaseModule.class,
    NetworkModule.class,
    QuranDataModule.class,
    QuranPageModule.class } )
public interface ApplicationComponent {
     @SuppressWarnings("RefersToDaggerCodegen")
      void inject(QuranDataProvider quranDataProvider);

编辑 2 我已经像下面这样初始化组件:

 @SuppressWarnings("RefersToDaggerCodegen")
  protected ApplicationComponent initializeInjector() {
    return DaggerApplicationComponent.builder()
        .applicationModule(new ApplicationModule(this))
        .build();
  }

仍然面临同样的问题。

【问题讨论】:

  • 找到你在哪里引用 Dagger 生成的代码,如果它是有意的,然后用 @SuppressWarnings("RefersToDaggerCodegen") 抑制警告?
  • @EpicPandaForce 你能检查我的编辑吗?我也补充说,但仍然面临同样的问题。我做错了什么?
  • 您可能需要将抑制放在实际实例化组件的位置:DaggerApplicationComponent.
  • @EpicPandaForce 你能检查我的编辑 2
  • 也许ErrorProne 在这一点上只是愚蠢,它真的 没有指定文件或警告的行吗?

标签: android dagger


【解决方案1】:

我的项目的问题是我使用的 dagger 旧版本不是太旧但不是最新的。于是我更新了kotlin版本和Dagger版本如下

kotlinVersion = '1.3.31'
daggerVersion = '2.15'

请在您的 gradle-wrapper.properties 中更新分发网址,如下所示

distributionUrl=https\://services.gradle.org/distributions/gradle-5.2-all.zip

最后也更新容易出错的版本

classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.8"

我已完成上述所有步骤。现在我可以成功构建我的应用程序了。

感谢@EpicPandaForce 的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多