如何设置Buck with Dagger&牛油刀?

时间:2017-09-22 11:22:13

标签: android dagger-2 butterknife buck

Hello我的开发人员,

我正在尝试从Gradle切换到Buck并且因为需要注释处理而无法使用Dagger和Butterknife进行设置。

我找到了一些链接和教程,但它们已经有几年(约4年)了,我认为可能会有更新的做法。

这就是我所看到的: https://github.com/ryan-endacott/android-buck-dagger-starter

提前致谢, 帕特里克

1 个答案:

答案 0 :(得分:2)

Buck支持基于Java的规则(包括android_library)的注释处理。看一下如何在buck存储库中使用Immutables(link到源代码):

  1. 首先,您需要声明库罐:
  2.     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",
            ],
        )
    
    1. 定义注释处理器:
    2.     java_annotation_processor(
              name = "processor",
              isolate_class_loader = True,
              processor_class = "org.immutables.value.internal.$processor$.$Processor",
              visibility = [
                  "PUBLIC",
              ],
              deps = [
                  ":immutables",
              ],
          )
      
      1. 然后,您可以将此注释处理器添加到目标插件列表中:
      2.     java_library(
                name = "target",
                plugins = [
                    "//third-party/java/immutables:processor",
                ],
                deps = [
                    ...
                ],
                ...
            )
        

        降级存储库contains添加此注释处理器的自定义规则(java_immutables_library),以便开发人员不需要在每个目标上指定插件。您可以使用类似的方法。