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
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.
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.
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( ... )