annotation_processors的文档(buck)

San*_*thi 5 android buck

与此故障单相关注释处理器的参数已禁用且未记录

我们如何使用annotation_processorsannotation_processor_deps

我在示例Android应用程序中使用realm并且没有注释(对于@RealmClass@RealmMoudule),当通过buck构建时,应用程序崩溃(如果通过gradle构建,则正常工作).

San*_*thi 7

如果有人发现这种情况,使用带有buckbuild的注释处理器的方法是:

  • annotation_processors处理器类的不可变列表.您可以通过META-INF/services/javax.annotation.processing.Processor文件中使用的包名来识别它,例如:Realm Processor
  • annotation_processor_deps是一个不可变的规则列表(通常prebuilt_jar或者android_prebuilt_aar)持有注释处理器

使用Realm Java的项目的示例buck构建文件

prebuilt_jar(
  name = 'realm',
  binary_jar = 'libs/realm-android-0.82.2.jar'
)

android_library(
  name = 'main-lib',
  srcs = glob(['app/src/main/java/com/yourcompany/project/**/*.java']),
  deps = [
    ':supportv4',
    ':all-jars',
    ':build-config',
    ':res',
  ],
  annotation_processors = ['io.realm.processor.RealmProcessor'],
  annotation_processor_deps = [':realm']
)
Run Code Online (Sandbox Code Playgroud)

  • 我们还没有记录它,因为我们正在考虑更改API(可能更像Bazel的java_plugin). (2认同)