Update R8 to 9.1.5-dev

This version of D8/R8 uses shorter minimal names, using a naming convention similar to the one javac uses for anonymous inner classes ($0, $1, ...). Existing D8/R8 builds are updated to use the previous naming scheme, with `$$ExternalSynthetic` markers.

Commits merged (since 9.1.2-dev):
08852644ce Version 9.1.5-dev
18318cc30f Merge commit '048a805162f6d0a4d405187b455b1a7a3c25080b' into dev-release
048a805162 Support for verbose synthetic names in GlobalSyntheticsGenerator CLI
9605a571ce Suppress errorprone warning in same file policy
22b15c7684 Format InternalOptions
15f247933b Relax same file policy for synthetic classes
be94ff4e23 Version 9.1.4-dev
035b95051f Merge commit '0418ebca1a206d3202ac6f7327846de002b67191' into dev-release
0418ebca1a Support for enabling verbose synthetic names in D8 CLI
81ccdd3d7f Add -Pdisable_download_deps property for skipping downloadDeps task
1d307634c0 Introduce "enable_r8_turbo_builds" gradle property
9fea8bb37b Version 9.1.3-dev
8fee7be0b1 Merge commit '6f6301de90ff4cd5a1a08d550bcf350a9bf0ec42' into dev-release
6f6301de90 Account for api outlines in examples tests
c7b6ec68b0 Use jstack from third_party dependencies
6fc71e3937 Add support for releasing main to 9.0 stable branch
67ae3cf5ae Hold reference to Unsafe in a static field in VarHandle desugaring
777b810d99 Add a test that final flag of record fields is not unset
38b686c0e7 Fix missing argument
c51ad7f192 API for enabling verbose synthetic names
8e0fc7296f Enable minimal synthetic names
b5aea02388 Remove @Deprecated method from SyntheticItemsTestUtils
f768907903 Refactor D8 examples tests to be independent of synthetic naming
885ffeecb9 Refactor desugaring and examples tests to not rely on synthetic naming
32dd65c956 Add missing @Override annotations

See https://r8.googlesource.com/r8/+log/08852644ce79fc699a3e0694ef3125509affc455

PiperOrigin-RevId: 839627647
Change-Id: I0491f6d72a1084fc513daac49c3924f84e24a0db
5 files changed
tree: d55eca1ddc6ab024f28d11e6111ceb290b6631fa
  1. .bazelci/
  2. .bcr/
  3. .github/
  4. android/
  5. bzlmod_extensions/
  6. contrib/
  7. examples/
  8. kokoro/
  9. mobile_install/
  10. providers/
  11. py_support/
  12. rules/
  13. src/
  14. stardoc/
  15. test/
  16. third_party/
  17. toolchains/
  18. tools/
  19. .bazelignore
  20. .bazelrc
  21. .bazelversion
  22. .gitignore
  23. android_sdk_supplemental_repository.bzl
  24. AUTHORS
  25. BUILD
  26. CONTRIBUTING.md
  27. CONTRIBUTORS
  28. defs.bzl
  29. defs_dev.bzl
  30. go.mod
  31. go.sum
  32. groups
  33. LICENSE
  34. MODULE.bazel
  35. prereqs.bzl
  36. project.config
  37. README.md
  38. ROADMAP.md
  39. robolectric-bazel.patch
  40. rules_android_maven_install.json
  41. WORKSPACE
  42. WORKSPACE.bzlmod
README.md

Android support in Bazel

Disclaimer

NOTE: This branch is a development preview of the Starlark implementation of Android rules for Bazel. This code is incomplete and may not function as-is.

A recent version of Bazel (7.4+, 8.0+, HEAD, Bazel 9 pre-release) is required.

This ruleset depends on Protobuf, which has a minimum C++ language level of 17 (as of Protobuf v30, ~2025 Q3). Depending on your system‘s compiler version, you may have to set -std=c++17 in your C++ toolchain arguments. This repository’s .bazelrc file provides a minimal set of Bazel configuration flags to build an Android app.

Overview

This repository contains the Starlark implementation of Android rules in Bazel.

The rules are being incrementally converted from their native implementations in the Bazel source tree.

Stardoc for the Android rules can be found at https://bazelbuild.github.io/rules_android.

Getting Started

To use the Starlark Bazel Android rules, add the following to your WORKSPACE file:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_android",
    sha256 = "fe3d8c4955857b44019d83d05a0b15c2a0330a6a0aab990575bb397e9570ff1b",
    strip_prefix = "rules_android-0.6.0-alpha1",
    url = "https://github.com/bazelbuild/rules_android/releases/download/v0.6.0-alpha1/rules_android-v0.6.0-alpha1.tar.gz",
)

# Android rules dependencies
load("@rules_android//:prereqs.bzl", "rules_android_prereqs")
rules_android_prereqs()

##### rules_java setup for rules_android #####
load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
rules_java_dependencies()
# note that the following line is what is minimally required from protobuf for the java rules
# consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl
load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features")  # buildifier: disable=bzl-visibility
proto_bazel_features(name = "proto_bazel_features")
# register toolchains
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")
rules_java_toolchains()

##### rules_jvm_external setup for rules_android #####
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
rules_jvm_external_deps()
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()

##### rules_android setup #####
load("@rules_android//:defs.bzl", "rules_android_workspace")
rules_android_workspace()

# Android SDK setup
load("@rules_android//rules:rules.bzl", "android_sdk_repository")
android_sdk_repository(
    name = "androidsdk",
)

register_toolchains(
    "@rules_android//toolchains/android:android_default_toolchain",
    "@rules_android//toolchains/android_sdk:android_sdk_tools",
)

Or, if you want to use bzlmod, add the following to your MODULE.bazel file:

MODULE.bazel:

bazel_dep(name = "rules_java", version = "7.11.1")
bazel_dep(name = "bazel_skylib", version = "1.3.0")

bazel_dep(name = "rules_android", version = "0.6.5")

remote_android_extensions = use_extension(
    "@rules_android//bzlmod_extensions:android_extensions.bzl",
    "remote_android_tools_extensions")
use_repo(remote_android_extensions, "android_tools")

android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
use_repo(android_sdk_repository_extension, "androidsdk")

register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")

Then, in your BUILD files, import and use the rules:

load("@rules_android//rules:rules.bzl", "android_binary", "android_library")
android_binary(
    ...
)

android_library(
   ...
)