如何在 Bazel 项目中为 d8 设置命令行标志?

How do you set command line flags for d8 in a Bazel project?

例如,如果我想将 --min-api 设置为 26:https://r8.googlesource.com/r8/+/b9cb6ae34047f19320885d9e2c594f81364fa896/src/main/java/com/android/tools/r8/D8CommandParser.java#120

我已经尝试了各种 .bazelrc 组合,并启用了 Bazel 的 -s 标志,以查看使用其标志调用的子命令,但我没有看到任何添加的内容,因为我希望如此:

理想情况下,这将设置在 BUILD 文件中的某处,因此它可以根据目标进行配置。

不幸的是,这似乎不可能。 Bazel 使用 CompatDexBuilder 而我们删除了剩余的 dex 支持代码:

https://github.com/bazelbuild/bazel/blob/d1ff8c2d15454444094f94765d4b57ce0232bb51/tools/android/BUILD.tools#L42

CompatDexBuilder 似乎硬编码了最低 api 级别:

https://r8.googlesource.com/r8/+/41d2ea5adff39b579b297219310199fd566e778b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java#169

H_MR2对应13:

https://r8.googlesource.com/r8/+/60e493f814cb2a37e3b02a30c09023c56b6d1bf9/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java#32

我在这里提交了一个 github 问题:https://github.com/bazelbuild/bazel/issues/10556