【问题标题】:Dagger 2 examples [closed]匕首2示例[关闭]
【发布时间】:2015-01-17 12:28:11
【问题描述】:

Dagger 2 即将推出,但可用的示例甚至无法立即编译,并且文档是 Dagger 1 的复制粘贴替换。

谁有适用于 Google 的 Dagger 2 的正确应用程序示例?

【问题讨论】:

  • 示例在这里编译得很好。您看到了什么错误?
  • 还有一个,但我明天会添加一个具体的例子。作为参考,在 lib 项目中使用 multiDex 但在主应用程序项目中使用它们,最新的 Android Studio,BuildTools 21.1.+
  • 至于依赖,提供了dagger-compile,但是编译了dagger,都是在库项目中。
  • 查看:github.com/JakeWharton/u2020/pull/42 以获得 Dagger 2 的初始版本。

标签: android dagger dagger-2


【解决方案1】:

我刚刚发布了基于 Gradle 的示例应用程序,它集成了 Dagger2、retrolambda、butterknife 和 lombok。你可以在这里找到它:https://github.com/mgrzechocinski/dagger2-example

希望它会有所帮助:)

【讨论】:

  • 不错!请注意 Lombok 和 Multidex 应用程序上的通用注释处理器,众所周知,它们在 Dalvik 中存在重大错误。
  • 如果你能写一篇关于你的演示的博客文章,那就太好了。对于新手来说,很难将大部分实现与google.github.io/dagger的解释联系起来。
  • 感谢您分享的示例。让我走了。比谷歌人分享的样本要好得多。
  • 该示例有许多额外的框架/库,这会使代码更加冗长,并使那些只想拿起匕首 2 的人感到困惑。
  • 有一个单独的 .Activity 和 .Application 是怎么回事?我以前从未见过这种做法。学习可能很重要。
【解决方案2】:

我刚刚将 u2020-mvp 应用程序移植到 Dagger 2。我们将其用作沙盒应用程序。顺便说一句,Dagger 2 有很好的作用域实现。组件真的很重要。 它基于 Christian Gruber 制作的u2021。你也可以检查一下。

希望对你有帮助:)

【讨论】:

  • 为什么您的 build.gradle 文件中有两个存储库{} 部分?
  • @IgorGanapolsky,一个是 apt gradle 插件的 buildscript 存储库,第二个是项目依赖项。它们与根目录不同,因此必须覆盖。
  • 有多个很混乱,违反了 DRY 原则。
  • 确实如此。自己不喜欢。分离存储库的主要原因是当您有多个子项目(例如库、数据层)时。考虑到它们在根文件中的完整存储库列表是多余的。但是,例如最好将它们全部保存在根文件中。当我有时间时会解决这个问题。感谢您的建议!
【解决方案3】:

没有 android 的 CoffeeMaker 示例:https://github.com/yongjhih/dagger2-sample

步骤:

git clone https://github.com/yongjhih/dagger2-sample
cd dagger2-sample
./gradlew execute

【讨论】:

  • 很棒的发现,虽然我从未发现咖啡机示例有启发性。
  • 你应该在某处添加任意注入,没有它的例子是不完整的。
  • 谢谢。样本是从官方github.com/google/dagger/tree/master/examples/simple/src/main/… 导入的。您可以在 Thermosiphon 和 CoffeeMaker 中看到注射。
  • 就个人而言,我发现 Coffe Maker 示例令人困惑。它缺少很多信息,即:在简单的情况下不需要使用模块(当您可以自己提供类对象时,开玩笑地用@Inject注释注释类构造函数)。
【解决方案4】:

如果任何人都在寻找一种简单直接的方法来在 Gradle/Android Studio 上构建 Dagger 2 项目,请查看https://github.com/bytehala/dagger2-gradle-quickstart

commit messages 中,我还列举了将功能齐全的项目转换为 Dagger 2 的步骤。

这个项目的目标受众是任何没有依赖注入经验的人。

没有使用除 Butterknife 之外的其他库。

警告 这个示例项目的目的是简单,而不是完整性。 仅使用了以下功能:

  • @模块
  • @组件
  • @Injects
  • @提供
  • @Singleton

范围、子模块等主题留作练习。

【讨论】:

  • 我建议删除所有 IntelliJ 依赖项,例如 .iml 文件
  • 真的吗?我不知道必须这样做。我认为 AS 给出的 .gitignore 就足够了。哈哈,我保证,我早上会按照你的建议去做。我应该从 git 中删除任何其他文件吗?
  • 其他一切正常。如果您使用通配符 :+ 版本号,.iml 文件和 .idea 文件夹往往具有本地路径以及一些带有 gradle 版本控制的顽皮东西。
猜你喜欢
  • 1970-01-01
  • 2020-10-02
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
相关资源
最近更新 更多