Android 我如何使用Dagger&;黄油刀?

Android 我如何使用Dagger&;黄油刀?,android,dagger-2,butterknife,buck,Android,Dagger 2,Butterknife,Buck,各位开发人员好 我正在尝试从Gradle切换到Buck,但在设置Dagger和Butterknife时遇到问题,因为它们需要注释处理 我找到了一些链接和教程,但它们已经有几(~4)年的历史了,我想可能会有一些更新的方法来做事情 这是我已经看过的: 提前感谢,, PatrickBuck支持基于Java的规则的注释处理(包括android_库)。看看buck存储库中如何使用不可变项(到源代码): 首先,您需要声明库JAR: 爪哇大学图书馆( name=“不可变”, 导出的_deps=[ “:生成器

各位开发人员好

我正在尝试从Gradle切换到Buck,但在设置Dagger和Butterknife时遇到问题,因为它们需要注释处理

我找到了一些链接和教程,但它们已经有几(~4)年的历史了,我想可能会有一些更新的方法来做事情

这是我已经看过的:

提前感谢,,
Patrick

Buck支持基于Java的规则的注释处理(包括
android_库
)。看看buck存储库中如何使用不可变项(到源代码):

  • 首先,您需要声明库JAR:
  • 爪哇大学图书馆( name=“不可变”, 导出的_deps=[ “:生成器”, “:值”, ], 可见性=[ “公众”, ], ) 预制罐( name=“value”, binary_jar=“value-2.5.6.jar”, source_jar=“value-2.5.6-sources.jar”, 许可证=[ “复制”, ], ) 预制罐( name=“builder”, binary_jar=“builder-2.5.6.jar”, source_jar=“builder-2.5.6-sources.jar”, 许可证=[ “复制”, ], )
  • 定义注释处理器:
  • java\u注释\u处理器( name=“处理器”, 隔离类加载程序=真, processor_class=“org.immutables.value.internal.$processor$.$processor”, 可见性=[ “公众”, ], deps=[ “:不可变”, ], )
  • 然后,您可以将此注释处理器添加到目标的插件列表中:
  • 爪哇大学图书馆( name=“target”, 插件=[ “//第三方/java/immutables:处理器”, ], deps=[ ... ], ... )
    Buck repository一个自定义规则(
    java\u immutables\u library
    ),它添加了这个注释处理器,因此开发人员不需要在每个目标上指定插件。你可能也可以使用类似的方法。

    在我掌握了窍门之后,感谢就像一个符咒一样有效。现在我的问题是Buck找不到rx/functions/Func1,尽管我正在添加rxjava和rxandroid的依赖项。关于这个问题,我没有足够的信息,但我猜您的注释过程会使用这些导入生成代码,但是AP处理的库不依赖于rxjava库(或者AP不依赖rxjava)。无论如何,你能在这里或github上发表一篇新文章,提供更多信息吗?我发现我使用的Butterknife版本需要rxjava:)。但我现在有一个不同的问题:我设法添加了Dagger和Butterknife处理器,但我不知道javax.annotation的处理器类是什么。 java_library( name = "immutables", exported_deps = [ ":builder", ":value", ], visibility = [ "PUBLIC", ], ) prebuilt_jar( name = "value", binary_jar = "value-2.5.6.jar", source_jar = "value-2.5.6-sources.jar", licenses = [ "COPYING", ], ) prebuilt_jar( name = "builder", binary_jar = "builder-2.5.6.jar", source_jar = "builder-2.5.6-sources.jar", licenses = [ "COPYING", ], ) java_annotation_processor( name = "processor", isolate_class_loader = True, processor_class = "org.immutables.value.internal.$processor$.$Processor", visibility = [ "PUBLIC", ], deps = [ ":immutables", ], ) java_library( name = "target", plugins = [ "//third-party/java/immutables:processor", ], deps = [ ... ], ... )