1

你好,我的开发人员,

我正在尝试从 Gradle 切换到 Buck,并且在使用 Dagger 和 Butterknife 进行设置时遇到问题,因为它们需要注释处理。

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

这就是我已经看过的内容: https ://github.com/ryan-endacott/android-buck-dagger-starter

在此先感谢,帕特里克

4

1 回答 1

2

android_libraryBuck 支持对基于 Java 的规则(包括)的注解处理。看看 Immutables 在 buck 存储库中是如何使用的(链接到源代码):

  1. 首先,您需要声明库 jar:
    java_library(
        name = "不可变",
        导出的_deps = [
            “:建造者”,
            “:价值”,
        ],
        能见度 = [
            “上市”,
        ],
    )

    prebuilt_jar(
        名称=“价值”,
        binary_jar = "value-2.5.6.jar",
        source_jar = "value-2.5.6-sources.jar",
        许可证 = [
            "复制",
        ],
    )

    prebuilt_jar(
        名称=“建设者”,
        binary_jar = "builder-2.5.6.jar",
        source_jar = "builder-2.5.6-sources.jar",
        许可证 = [
            "复制",
        ],
    )
  1. 定义注释处理器:
    java_annotation_processor(
        名称=“处理器”,
        隔离类加载器=真,
        processor_class = "org.immutables.value.internal.$processor$.$Processor",
        能见度 = [
            “上市”,
        ],
        部门= [
            “:不可变”,
        ],
    )
  1. 然后,您可以将此注释处理器添加到目标的插件列表中:
    java_library(
        名称=“目标”,
        插件 = [
            "//第三方/java/immutables:processor",
        ],
        部门= [
            ...
        ],
        ...
    )

Buck 存储库包含添加此注释处理器的自定义规则 ( java_immutables_library),因此开发人员无需在每个目标上指定插件。您可能可以使用类似的方法。

于 2017-09-24T07:58:58.790 回答