)]}'
{
  "log": [
    {
      "commit": "7761eb7fb555aef61a0999a6811ee7d4f8c358f2",
      "tree": "ae239d5677790d716a996586f74aaff9f1c9d772",
      "parents": [
        "aae03e222660102d03542262ba932b97585af751"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Oct 27 10:36:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 27 10:37:03 2026 -0700"
      },
      "message": "Remove unused allowlist files from rules/acls.\n\nPiperOrigin-RevId: 1008210748\nChange-Id: I14f43692952401dbda9f65680d51e60c9c569f53\n"
    },
    {
      "commit": "aae03e222660102d03542262ba932b97585af751",
      "tree": "f571e43b3d5b46da3014e8a28f4823786c572a62",
      "parents": [
        "94bad98e88ef6ded6bd84037436acfd2d8a5165d"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Mon Oct 26 11:25:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 26 11:26:33 2026 -0700"
      },
      "message": "Support a tag-based mechanism to disable aar_import ImportDepsCheck.\n\nPiperOrigin-RevId: 1007418753\nChange-Id: I023d96a928180ce1d0e640802ea18c0c824c92eb\n"
    },
    {
      "commit": "94bad98e88ef6ded6bd84037436acfd2d8a5165d",
      "tree": "14b8ce74f4cd99672bbf58da0423bee6b43dc9a1",
      "parents": [
        "c7218cc3b3ffbf35949fb687652cd43a385672fc"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Mon Oct 26 02:24:26 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 26 02:25:00 2026 -0700"
      },
      "message": "Extract Java classpath resources from aar_import JARs in mobile-install.\n\nPreviously, the mobile-install aspect adapter for `aar_import` collected `MIJavaResourcesInfo` from `deps` and `exports` without calling `extract_jar_resources` on `target[JavaInfo].runtime_output_jars`. As a result, Java classpath resources packaged inside an AAR\u0027s `classes.jar` or `libs/*.jar` were omitted from `split_jresources.apk` during `mobile-install` builds.\n\nExtract Java resources from `target[JavaInfo].runtime_output_jars` in the `aar_import` adapter, matching the `java_import` and `java_library` adapters.\n\nPiperOrigin-RevId: 1007119969\nChange-Id: I265ff3421d7b249590a51de46757487edc456421\n"
    },
    {
      "commit": "c7218cc3b3ffbf35949fb687652cd43a385672fc",
      "tree": "c6c899590bc8d0786b4521d90982951e4ba7e2cc",
      "parents": [
        "2ae7b1f580e8d5e8b9ae68c0b4e170323b85d54d"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Oct 23 15:39:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 15:40:08 2026 -0700"
      },
      "message": "Remove obsolete allowlist checks and the unused dex2oat_compilation_filter attribute.\n\nPiperOrigin-RevId: 1005917474\nChange-Id: Ib786d60a629f69b63a61b308984cbeca7c5c9f01\n"
    },
    {
      "commit": "2ae7b1f580e8d5e8b9ae68c0b4e170323b85d54d",
      "tree": "ab03f28f947b45433a287e75149aec01d3fbb7c7",
      "parents": [
        "61fe76e8fcb6ed856eb35952faf521dca8922564"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Oct 23 12:19:25 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 12:20:04 2026 -0700"
      },
      "message": "Remove unused rollout allowlist files from rules/acls.\n\nPiperOrigin-RevId: 1005776280\nChange-Id: I7e771a444cc7872212a8efcd3529af47affa2b70\n"
    },
    {
      "commit": "61fe76e8fcb6ed856eb35952faf521dca8922564",
      "tree": "27add92129fa5248d1543ef3f026b6ae1df238c7",
      "parents": [
        "ad4aed305710c583c4bf2a5b77b39153fa5c09a2"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Oct 23 11:51:08 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 11:51:49 2026 -0700"
      },
      "message": "`adb.Controller.Exec` previously concatenated command arguments with spaces without shell quoting before passing the command string to `adb shell`. When launching an Android activity or `\u003cactivity-alias\u003e` whose component name contains `$` (such as `com.example/.app.honeycomb.Shell$HomeActivity`), the device shell (`/system/bin/sh`) expands `$HomeActivity` as an unset environment variable before `am start` receives the component name. As a result, ActivityManager receives a truncated component name (`com.example/.app.honeycomb.Shell`), fails to resolve the activity, and the app never starts.\n\nSingle-quote each argument in `Controller.Exec` (escaping any embedded single quotes) so both explicit `--launch_activity` components and default launcher components resolved via `resolveLauncherActivity` are passed verbatim to the device shell.\n\nPiperOrigin-RevId: 1005756088\nChange-Id: Ia4d432affcf79b32c5f9ec39099805b3293a680f\n"
    },
    {
      "commit": "ad4aed305710c583c4bf2a5b77b39153fa5c09a2",
      "tree": "dc45baa416af58b3d81f09a1f145f1c138482e4e",
      "parents": [
        "8a4e1831b0a46def10e10ccfdaf387badb18e719"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Oct 22 16:42:05 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 16:42:46 2026 -0700"
      },
      "message": "Launch the app\u0027s launcher activity explicitly in mobile-install.\n\nWithout `--launch_activity`, `am start \u003cpackage\u003e` only matches activities that\nalso declare CATEGORY_DEFAULT, so it almost always fell back to Monkey, which\nprinted a misleading warning and enabled auto-rotate.\n\nNow resolve the launcher activity with `cmd package resolve-activity` and start\nit by component name. Monkey remains the fallback when there is no unique\nlauncher activity.\n\nPiperOrigin-RevId: 1005148112\nChange-Id: Ic7f91ada81be017a7edd507fe735b8870e66d9d5\n"
    },
    {
      "commit": "8a4e1831b0a46def10e10ccfdaf387badb18e719",
      "tree": "3acd4bac01c061dc8b2c5912a8fbc1e887747d15",
      "parents": [
        "f20b886092ad9d9033b20a9bec33e9a1eca6d1b3",
        "5d7d446fc783be07a60f2c558c8c6af95996f85a"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Oct 22 13:17:32 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 22 13:17:32 2026 -0700"
      },
      "message": "Merge \"Delete android_sdk_supplemental_repository\" into main"
    },
    {
      "commit": "f20b886092ad9d9033b20a9bec33e9a1eca6d1b3",
      "tree": "a7846de43ce323d5702e8534a9d7dcb34adeb0eb",
      "parents": [
        "35e5b7cf02a18424fc995cc65f7462688ecea6b9"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Oct 22 13:04:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 13:04:53 2026 -0700"
      },
      "message": "Remove unused rollout allowlist files from rules/acls.\n\nPiperOrigin-RevId: 1004994681\nChange-Id: Ib5ea6a3d48b848e1df16b61de4da9b2cf7754a30\n"
    },
    {
      "commit": "5d7d446fc783be07a60f2c558c8c6af95996f85a",
      "tree": "51db7bcb1d68ee4a0c2fc50d6025330b04827b44",
      "parents": [
        "35e5b7cf02a18424fc995cc65f7462688ecea6b9"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Mon Jun 22 13:24:31 2026 -0700"
      },
      "committer": {
        "name": "Ted Xie",
        "email": "tedx@google.com",
        "time": "Thu Oct 22 16:01:19 2026 -0400"
      },
      "message": "Delete android_sdk_supplemental_repository\n\nThis looks unused and according to the docstring was only necessary\nuntil the real rule was in starlark\n\nChange-Id: Ib303751657f9cd5dd8a179b39dbc045ce35c72dc\n"
    },
    {
      "commit": "35e5b7cf02a18424fc995cc65f7462688ecea6b9",
      "tree": "6733256dcdfbdcbf2261ee7ed4cdcb68f78ce648",
      "parents": [
        "f2d6e571ed9f8cdf3ae0d4901f436324563d01a2"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Oct 22 11:02:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 11:02:52 2026 -0700"
      },
      "message": "Speed up the Desugar action for large classpaths.\n\nDesugar actions for big binaries pass tens of thousands of classpath jars.\nMost of the non-R8 time went into handling those jars:\n\n* Parse --classpath_entry/--bootclasspath_entry directly instead of through\n  JCommander, whose parsing cost grows with args * options^2. This handles the\n  forms of these flags that JCommander accepted (\"--flag\" \"v\", \"--flag\u003dv\",\n  \"--flag v\" as a single argument, and comma separated lists), which\n  DesugarOptionsTest checks against JCommander. If any of these flags still\n  reach JCommander (e.g. from an @file that is not the only argument), parsing\n  fails instead of dropping them.\n* Don\u0027t keep every classpath jar open (LazyArchiveClassFileProvider): index\n  each jar with an ArchiveClassFileProvider that is closed right away, and read\n  classes through a plain ZipFile that is opened when the first class is read\n  from a jar. This avoids keeping ~64k zip files open, and building a second\n  descriptor set for each jar a class is read from. A tiny input with ~64k\n  classpath jars reads from ~2.9k of them, almost all from a single D8 thread,\n  so this is on the critical path. The zip files are closed when D8 signals\n  finished(), which OrderedClassFileResourceProvider now forwards to its\n  classpath providers.\n* Keep the per-jar index as a list. D8 never asks a classpath provider for its\n  full descriptor set, so no set is built while desugaring, and\n  OrderedClassFileResourceProvider and isPlatform iterate the lists.\n* Build OrderedClassFileResourceProvider\u0027s map in the background. D8 does\n  some work before it first looks up a classpath class. The bootclasspath\n  descriptors are still collected up front, as D8 uses those providers\n  concurrently and they are not thread-safe.\n* Don\u0027t check that every classpath entry exists while parsing flags. A missing\n  jar now fails with a NoSuchFileException when it is opened instead of a\n  \"not a valid path\" ParameterException.\n* Only build the per-shard classpath provider when the input is sharded.\n  With a single shard it re-indexed the whole classpath and added an empty\n  provider for the input. A hidden --number_of_entries_per_shard flag lets\n  DesugarBasicTest check that desugaring two inputs with many shards gives\n  the same output as without sharding.\n* OutputConsumer: the dependency metadata only needs a full ASM visit of\n  companion classes and classes that call into one. For other classes, check\n  the constant pool for a companion class reference and otherwise just record\n  the extended interfaces from the class header. This avoided decoding every\n  member of every class, e.g. of R classes.\n\nPiperOrigin-RevId: 1004904378\nChange-Id: Iddcf768824f8e789cab59afe8695d9e980baf817\n"
    },
    {
      "commit": "f2d6e571ed9f8cdf3ae0d4901f436324563d01a2",
      "tree": "91d3956deb7c5a6f4abac22974ab9e67f6237ef3",
      "parents": [
        "17f27d43cd6b495915821bacb04e13abe5f7132f"
      ],
      "author": {
        "name": "Ben Lee",
        "email": "ben@ben.cm",
        "time": "Thu Oct 22 09:11:38 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 09:12:33 2026 -0700"
      },
      "message": "Merge #562 by Bencodes: Extract android_local_test coverage runtime processor\n\nCustom android_local_test implementations currently mix coverage runtime selection with JVM compilation. Extract that selection into a replaceable `CoverageProcessor`, so custom rules can supply runner dependencies, entry classes, JVM flags, and agent runfiles while reusing the existing JVM and stub processors. Default JaCoCo behavior and the existing `jvm_ctx` fields are preserved.\n\nAdd four analysis tests for default JaCoCo and a custom agent, with coverage enabled and disabled. Register them in the Android local-test BUILD file.\n\nValidation:\n- All four tests in `//test/rules/android_local_test:coverage_tests` pass.\n- `//test/rules/android_local_test:bzl` builds; Buildifier formatting/lint and `git diff --check` pass.\n- The existing default-launcher test has a JDK runfile-path mismatch that also reproduces on unmodified upstream.\n\nThis configures the coverage runtime only; compiler instrumentation and coverage report generation remain separate. The custom-agent tests inspect analysis outputs rather than running a coverage engine.\n\nRelated: https://github.com/bazel-contrib/rules_kotlin/pull/1729\n\nCloses #562\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/562 from Bencodes:extract-android_local_test-coverage-runtime-processor d55252c71e6071f0a1dc3710034e5219a5a79589\nPiperOrigin-RevId: 1004823487\nChange-Id: Id63b9d0eae9a9f3a34f213d032b76baa42b9cbf5\n"
    },
    {
      "commit": "17f27d43cd6b495915821bacb04e13abe5f7132f",
      "tree": "0df873b64ac4634e52493fc2c6cb2ec0e74fe9ad",
      "parents": [
        "085db156b81cd32a356d05288152f1a632398c30"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Wed Oct 21 20:06:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 20:07:44 2026 -0700"
      },
      "message": "Merge #569 by keith: Add bazel_compatibility to MODULE.bazel\n\nUsing flag_alias means these other versions aren\u0027t supported,\nunfortunately there\u0027s not a better way to express this\n\nCloses #569\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/569 from keith:ks/add-bazel_compatibility-to-module.bazel a6cfd99092ceb46d1a42e0ed50588e0ab3cd6c1c\nPiperOrigin-RevId: 1004431387\nChange-Id: I7914877d8bbc8694ab335362e06f1c76ba07f8cf\n"
    },
    {
      "commit": "085db156b81cd32a356d05288152f1a632398c30",
      "tree": "96c9ba4390921d0c164c36231c703be296062405",
      "parents": [
        "307093b582ed5fcac744237506b385f0518ec131"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Oct 21 13:09:06 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 13:09:52 2026 -0700"
      },
      "message": "Support multiple test classes via test_classes in android_instrumentation_test and android_library/application_test.\n\nThere are two main intents here:\n1. make android_instrumentation_test and friends consistent with the recent java_test test_classes support\n2. Migrate users from the expensive AndroidClasspathTestSuite\n\nThis commit addresses this by\n- Adding an explicit test_classes list attribute to android_instrumentation_test\n- Add capability in android_library|application_test to derive multiple test classes when multiple srcs are provided, via new infer_test_classes_from_srcs test_macros\n- Discourage use of AndroidClasspathTestSuite in the docs\n\nPiperOrigin-RevId: 1004172963\nChange-Id: Ie8234ae0f7b8578606173f9ebb19f3d1ebd04fef\n"
    },
    {
      "commit": "307093b582ed5fcac744237506b385f0518ec131",
      "tree": "e6ce0611af49071e78f1336126511e983b7c3874",
      "parents": [
        "6136a98566aec60e3e87b40fa64e44389057c046"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Tue Oct 20 13:24:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 13:25:57 2026 -0700"
      },
      "message": "Merge #574 by fmeum: Load helper.bzl from rules_android instead of symlinking it\n\nThe `BUILD` file generated by `android_sdk_repository` loaded `:helper.bzl` through a symlink to the file in `rules_android`. Since `@androidsdk` is generated by `rules_android`\u0027s own extension, `@rules_android` resolves in it, so the template now loads the helper from its original location (as `helper.bzl` already assumes for its own loads). The generated repo is otherwise unchanged: with a real SDK, `bazel query @androidsdk//:all` returns the same 230 targets before and after.\n\nCreating a symlink to a file in another repo requires that repo to be present on disk. With `--experimental_remote_repo_contents_cache`, `rules_android` is otherwise only kept in memory, so the symlink forces Bazel to download all of its ~1,000 files before `@androidsdk` can be fetched. Since `@androidsdk//:all` is registered as toolchains, every build waits for it during toolchain resolution: in Bazel\u0027s own CI with the cache enabled (bazelbuild/bazel#31755), this single `symlink` call took a median of 1 s per job on Linux and 2.5 s on Windows. The remaining `repo_ctx.template` call with a label stops downloading the repo with bazelbuild/bazel#31493.\n\nCloses #574\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/574 from fmeum:android-sdk-load-helper-by-label 675dfcd25930f37b2d8d9f3d29028a55039e3580\nPiperOrigin-RevId: 1003348330\nChange-Id: Ia9aa49d55667f9542fa3fd505f2faf0db5fce131\n"
    },
    {
      "commit": "6136a98566aec60e3e87b40fa64e44389057c046",
      "tree": "d41f37230e3653979d9178ee2f41f2239b2096b2",
      "parents": [
        "5ca278c42ac9eaa0fe661cb813acd2f4790a54d6"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Sat Oct 17 06:21:06 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Oct 17 06:22:07 2026 -0700"
      },
      "message": "Relax `srcjar` and `exports` attribute restrictions on `aar_import`.\n\n- Allow `.jar` files in `aar_import.srcjar` (`allow_single_file \u003d [\".srcjar\", \".jar\"]`) in addition to `.srcjar` and `-sources.jar`.\n- Allow any `JavaInfo` provider in `aar_import.exports` (`providers \u003d [JavaInfo]`), matching `deps`.\n\nPiperOrigin-RevId: 1001450558\nChange-Id: I2c8bedda7dc1a5e41202d0f8a6b8ad1df39db315\n"
    },
    {
      "commit": "5ca278c42ac9eaa0fe661cb813acd2f4790a54d6",
      "tree": "ba446cd457a14750860d7775c1b42661c50a81b8",
      "parents": [
        "4bffdf575c99931bbafdb9e41531fd6d2dfe4ec9"
      ],
      "author": {
        "name": "Ted",
        "email": "tedxie01@gmail.com",
        "time": "Fri Oct 16 11:10:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 11:12:09 2026 -0700"
      },
      "message": "Merge #572 by ted-xie: Pin Maven repositories with lockfiles in MODULE.bazel\n\nBazel 10 (last_green) upgraded its embedded JDK to OpenJDK 27, which removed the deprecated -noverify JVM flag that rules_jvm_external 6.9 passes when invoking Coursier in unpinned coursier_fetch.\n\nPinning rules_android_maven, android_ide_common_30_1_3, and bazel_worker_maven with lockfiles uses pinned_coursier_fetch instead of invoking Coursier at fetch time, fixing Bazel 10 builds while keeping rules_jvm_external at 6.9.\n\nCloses #572 Fixes #485. Fixes #571.\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/572 from ted-xie:pin-maven-lockfiles eb181013f7621e00cdf09ce041b07ae9d86b1c31\nPiperOrigin-RevId: 1000973906\nChange-Id: Id3ecda64daa1b3bb24e32779e3abf261ed3e0bb7\n"
    },
    {
      "commit": "4bffdf575c99931bbafdb9e41531fd6d2dfe4ec9",
      "tree": "52f1b500a14c1d486ce625e0ac84272078611cb9",
      "parents": [
        "e66ea08c09f005dc20130c4d74c6bc60d421fcc0"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Oct 15 08:48:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 08:49:29 2026 -0700"
      },
      "message": "Delete unused shared_library_resource_linking_allowlist acl files.\n\nThis feature is now fully available.\n\nPiperOrigin-RevId: 1000166991\nChange-Id: Ic3a82aa017442bf2e5a984df9d2fc44c34c5506b\n"
    },
    {
      "commit": "e66ea08c09f005dc20130c4d74c6bc60d421fcc0",
      "tree": "9c06aa0093254cddf80ee72fa002c2a307a7bf78",
      "parents": [
        "2b5895ef18bd49d95d4524e7b485d86081b2f805"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Wed Oct 14 16:23:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 16:24:23 2026 -0700"
      },
      "message": "Enable path mapping for additional ResourceProcessorBusyBox actions.\n\nPath mapping is enabled for the following actions (`LinkAndroidResources` already had it):\n\n* `StarlarkMergeCompiledAndroidResources`\n* `MergeManifests`\n* `StarlarkRClassGenerator`\n* `ResourceShrinker`\n* `ResourceConverter`\n* `Aapt2Optimize`\n\nPiperOrigin-RevId: 999698821\nChange-Id: Iae09c39a660bd0033277d581f061633568ee9762\n"
    },
    {
      "commit": "2b5895ef18bd49d95d4524e7b485d86081b2f805",
      "tree": "0897a562b8bd6bc09378988ceab42515440557ef",
      "parents": [
        "6f8a1fa83bcef96c7f80440fac6ec4c5a572271d"
      ],
      "author": {
        "name": "Erik Ackermann",
        "email": "erik.ackermann@proton.ch",
        "time": "Thu Oct 08 09:23:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 08 09:23:44 2026 -0700"
      },
      "message": "Merge #565 by erikackermann: Return ProguardMappingInfo from the Starlark R8 path\n\n## Summary\n\nThe Starlark R8 processor writes a proguard mapping file via `--pg-map-output`, but `process_r8` never returned `ProguardMappingInfo`. `android_application` reads that provider from `base_module` to embed the mapping in AAB `BUNDLE-METADATA` for Play Console deobfuscation, so AAB builds using the R8 path shipped without the mapping.\n\nReturn `ProguardMappingInfo(proguard_mapping \u003d proguard_mappings_output_file)` from the R8 providers list, matching the legacy postprocessing path in `android_binary/impl.bzl`.\n\n## Test plan\n\n- [ ] Build an `android_application` target with R8 enabled and confirm `ProguardMappingInfo` is present on the base module\n- [ ] Confirm the mapping is embedded in the unsigned AAB under `BUNDLE-METADATA/com.android.tools.build.obfuscation/proguard.map`\nCloses #565\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/565 from erikackermann:return-proguard-mapping-info-from-r8 fcbfe0bcb0215e262af2942d41abe6cae6e4e616\nPiperOrigin-RevId: 995884135\nChange-Id: Ie6d1a5900b55ed9b9c4aadaebb593494156a6d72\n"
    },
    {
      "commit": "6f8a1fa83bcef96c7f80440fac6ec4c5a572271d",
      "tree": "8cc5235774d22e4761cc7c6344ae13a9db40e22e",
      "parents": [
        "3e62dc525ea778daa49f8daf6c2d05c2a11f9a29"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Oct 08 04:40:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 08 04:41:58 2026 -0700"
      },
      "message": "Add Starlark flags attribute to remaining Android rules and test rules.\n\nWhen `--incompatible_remove_ctx_android_fragment` is enabled, `ctx.fragments.android` is no longer available and `read_possibly_native_flag` reads Android flags exclusively from `ctx.attr._wrapped_flags`. Add `_attrs.FLAGS_ATTRS` to `ANDROID_APPLICATION_ATTRS` and `android_archive`\u0027s `ATTRS`, and add `_wrapped_flags` to the resource and dex test rules that invoke `read_possibly_native_flag` so they succeed without the native `android` configuration fragment.\n\nPiperOrigin-RevId: 995749866\nChange-Id: Ib7dcbf28cf2e9fb7ca7403d21804e06979d8f174\n"
    },
    {
      "commit": "3e62dc525ea778daa49f8daf6c2d05c2a11f9a29",
      "tree": "a461a13a0e83e8be71cb8833120e970003c780bd",
      "parents": [
        "e67db33c3bc09d3f5f0a92d381dc6eab06a35f0b"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Tue Oct 06 17:47:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 06 17:49:22 2026 -0700"
      },
      "message": "Remove acl for shared resource linking.\n\nThis is generally available now, and no riskier than any other neverlinking (which is also generally available).\n\nPiperOrigin-RevId: 994739150\nChange-Id: Idc14980232323c27228545747d7e79bb25daf739\n"
    },
    {
      "commit": "e67db33c3bc09d3f5f0a92d381dc6eab06a35f0b",
      "tree": "7039b68ed55f707aad76148c2566bd25a2997e36",
      "parents": [
        "e7207a9ecc340c41cdd44478ad22e6d67cdf5af7"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Fri Oct 02 15:46:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 02 15:47:34 2026 -0700"
      },
      "message": "Speed up RClassGeneratorAction (StarlarkRClassGenerator) for large apps.\n\nApplies various performance optimizations.\n\nPiperOrigin-RevId: 992580832\nChange-Id: Ic6e393c7460efaf67d48328340e7ea76bf62e786\n"
    },
    {
      "commit": "e7207a9ecc340c41cdd44478ad22e6d67cdf5af7",
      "tree": "4363f2fec12a6d3afac1224e6419b6b760253b02",
      "parents": [
        "33545b22ceb99c195ca69c1b055dc3fd64fe6e57"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Tue Sep 29 15:04:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 29 15:05:56 2026 -0700"
      },
      "message": "Fetch dexbuilder and desugar from the toolchain in dex_desugar_aspect\n\nPiperOrigin-RevId: 990554413\nChange-Id: I4f1e2544e56fde6dc0183018a9ded52c700295d8\n"
    },
    {
      "commit": "33545b22ceb99c195ca69c1b055dc3fd64fe6e57",
      "tree": "5e078be34a24e682ac22de09a60d87fbd36a961f",
      "parents": [
        "b15ea1915ae3cf3c68171e38aaaceffcb205af54"
      ],
      "author": {
        "name": "Ted",
        "email": "tedxie01@gmail.com",
        "time": "Tue Sep 29 14:37:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 29 14:38:41 2026 -0700"
      },
      "message": "Merge #567 by ted-xie: Update presubmit.yml\n\n* Combine multiple tasks (tool tests, rule tests) into one task\n* Stop using ubuntu 20.04\nCloses #567\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/567 from ted-xie:update-presubmit-yml 9cd53ea3fbbbfaffb2195aefb822655a7aa40405\nPiperOrigin-RevId: 990538247\nChange-Id: Ief78d5ef3970d34a319524974cd44ad738c7cf35\n"
    },
    {
      "commit": "b15ea1915ae3cf3c68171e38aaaceffcb205af54",
      "tree": "13565f37efa7255606b324ec90ae514a91a1becd",
      "parents": [
        "ad7a9ba06ebf47707ae4ada6b0808c14c6b631a9"
      ],
      "author": {
        "name": "Ben Lee",
        "email": "ben@ben.cm",
        "time": "Tue Sep 29 13:32:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 29 13:34:56 2026 -0700"
      },
      "message": "Fix the tools compilation and Windows desugared-library launcher failures seen on main in Buildkite #4838 and on dependent PRs in #4839.\n\n* Include ZipEntryComparatorTest.java in the dexer test library and declare the serializer test\u0027s direct aapt2 protobuf dependency.\n* Resolve .exe launchers for D8, R8, and TraceReferences, following the existing desugar wrapper\u0027s fallback. Add a manifest-only regression test for both extensionless and .exe tools.\n\nValidation: bazel test //src/tools/javatests/... //test/tools/android:build_java8_legacy_dex_test passes all 38 test targets locally on macOS with Bazel 9.0.0rc3. The launcher regression test reproduces the original line 115: : command not found failure against the unchanged script. BUILD formatting and shell syntax checks pass. Native Windows execution remains for CI.\n\nCloses #563.\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/563 from Bencodes:fix-tools-tests-and-windows-legacy-dex-launcher-resolution f6f563bf62c83594e2ea2e52290c1bfef066ad39\nPiperOrigin-RevId: 990497690\nChange-Id: I217dec5aee04f936f62c8d8499e3e3621af6fd78\n"
    },
    {
      "commit": "ad7a9ba06ebf47707ae4ada6b0808c14c6b631a9",
      "tree": "eb0fe0ef68a5f36b716a00326af6ff98d120e2b2",
      "parents": [
        "95657e4923ee55e28e1e6dcb6e121b45b64ae15d"
      ],
      "author": {
        "name": "Alex Humesky",
        "email": "ahumesky@google.com",
        "time": "Tue Sep 29 08:54:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 29 08:55:48 2026 -0700"
      },
      "message": "Use placeholders in progress_message throughout the Android rules to save analysis time memory.\n\nPiperOrigin-RevId: 990336210\nChange-Id: I45ba8e2e06afe1ce4dc440974eb5a808ac7faf7b\n"
    },
    {
      "commit": "95657e4923ee55e28e1e6dcb6e121b45b64ae15d",
      "tree": "2530a5adaa8597e591fbf18c90bee62cb37f2339",
      "parents": [
        "70d43277a69910f15360b1cec7a433d203646219"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Mon Sep 28 15:04:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Sep 28 15:05:24 2026 -0700"
      },
      "message": "Use the target\u0027s compilation bootclasspath when desugaring in mobile-install.\n\nThe mobile-install aspect previously always desugared against the hardcoded\nandroid.jar from its `_android_sdk` attr. This change moves the bootclasspath\nlogic from dex_desugar_aspect.bzl into rules/desugar.bzl as\n`desugar.get_boot_classpath`, and both aspects now use it:\n\n  1. Use `JavaInfo.compilation_info.boot_classpath` if the target has one.\n  2. Otherwise, fall back to the android.jar from the Android SDK toolchain.\n\nPiperOrigin-RevId: 989866205\nChange-Id: I7756c185c2b04fce0e3daa3e7462cfd452521d2c\n"
    },
    {
      "commit": "70d43277a69910f15360b1cec7a433d203646219",
      "tree": "c9f2f11d59b7e437b4d18192a03485c789fbc425",
      "parents": [
        "cd8cbc16aa96ec3d2961bf0a482e90b9dbab373e"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Sep 24 16:22:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 24 16:24:33 2026 -0700"
      },
      "message": "Include output path in StarlarkRClassGenerator progress message\n\nPiperOrigin-RevId: 987833615\nChange-Id: Ia027fdf1ad83d756e608667b3fb61e806309894e\n"
    },
    {
      "commit": "cd8cbc16aa96ec3d2961bf0a482e90b9dbab373e",
      "tree": "8fce3bb53e07c68d02bd1ce4d4e834c4f2675e2c",
      "parents": [
        "5d34b1ba4ec1032e5e1a9fbe20fa0fe24ddaf2f3"
      ],
      "author": {
        "name": "Ted Xie",
        "email": "tedx@google.com",
        "time": "Wed Sep 23 21:31:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 23 21:33:49 2026 -0700"
      },
      "message": "Remove mnc000 assertion.\n\nPiperOrigin-RevId: 987216747\nChange-Id: I4782cafde88ddb59493227e0321e9fab630a6ab6\n"
    },
    {
      "commit": "5d34b1ba4ec1032e5e1a9fbe20fa0fe24ddaf2f3",
      "tree": "908c75297ac53626ef0d5bf7e5087403eb1a9662",
      "parents": [
        "2474d194b05f64c4b1a8cb68e867d6333dcefae0"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Sep 23 14:39:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 23 14:40:30 2026 -0700"
      },
      "message": "Pass --deduplicate-entry-values in busybox aapt2 optimize\nWhen collapsing resource names, AAPT2 recommends passing\n--deduplicate-entry-values to deduplicate pairs of resource entry and value\nfor simple resources. This allows storing the same resource value only\nonce in the resource table, reducing APK size.\n\nPiperOrigin-RevId: 987013797\nChange-Id: I71dfca85e55bbf7b93fa9769b5f0c20a0322f4a4\n"
    },
    {
      "commit": "2474d194b05f64c4b1a8cb68e867d6333dcefae0",
      "tree": "065ba4ae7b0a7703e7672508068f8dcb50ec6806",
      "parents": [
        "7f84dab1b906d862ecd5f525a2e0bfbba40c376e"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Sep 23 12:17:06 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 23 12:18:02 2026 -0700"
      },
      "message": "Add flag aliases for Starlark-defined Android flags to MODULE.bazel.\n\nPiperOrigin-RevId: 986921476\nChange-Id: I33a2c8136ae4780723c5a0e44922e6a59eb51e56\n"
    },
    {
      "commit": "7f84dab1b906d862ecd5f525a2e0bfbba40c376e",
      "tree": "11301a8510b097b75d5332991a030936aa21a31b",
      "parents": [
        "b1237ce5aa9842cd01e3bf356355670b95d2b154"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Fri Sep 18 17:05:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 18 17:06:29 2026 -0700"
      },
      "message": "Add the SDK annotations jar to the classpath of AOSP-generated AIDL sources.\n\nThe AOSP AIDL compiler stamps `@android.annotation.Hide` onto the Java sources it generates, and that annotation is not part of `android.jar`. Add an `aidl_annotations_lib` dependency to `android_library` and include it in `idl_deps` when `idl_uses_aosp_compiler` is set, so that the generated sources compile.\n\nPiperOrigin-RevId: 984143625\nChange-Id: I8def45d999afd6267c703cd1bf67d5d8a2e2fbf7\n"
    },
    {
      "commit": "b1237ce5aa9842cd01e3bf356355670b95d2b154",
      "tree": "44fc1b2911acc95ce3697a26835db7818aeab283",
      "parents": [
        "7bd7cbbafef77b09fca66d9b1e4374d36588dd31"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Sep 17 11:53:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 17 11:54:29 2026 -0700"
      },
      "message": "Move proguard_config_output from the FINAL to the INITIAL optimization action in rules_android/rules/proguard.bzl.\n\nPiperOrigin-RevId: 983331159\nChange-Id: I4ee1f93f1b9cfaa6a15283074b1a2bf08038cc5b\n"
    },
    {
      "commit": "7bd7cbbafef77b09fca66d9b1e4374d36588dd31",
      "tree": "9e39f9a8f8b5449cf743cedd3f5a63e96d6e896b",
      "parents": [
        "5a0260aa809f3d855d0195e94539e9955fb2628f"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Sep 15 09:36:08 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 15 09:36:58 2026 -0700"
      },
      "message": "Enable supports-path-mapping for LinkAndroidResources in busybox.bzl.\n\nPiperOrigin-RevId: 981873733\nChange-Id: I6e781ff8da2204a8f09c6a36183af2d3367e588f\n"
    },
    {
      "commit": "5a0260aa809f3d855d0195e94539e9955fb2628f",
      "tree": "dfd7808a6c2dc1fc6a95597a4db20727d7381c23",
      "parents": [
        "a4587b561402f9b454185c482c361ba299c84cab"
      ],
      "author": {
        "name": "Michael Hoisie",
        "email": "hoisie@google.com",
        "time": "Tue Sep 15 08:57:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 15 08:58:41 2026 -0700"
      },
      "message": "Stop writing unused symbols.bin in Aapt2ResourcePackagingAction\n\nThe AAPT2 packaging action previously declared and wrote an out_symbols\nfile (merged.bin) that was never actually read or packaged anywhere.\nThis change stops generating the file entirely and removes the dead\nstarlark parameters and java code that mapped to it. out_symbols was used\nduring the AAPT1 era.\n\nPiperOrigin-RevId: 981855694\nChange-Id: Ia996d82a2aba0dd2eb407659070eb90eca889615\n"
    },
    {
      "commit": "a4587b561402f9b454185c482c361ba299c84cab",
      "tree": "00275a647e67f704b45d2ee274909e2d5df7f55c",
      "parents": [
        "26f90cfc233406b2804c3d27ef7cc652fccbcc73"
      ],
      "author": {
        "name": "Michael Hoisie",
        "email": "hoisie@google.com",
        "time": "Mon Sep 14 10:21:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Sep 14 10:23:32 2026 -0700"
      },
      "message": "Skip private resource validation if there are no visibility dependencies\n\nIf there are no visibility dependencies, the private resource validation can\nbe skipped entirely. This avoids extract resources references from the\nmanifest and the primary compiled resources.\n\nPiperOrigin-RevId: 981222208\nChange-Id: I72205afc94d679d1fd314bef1523f3efeb9a74b6\n"
    },
    {
      "commit": "26f90cfc233406b2804c3d27ef7cc652fccbcc73",
      "tree": "1cbb145a4fade8f21fd1e9aeacf719e50ee4d732",
      "parents": [
        "218bce44043911f2068e96b394f64fc1a86819a7"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Sep 10 14:01:22 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 14:02:07 2026 -0700"
      },
      "message": "Automated rollback of commit 5b028d1c3567f12103699ba0f953e416e624a7a9.\n\nPiperOrigin-RevId: 979383765\nChange-Id: I2d9201d0fafb3b8df387561aa45aff7668dd0b6a\n"
    },
    {
      "commit": "218bce44043911f2068e96b394f64fc1a86819a7",
      "tree": "f462525c568ba4bababb075db1a8b44ae419802c",
      "parents": [
        "9142b70bea92ac51ce925c910747bf5cd226908a"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Sep 08 09:54:05 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 08 09:55:00 2026 -0700"
      },
      "message": "Automate HWASan support for android_binary and android_library_test.\n\nPiperOrigin-RevId: 977967764\nChange-Id: I89387ea3b8f86bb96c8e4d26d6eb21cfbb504465\n"
    },
    {
      "commit": "9142b70bea92ac51ce925c910747bf5cd226908a",
      "tree": "c5f3623b05a466f4e30d02e573dc2422f5cc3781",
      "parents": [
        "7ab656d755bb287c1fce05238109480f342b0d1c"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Sep 08 09:36:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 08 09:37:24 2026 -0700"
      },
      "message": "Optimize ShardForMultidex action by removing string allocation and weak interner overhead.\n\nPiperOrigin-RevId: 977958218\nChange-Id: Ie5366c6ce61acc14c106a3b16ad415d93dff911a\n"
    },
    {
      "commit": "7ab656d755bb287c1fce05238109480f342b0d1c",
      "tree": "17baec5359875c822a3c5d2ea2e4a746daee65e2",
      "parents": [
        "b81ec5e94b6c7e25a81972c152d431f436cdbfed"
      ],
      "author": {
        "name": "Michael Hoisie",
        "email": "hoisie@google.com",
        "time": "Fri Sep 04 09:44:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 04 09:45:44 2026 -0700"
      },
      "message": "Add support for empty dependency lists in private resource validation\n\nPreviously, in the private resource validation, there was no differentiation\nbetween an empty list (no private resources) and null (private resource flag\nommitted) in the input, so the optimization was not run on a target with zero\nprivate resource dependencies. Add logic to differentiate between an empty list\nand null, mainly using `omit_if_empty \u003d False` in the bzl.\n\nAlso, enable private resource validation optimization for android_application\n\nPiperOrigin-RevId: 976362556\nChange-Id: I39df29c8f7f307d623f499dbdf6f5fa37e4ddb15\n"
    },
    {
      "commit": "b81ec5e94b6c7e25a81972c152d431f436cdbfed",
      "tree": "f56383c27601c1013c8f263ca474c115f4471824",
      "parents": [
        "c852c28c0fd257693a4c5dd8b590707c7f6fc7ca"
      ],
      "author": {
        "name": "Chris Woodward",
        "email": "chriswoodward@google.com",
        "time": "Thu Sep 03 18:07:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 18:08:34 2026 -0700"
      },
      "message": "Document the R8 Configuration Analyzer feature\nhttps://github.com/bazelbuild/rules_android/issues/542\n\nPiperOrigin-RevId: 976023807\nChange-Id: Ia6cddfb927df32ba476a68995a16ff71862fcec3\n"
    },
    {
      "commit": "c852c28c0fd257693a4c5dd8b590707c7f6fc7ca",
      "tree": "4180261fbb235cef3aa4048a2e055cc674a5dc3f",
      "parents": [
        "3e76eae160f7c0c0e2f205696ffc56082c3ea585"
      ],
      "author": {
        "name": "Chris Woodward",
        "email": "chriswoodward@google.com",
        "time": "Thu Sep 03 17:26:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 17:27:22 2026 -0700"
      },
      "message": "Implement R8\u0027s config analyzer as an output group option.\n\nhttps://github.com/bazelbuild/rules_android/issues/542\n\nPiperOrigin-RevId: 976008760\nChange-Id: Ifaea5ec11e444492d69f325d7b3d025529a7a112\n"
    },
    {
      "commit": "3e76eae160f7c0c0e2f205696ffc56082c3ea585",
      "tree": "35d2db1f7aee0c60259f177f75a645fa795e22b6",
      "parents": [
        "adad84f7b0431bbdbcd53f27eda71a14e666b56a"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Sep 03 09:40:15 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 09:41:12 2026 -0700"
      },
      "message": "Optimize PackageAndroidResources action latency:\n- Cache configuration qualifiers in AndroidCompiledDataDeserializer and fast-path default configurations, eliminating expensive redundant FolderConfiguration allocations and stream mappings.\n- Pre-compute source pool normalized directory arrays and replace stream pipelines in findImpliedPrivateResources with indexed lookups.\n- Hoist ResourceName and visibility lookups outside ConfigValue loops in consumeResourceTable.\n- Parse Android manifests concurrently in ResourceLinker.extractPackages.\n\nPiperOrigin-RevId: 975774813\nChange-Id: I3401a87061761e69cb5d14a56e761b0a680b4763\n"
    },
    {
      "commit": "adad84f7b0431bbdbcd53f27eda71a14e666b56a",
      "tree": "245f0c762d27d6a3b4c3776efe653b48a1821a10",
      "parents": [
        "1d4cc589c9bdd11ae383ff81a13ac11fad41fe1e"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Sep 03 09:38:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 09:39:45 2026 -0700"
      },
      "message": "Optimize Desugar action startup, option normalization, and classpath archive processing.\n\nPiperOrigin-RevId: 975774224\nChange-Id: If52c4f6bb77913a0c93d4efa59a61e7141fb7426\n"
    },
    {
      "commit": "1d4cc589c9bdd11ae383ff81a13ac11fad41fe1e",
      "tree": "2cb76de9e2ce3bc9c7988c2312bdf378988fa9f5",
      "parents": [
        "f10fc2f4f2959238ae2674897ff8a915a3381b62"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Sep 02 17:02:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 17:02:56 2026 -0700"
      },
      "message": "* `rules/proguard.bzl`: Pass `-whykeepingfile` to the AppReduce `FINAL` optimizer action.\n* `rules/android_binary/impl.bzl`: Declare `_proguard.why_keeping` file artifact.\n* `rules_android/test/rules/android_binary/BUILD`: Update golden test implicit output assertions.\n\nPiperOrigin-RevId: 975406738\nChange-Id: Idb5cfb473311f5e703b27d627ec648dd52785785\n"
    },
    {
      "commit": "f10fc2f4f2959238ae2674897ff8a915a3381b62",
      "tree": "d12be735cc2484dd46307625d984f26179c8b644",
      "parents": [
        "43973b5a1995883401681d50b8faa3b5a510d9ce"
      ],
      "author": {
        "name": "Ted",
        "email": "tedxie01@gmail.com",
        "time": "Wed Sep 02 11:54:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 11:54:42 2026 -0700"
      },
      "message": "Merge #551 by ted-xie: Follow-up implicit output test for #547\n\n#547 modified the R8 rule\u0027s implicit outputs. This change adds an analysis test to verify that change.\nCloses #551\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/551 from ted-xie:r8-implicit-output-unit-test fea296054d7d38d3ea3d26d2116bdf8f47f7e966\nPiperOrigin-RevId: 975249246\nChange-Id: I85c93afb5ddebd0b81f1f613c10a52a38de70bb4\n"
    },
    {
      "commit": "43973b5a1995883401681d50b8faa3b5a510d9ce",
      "tree": "46eee9e75a3a38b3b628f2ad1cd118ff9ffd3f1f",
      "parents": [
        "566486f39b6cbc0d699ce2e20ae1a7dc350f0e34"
      ],
      "author": {
        "name": "Abdullah",
        "email": "89297042+AzazelSensei@users.noreply.github.com",
        "time": "Wed Sep 02 11:51:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 11:52:38 2026 -0700"
      },
      "message": "Merge #559 by AzazelSensei: docs: refresh getting started for rules_android 0.7.3 #351\n\nThe getting started snippet still pinned WORKSPACE to 0.6.0-alpha1 (yanked on BCR) and bzlmod to 0.6.5. I updated both to 0.7.3, put bzlmod first, and pointed at examples/basicapp.\n\nFixes #351\n\nCloses #559\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/559 from AzazelSensei:docs/update-getting-started-351 4f82137cdd4f459f66db375f74fafde829535991\nPiperOrigin-RevId: 975248073\nChange-Id: I35c66d50d4c9ee2ff598d61e8553e478824c5941\n"
    },
    {
      "commit": "566486f39b6cbc0d699ce2e20ae1a7dc350f0e34",
      "tree": "8f21b4d333100fa46a89b7c8f4e860d5c11d7bff",
      "parents": [
        "c5e7957de0e4a577858ece3201643e31a616c57b"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Sep 01 17:59:05 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 17:59:49 2026 -0700"
      },
      "message": "Optimize DexLimitTracker with strong string interning for faster Multidex sharding.\n\nPiperOrigin-RevId: 974808907\nChange-Id: Iedb642b5afd9ecab1abd34b8e641553d89a441b6\n"
    },
    {
      "commit": "c5e7957de0e4a577858ece3201643e31a616c57b",
      "tree": "ae4215529d6d6506c7b82d0eb3c3e37c48e05886",
      "parents": [
        "efafedf64bd0086f7fb599eea6e002bc84b1edf7"
      ],
      "author": {
        "name": "Ted",
        "email": "tedxie01@gmail.com",
        "time": "Tue Sep 01 14:26:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 14:27:20 2026 -0700"
      },
      "message": "Merge #556 by ted-xie: Update java extras jar\n\nThe old include_prefixes list for the extras jar was copied from Bazel, which copied it from an uptstream project years ago. The list is now outdated and does not work for newer JDK versions.\n\nThis change copies the list from a Google-internal upstream project.\n\nThis obviates #555.\n\nChange-Id: Idab4efdb2e6c97acd504d79c4bd800be6acc86d7\nCloses #556\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/556 from ted-xie:update-java-extras-jar ed344b1d86ab37394b7cfcf26f83d4c0f301b825\nPiperOrigin-RevId: 974707380\n"
    },
    {
      "commit": "efafedf64bd0086f7fb599eea6e002bc84b1edf7",
      "tree": "cb820220180c603352f76983a860b280395ffe26",
      "parents": [
        "66c3393d8333b0a726fe393b6b07fe06f419675e"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Aug 28 14:01:06 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 14:01:55 2026 -0700"
      },
      "message": "Migrate --android_resource_shrinking, --experimental_android_resource_cycle_shrinking, --experimental_android_compress_java_resources\n\nDelete android_manifest_merger references\n\n#FLAG_CHANGE\n\nPiperOrigin-RevId: 972777320\nChange-Id: I9bbbd5da407875e23e3162eb666b11919cccbc99\n"
    },
    {
      "commit": "66c3393d8333b0a726fe393b6b07fe06f419675e",
      "tree": "b2a2d6744584601e73bda4aae7eea6520c26bcc8",
      "parents": [
        "20982ef7090cea9d60825078c9404c2caa14a59a"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Thu Aug 27 17:09:15 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 17:09:59 2026 -0700"
      },
      "message": "Enable path mapping for dexing, desugaring, and bytecode transformation actions.\n\nThe main change is adding the new execution requirement. There are two sets of other changes.\n1. In dex_desugar_aspect.bzl switch from using `jar.path` to `jar.short_path` when declaring the bytecode transformer output file. Using `path` includes configuration information which breaks when the path is rewritten as part of path mapping. This change looks safe as every other use in the same file uses `jar.short_path` anyway.\n2. Update the android_bytecode_transormer call to skip using the script template with a string format. Using the string format requires embedding the paths into the script. Those paths are invalid under path mapping. Path mapping only works when Files are passed via args.add() methods. Additionally skip explicitly creating the flag file and let Blaze handle it with args.use_param_file().\n\nI\u0027m not enabling path mapping for the dex actions triggered in `android_binary` itself. These actions are more complicated to migrate due to a few factors like param file usage and the tree artifact/spawn action template setup.\n\nI changed the progress_message for DesugarDexSharding in mobile-install since the full path including the configuration isn\u0027t very useful for understanding build progress.\n\nPiperOrigin-RevId: 972235479\nChange-Id: I958fe4e45819a2aef94f18dd8dab392482977b0a\n"
    },
    {
      "commit": "20982ef7090cea9d60825078c9404c2caa14a59a",
      "tree": "67e5058b72017852c3453971d812b000525ef740",
      "parents": [
        "0975c06f049260274737304d24fa3f91d82e2d40"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Aug 27 16:38:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 16:39:23 2026 -0700"
      },
      "message": "Delete deprecated `fused` attribute.\n\nThis defaults to True, and any attempt to set it is a failure. Anyone who wants fusing behavior changed should configure this by passing a feature manifest (which is a requirement for most android_feature_modules).\n\nPiperOrigin-RevId: 972222221\nChange-Id: I5d585f5a95b84b30564dbde200bd07fb204fd44b\n"
    },
    {
      "commit": "0975c06f049260274737304d24fa3f91d82e2d40",
      "tree": "f33f56d4d63be2c34f56a6bc01a24d096e0d0a54",
      "parents": [
        "a53f9a3c2971bb3d56c8c6a1332f1563d9fd0204"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Thu Aug 27 09:35:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 09:37:14 2026 -0700"
      },
      "message": "Merge #537 by keith: Return repo/extension metadata from rules\n\nThis allows the remote repo contents cache to cache the result of this\nrepo\n\nCloses #537\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/537 from keith:ks/return-repo-extension-metadata-from-rules a514acb3f06a11cb8183f249ff516249227f54ae\nPiperOrigin-RevId: 971999361\nChange-Id: I443f368773beda9f3c8bc5c174de9c7ae3364b93\n"
    },
    {
      "commit": "a53f9a3c2971bb3d56c8c6a1332f1563d9fd0204",
      "tree": "498df8d7245d5e20eed6cfa3656ad5815e224c0d",
      "parents": [
        "cacab85169d79e8e0132d9bd286a43ce3cdd9a93"
      ],
      "author": {
        "name": "oscarthecat",
        "email": "oscar.gong@gmail.com",
        "time": "Wed Aug 26 16:13:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 16:15:14 2026 -0700"
      },
      "message": "Merge #548 by oscarthecat: Prevent DexFileSplitter from dropping colliding class names\n\n## Problem\n\n`DexFileSplitter` stores input entries in a `TreeMap` using `ZipEntryComparator::compareClassNames`, then inserts them with `putIfAbsent`. The comparator replaces `$` with `0` before comparing names.\n\nWhen generated nested class names include entries such as `Foo$2$1$1.class.dex` and `Foo$2$101.class.dex`, both normalize to the same value. The comparator therefore returns zero, the `TreeMap` treats the distinct classes as the same key, and `putIfAbsent` silently drops one. The resulting APK can fail at runtime with `NoClassDefFoundError` for the missing class.\n\n## Change\n\nKeep the existing dx-style normalized ordering. When two normalized names compare equal, fall back to comparing the original names so distinct entries remain distinct. No ordering changes for names whose normalized forms differ.\n\nAdd regression coverage that inserts the colliding names into the same `TreeMap` shape used by `DexFileSplitter` and verifies that both remain present.\n\n## Testing\n\n- Passed a self-contained `javac` regression check against the modified `ZipEntryComparator`.\n- Added the collision case to `DexFileSplitterTest`.\n- Attempted `bazel test //src/tools/javatests/com/google/devtools/build/android/dexer:AllTests --test_output\u003derrors`; repository analysis could not complete locally because connections to `maven.google.com` timed out before compilation or test execution.\nCloses #548\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/548 from oscarthecat:fix/dex-splitter-class-name-collision 140e6c0c407250c09d6fc931c70a0360c1b1c3e5\nPiperOrigin-RevId: 971560232\nChange-Id: Iba7facbdb7e7c4d784560bb0b359132d5c7c552f\n"
    },
    {
      "commit": "cacab85169d79e8e0132d9bd286a43ce3cdd9a93",
      "tree": "5e5a29c353cac9fa4dd608b29d9fab1455c9f0f9",
      "parents": [
        "5a6fda1212f04606b30e1fac6a459d128d140658"
      ],
      "author": {
        "name": "Ted Xie",
        "email": "tedx@google.com",
        "time": "Wed Aug 26 14:08:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 14:10:08 2026 -0700"
      },
      "message": "Clarify necessity for file path normalization\n\nPiperOrigin-RevId: 971491679\nChange-Id: I26c9eecc53904abbe457c10473b4cafb8331f229\n"
    },
    {
      "commit": "5a6fda1212f04606b30e1fac6a459d128d140658",
      "tree": "1875ac1a25a4596cc1175b2bd7c938e456d4dbe7",
      "parents": [
        "4ec5d11afec7f8453aca2fef97399e3001698d90"
      ],
      "author": {
        "name": "Vadym Savchenko",
        "email": "95760458+vadymsavchenko-lyft@users.noreply.github.com",
        "time": "Tue Aug 25 13:48:12 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 13:49:00 2026 -0700"
      },
      "message": "Merge #547 by vadymsavchenko-lyft: Declaring proguard_mappings_output_file as implicit_outputs\n\n[Isssue](https://github.com/bazelbuild/rules_android/issues/546)\nCloses #547\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/547 from vadymsavchenko-lyft:r8-proguard-map-default-output 744ce6dbcd5f21e32a13c559ebfa1ae5a36b2eac\nPiperOrigin-RevId: 970769691\nChange-Id: If62478c0db8915bc7bc5d60d7aaf8ccf4d32876c\n"
    },
    {
      "commit": "4ec5d11afec7f8453aca2fef97399e3001698d90",
      "tree": "f44214708588b8c2f3efd29ad00353eb53951115",
      "parents": [
        "f2f470c040c04f5264c29d6f9ea8d9f04e3b631f"
      ],
      "author": {
        "name": "Scott Myers",
        "email": "semyers@google.com",
        "time": "Tue Aug 25 04:50:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 04:51:22 2026 -0700"
      },
      "message": "Update proguard-android-optimize.txt link in r8-optimization.md\n\nUpdates the URL for the proguard-android-optimize.txt file to point to the rules_android repository instead of the bazelbuild examples repository.\n\nPiperOrigin-RevId: 970473584\nChange-Id: Ia24d96411a1e64b133c7cd57f38ef82169af44a4\n"
    },
    {
      "commit": "f2f470c040c04f5264c29d6f9ea8d9f04e3b631f",
      "tree": "66164dbf964af0037be00a50f7ea3aa87e810f19",
      "parents": [
        "d1a5870a0e9f246ff09746760ef3d040d858bae9"
      ],
      "author": {
        "name": "Scott Myers",
        "email": "semyers@google.com",
        "time": "Mon Aug 24 17:03:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 17:04:43 2026 -0700"
      },
      "message": "Add an R8-optimized example app\n\nThis change adds a new example project under examples/r8-optimized to demonstrate building an Android application with R8 optimization and resource shrinking enabled. The example includes both android_binary and android_application targets, along with their corresponding ProGuard configuration files.\n\nPiperOrigin-RevId: 970172709\nChange-Id: I916a6de5e2600b3891d3bd271d2619b2db4f7ba7\n"
    },
    {
      "commit": "d1a5870a0e9f246ff09746760ef3d040d858bae9",
      "tree": "1c0df8ee1b30bdbcea852b82c36cec948a6d3b33",
      "parents": [
        "8b5afbbdf4d1743057be477fe90c96f10418d63e"
      ],
      "author": {
        "name": "Scott Myers",
        "email": "semyers@google.com",
        "time": "Fri Aug 21 14:05:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 14:06:28 2026 -0700"
      },
      "message": "Add R8 optimization docs page\n\nAdds instructions to guide users on how to configure R8 optimization in their BUILD file using the android_binary target. It explains the proguard_specs, shrink_resources, and proguard_generate_mapping attributes, and provides instructions for building the optimized APK.\n\nPiperOrigin-RevId: 968680246\nChange-Id: If03ab0473b63814467a52457d0151f9321b0e986\n"
    },
    {
      "commit": "8b5afbbdf4d1743057be477fe90c96f10418d63e",
      "tree": "cc834c2b815db169fa551d0d22cd23205fe3e416",
      "parents": [
        "9e6e5bf94d14b2f480473decd52eb9a5e8baa09b"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Aug 21 11:06:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 11:07:51 2026 -0700"
      },
      "message": "Add main_class attribute to android_local_test.\n\nThis is currently a no-op in bazel, as its restricted to the existing\ncom.google.testing.junit.runner.GoogleTestRunner\n\nPiperOrigin-RevId: 968590656\nChange-Id: I8d61a0b89d830e985dc591fcddb4a03b8fa7db8c\n"
    },
    {
      "commit": "9e6e5bf94d14b2f480473decd52eb9a5e8baa09b",
      "tree": "eba06f22162a913e49ed46e2df13d305c9dc5e99",
      "parents": [
        "dabbc2815588ec43bb980dbb8e7f1c89896344de"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Aug 19 10:26:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 10:27:32 2026 -0700"
      },
      "message": "Default output_jar_creator to bazel in apk_packaging.bzl.\n\nIn CL 959227250, output_jar_creator was defaulted to \"bazel\" in\nrules/java.bzl:singlejar, and removed from rules/android_binary/impl.bzl.\nHowever, rules/apk_packaging.bzl still defaulted output_jar_creator \u003d \"\"\nin _process() and output_jar_creator \u003d None in _build_apk(), and forwarded\nthe argument to java.singlejar().\n\nBecause rules/java.bzl checks `if output_jar_creator:`, passing \"\" or None\ncaused the \"bazel\" default to be bypassed for base module packaging,\nproducing \"Created-By: singlejar\" (48 bytes). Feature modules, which call\njava.singlejar() directly, picked up \"Created-By: bazel\" (44 bytes),\ntriggering Bundletool EntryClashValidator InvalidBundleException.\n\nDefaulting output_jar_creator \u003d \"bazel\" in both _process() and _build_apk()\nensures consistent 44-byte MANIFEST.MF headers across all module splits.\n\nPiperOrigin-RevId: 967283865\nChange-Id: I3bfe26031f086a23cd2912bc07e2452604668952\n"
    },
    {
      "commit": "dabbc2815588ec43bb980dbb8e7f1c89896344de",
      "tree": "2e1651283712b130c91790e919d6fbc8c38cc2e9",
      "parents": [
        "5b028d1c3567f12103699ba0f953e416e624a7a9"
      ],
      "author": {
        "name": "Chris Woodward",
        "email": "chriswoodward@google.com",
        "time": "Wed Aug 12 12:04:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 12 12:05:17 2026 -0700"
      },
      "message": "Upgrade R8 to 9.3.16 in rules_android.\n\nPiperOrigin-RevId: 963585067\nChange-Id: I9569bb4007e347eeff9ef266ebf7880e0068ddb0\n"
    },
    {
      "commit": "5b028d1c3567f12103699ba0f953e416e624a7a9",
      "tree": "481f78e2805884916a63139f6f30a817ba339744",
      "parents": [
        "a1ff2bed183ab57e89de88dfca094ff3d6f280fc"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Aug 06 11:03:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 06 11:03:54 2026 -0700"
      },
      "message": "Automated rollback of commit 77997dfc2d6d2c66f3d7ea2ad1de0d3f72f2b41b.\n\nPiperOrigin-RevId: 960399120\nChange-Id: Ib240b4681f199b09f094a7c35ecca73779fbba6f\n"
    },
    {
      "commit": "a1ff2bed183ab57e89de88dfca094ff3d6f280fc",
      "tree": "6eea34736823f9b2f66f7639427df57c04251e43",
      "parents": [
        "77997dfc2d6d2c66f3d7ea2ad1de0d3f72f2b41b"
      ],
      "author": {
        "name": "Michael Hoisie",
        "email": "hoisie@google.com",
        "time": "Wed Aug 05 23:04:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 23:05:23 2026 -0700"
      },
      "message": "Pass `-Othroughput` for android_binary targets built without `-opt`\n\nThe new `-Othroughput` aapt2 option uses faster level 1 zlib compression\ninstead of level 9. This is faster when building transient android binaries\nfor instrumentation tests or for local development.\n\nPiperOrigin-RevId: 960082841\nChange-Id: I0a6ebe1f0aafba19fe1062833ac741369ee0615a\n"
    },
    {
      "commit": "77997dfc2d6d2c66f3d7ea2ad1de0d3f72f2b41b",
      "tree": "e9eddccf14267b46ad8dffc3b32d611b7c6131f6",
      "parents": [
        "c8fc029560e63e3b805f8f109ee149c823e044b8"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Aug 05 15:18:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 15:19:12 2026 -0700"
      },
      "message": "Switch to using Starlark flags.\n\nPiperOrigin-RevId: 959897613\nChange-Id: I030dfb375ed4d3c8fcc84da4d25be22b7acb43bb\n"
    },
    {
      "commit": "c8fc029560e63e3b805f8f109ee149c823e044b8",
      "tree": "1aaf98105108ba9a581f078d2941a9b4b20b911f",
      "parents": [
        "7b64dfec306cfa101a0469ac7c55a4cec3e200b3"
      ],
      "author": {
        "name": "Ted Xie",
        "email": "tedx@google.com",
        "time": "Wed Aug 05 11:29:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 11:30:02 2026 -0700"
      },
      "message": "Prepare for v0.8.0\n\nStarting from version 0.8.0, rules_android will start (incrementally) supporting Starlark-equivalent flags to former Bazel-native Android flags.\n\nPiperOrigin-RevId: 959773334\nChange-Id: If670a8d234e38510b048e901d1bc1326f92abdd4\n"
    },
    {
      "commit": "7b64dfec306cfa101a0469ac7c55a4cec3e200b3",
      "tree": "145672613b113dcdb1bf5cfb784dfe46f2396141",
      "parents": [
        "5b511525cf4194c36019f56f7e028bd0a1d2e15a"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Wed Aug 05 10:25:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 10:25:34 2026 -0700"
      },
      "message": "Remove unused dexopts to save Blaze/Bazel heap.\n\nThe main impactful change is removing `--no-optimize` from _DEXOPTS_SUPPORTED_IN_INCREMENTAL_DEXING. This list is used by the dex_desugar_aspect. A set of dexing actions is created for each combination of dexopts. In `android_binary` we just pull the outputs from the actions with the set of dexopts matching the value passed to the dexopts attribute of the `android_binary` target. So we create many sets of actions that are never executed. This is a waste of Blaze heap. The `--no-optimize` flag is completely ignored CompatDexBuilder which is the wrapper we use around D8 to trigger dexing. This means removing the no-op dexopt cuts the number of dexing actions generated by the dex_desugar_aspect in half with no functional impact.\n\nPiperOrigin-RevId: 959735674\nChange-Id: I0d2db2102b1826c366c51f7466d927219f46e54a\n"
    },
    {
      "commit": "5b511525cf4194c36019f56f7e028bd0a1d2e15a",
      "tree": "b4da5905470845323339099163477507c78b54bb",
      "parents": [
        "dd3d9ecb50088659fa48cd4912389216842dbb18"
      ],
      "author": {
        "name": "Adrian Boziloff",
        "email": "boziloff@google.com",
        "time": "Tue Aug 04 14:48:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 04 14:48:56 2026 -0700"
      },
      "message": "Skip aapt2 optimize during linking when optimize_throughput is enabled\n\naapt2 optimize aims to reduce APK size by 1-3%, an unnecessary step for test builds where file size is not a priority. Thus, we can extend optimize_throughput to skip aapt2 optimize, supporting the flag\u0027s functionality of trading file size optimizations for faster execution.\n\nPiperOrigin-RevId: 959242802\nChange-Id: Ifa4141ea48839a40a519f2507adf8151bc9045f0\n"
    },
    {
      "commit": "dd3d9ecb50088659fa48cd4912389216842dbb18",
      "tree": "eccc4d90141445fe143d313d78739d8aae673d54",
      "parents": [
        "b73ce4172b3508c23345dda2d86fa360bc46216d"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Aug 04 14:19:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 04 14:20:19 2026 -0700"
      },
      "message": "Default output_jar_creator to bazel.\n\nThis ensures identical MANIFEST.MF headers across module splits and avoids\nBundletool entry clashes.\n\nPiperOrigin-RevId: 959227250\nChange-Id: I26806b4141e7d60a41ffd40fa6587f2153e20010\n"
    },
    {
      "commit": "b73ce4172b3508c23345dda2d86fa360bc46216d",
      "tree": "4c38c753dbeb722cbb91fc54f5980e1842316207",
      "parents": [
        "0bd9b590fbc856b22abc7da1e17c914488889221"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Mon Aug 03 16:58:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 03 16:59:29 2026 -0700"
      },
      "message": "Internal change\n\nPiperOrigin-RevId: 958652570\nChange-Id: Iee21e1f551c649eeac55f961d03685453019b252\n"
    },
    {
      "commit": "0bd9b590fbc856b22abc7da1e17c914488889221",
      "tree": "ae6240834da53452173b3977eee8e780ea8d74b9",
      "parents": [
        "ba2de4d71a724cb4734920b4532f0ddaad5d00c5"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Wed Jul 29 17:36:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 29 17:37:14 2026 -0700"
      },
      "message": "Remove reference to compiler flag that is unused in the Android Split Transition\n\nPiperOrigin-RevId: 956178450\nChange-Id: I44921fae4ffd73a45a0c2028d06d319a91073fd1\n"
    },
    {
      "commit": "ba2de4d71a724cb4734920b4532f0ddaad5d00c5",
      "tree": "aea432001f9016911cb1a65465eb2a84d5ea49ed",
      "parents": [
        "71c053c203ea875f069092b989d4704ddecb5caf"
      ],
      "author": {
        "name": "Michael Hoisie",
        "email": "hoisie@google.com",
        "time": "Wed Jul 29 12:29:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 29 12:29:33 2026 -0700"
      },
      "message": "Remove temporary StarlarkAndroidResourcesInfo constructor\n\nNow that a Android rules release has occurred, this can be removed.\n\nPiperOrigin-RevId: 956027858\nChange-Id: I19325b214822e3f1e3854a5ade8a1eb358a7ec08\n"
    },
    {
      "commit": "71c053c203ea875f069092b989d4704ddecb5caf",
      "tree": "18a37c8671efb3dcb76d4567a290f8e8cc75efcb",
      "parents": [
        "9aa11ea11ed66cd7dd76a2bd1dd791d6750bfdc3"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Jul 28 12:10:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 28 12:11:17 2026 -0700"
      },
      "message": "Use native flag value for optimizing_dexer.\n\nThis can\u0027t be toggled to starlark yet.\n\nPiperOrigin-RevId: 955395853\nChange-Id: I9d9b771dfaba9ba8fa2c17ab4e2af07d7f0d1822\n"
    },
    {
      "commit": "9aa11ea11ed66cd7dd76a2bd1dd791d6750bfdc3",
      "tree": "f702d6d60ac8fb6ac04de059d78d2406ec0a9d7f",
      "parents": [
        "b09873ce4a36067693e78d98ea62ca4a029e6d34"
      ],
      "author": {
        "name": "Ted",
        "email": "tedxie01@gmail.com",
        "time": "Mon Jul 27 16:36:22 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jul 27 16:36:45 2026 -0700"
      },
      "message": "Merge #540 by ted-xie: Fix bazelCI\n\n* Plumb resource processor manifest_merger_order flag properly in presubmit.yml\n* Fix integration test\n* Add minimal rpbb.properties file to make rpbb integration tests pass\nCloses #540\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_android/pull/540 from ted-xie:fix_bazelci2 ef18a60b4c3248fe8ea2ad22ec5cb613a058a89e\nPiperOrigin-RevId: 954896889\nChange-Id: I39a1d758572f5c177346dfc2d8ce817cb5f3ebdc\n"
    },
    {
      "commit": "b09873ce4a36067693e78d98ea62ca4a029e6d34",
      "tree": "3e087c85f94a7f259bfea3a2ece072ce5d585911",
      "parents": [
        "dccaa36d59ee5187471adb45436c35bb8e074432"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Mon Jul 27 10:47:23 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jul 27 10:47:47 2026 -0700"
      },
      "message": "Migrate --optimizing_dexer and delete  _legacy_main_dex_list_generator\nThis change is NOOP\n\nPiperOrigin-RevId: 954713631\nChange-Id: I03e3953160858ee33680bc9366b9c8cfcfe4006a\n"
    },
    {
      "commit": "dccaa36d59ee5187471adb45436c35bb8e074432",
      "tree": "ac6b64e8b51c5443011d7f1a0382bb98bea92c00",
      "parents": [
        "14425a3f86c75eedd63030834f13850836b86145"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Sat Jul 25 20:46:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Jul 25 20:46:46 2026 -0700"
      },
      "message": "migrate apk_signing_method\n\n#FLAG_CHANGE\n\nPiperOrigin-RevId: 954036916\nChange-Id: Ib8b3c209b7f23c679f4e8ba59adcdaea396f8412\n"
    },
    {
      "commit": "14425a3f86c75eedd63030834f13850836b86145",
      "tree": "7a2f8a9f5910c12ddbf652f88c1d7122662e585f",
      "parents": [
        "6854c2da1fd2ba87d90f5c54fa15dd3a7af38c03"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Fri Jul 24 14:30:08 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 24 14:30:33 2026 -0700"
      },
      "message": "Don\u0027t set Android Configuration Distinguisher in the split transition\n\nThe effect of this change is that \"android\" will no longer be in build output paths.\n\nPiperOrigin-RevId: 953557867\nChange-Id: I8e0b01c359928f902af63451a927785e4aa8ff29\n"
    },
    {
      "commit": "6854c2da1fd2ba87d90f5c54fa15dd3a7af38c03",
      "tree": "749aaa77c68d775163cfd73badd3ac575c15957a",
      "parents": [
        "97dee89abe33a078ffc5cb113f0d8b4873cd6d3a"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Jul 23 13:45:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 23 13:45:59 2026 -0700"
      },
      "message": "create shared configs for void flags expansion of\n--persistent_android_resource_processor\n--persistent_multiplex_android_resource_processor\n--persistent_android_dex_desugar\n--persistent_multiplex_android_dex_desugar\n--persistent_multiplex_android_tools\n\nPiperOrigin-RevId: 952934111\nChange-Id: I44359f5593078325b055650ca48b674bd150aee0\n"
    },
    {
      "commit": "97dee89abe33a078ffc5cb113f0d8b4873cd6d3a",
      "tree": "8ae2b6f1ff74df520502a2185ce739ba277e664e",
      "parents": [
        "16f80ef48081d85a988601496c1d43a08b843f7a"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Thu Jul 23 12:36:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 23 12:36:30 2026 -0700"
      },
      "message": "Migrate\n--desugar_for_android\n--experimental_android_library_exports_manifest_default\n--experimental_android_resource_shrinking\n--experimental_get_android_java_resources_from_optimized_jar\n--android_manifest_merger\n--experimental_android_resource_cycle_shrinking\n\nPiperOrigin-RevId: 952899537\nChange-Id: Icc035d739150f4954c54f477219ce90a1e8e0613\n"
    },
    {
      "commit": "16f80ef48081d85a988601496c1d43a08b843f7a",
      "tree": "0e6f6c3e31b9e834a860b63fd1fe80457ca49e40",
      "parents": [
        "88ea173168697ccb51ab5d5c34c180a886e48cf2"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Jul 23 11:37:40 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 23 11:38:11 2026 -0700"
      },
      "message": "Increase minSdkVersion to 24\n\nPiperOrigin-RevId: 952871995\nChange-Id: I6b0681018e56ad455fa32026affce30103ae2ad5\n"
    },
    {
      "commit": "88ea173168697ccb51ab5d5c34c180a886e48cf2",
      "tree": "9ff5c3dcacd2961eafb0452d0c0434dc3a43275a",
      "parents": [
        "505be874c899cd88f5cee828261453cdf9ced79d"
      ],
      "author": {
        "name": "Adrian Boziloff",
        "email": "boziloff@google.com",
        "time": "Wed Jul 22 14:31:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 22 14:32:16 2026 -0700"
      },
      "message": "Update resource visibility validation to only analyze dependencies with private resources\n\nThis change introduces a new field to StarlarkAndroidResourcesInfo, transitive_compiled_resources_with_public_xml, which gathers compiled resources only from transitive dependencies that include a public.xml file. This reduces the number of symbols.zip files that need to be loaded and analyzed during the resource validation phase, vastly improving build performance.\n\nValidateAndLinkResourcesAction and Aapt2ResourcePackagingAction are updated to use this new set of dependencies passed via the --compiledDepWithPublicXml flag when performing resource reference visibility checks. If this flag is provided, only symbols from these dependencies are loaded for visibility checks. Otherwise, it defaults to checking against all transitive dependencies.\n\nPiperOrigin-RevId: 952334790\nChange-Id: I5a5e2e0d7f4fd135414f88e7c0ef6d240c468c06\n"
    },
    {
      "commit": "505be874c899cd88f5cee828261453cdf9ced79d",
      "tree": "c6100921c536f7590b9a16beff6a1a181e4e1bf5",
      "parents": [
        "57ad9e4898b726c3938c5173a3f3f9adef9384dc"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Wed Jul 22 06:43:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 22 06:44:00 2026 -0700"
      },
      "message": "Migrate android flags\n\n--experimental_incremental_dexing_after_proguard\n--dexopts_supported_in_dexsharder\n--android_fixed_resource_neverlinking\n--android_resource_shrinking\n--experimental_android_resource_path_shortening\n--experimental_android_resource_name_obfuscation\n\n#FLAG_CHANGE\n\nPiperOrigin-RevId: 952087005\nChange-Id: I48b8e853905e6e3fabf3a98689e0ea96f4fa1771\n"
    },
    {
      "commit": "57ad9e4898b726c3938c5173a3f3f9adef9384dc",
      "tree": "765c790e6d5f9abab895068537769b3d110cd3b3",
      "parents": [
        "42632542f56a8e18f633e73c499f4f7cc6829754"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Jul 21 15:21:50 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 21 15:22:14 2026 -0700"
      },
      "message": "Deleting --android_compiler usage from split transition. Deletion from AndroidConfiguration can only be done after rule release.\n\nPiperOrigin-RevId: 951727895\nChange-Id: Ieb52dd4488236cba468448cb91d20de72333800d\n"
    },
    {
      "commit": "42632542f56a8e18f633e73c499f4f7cc6829754",
      "tree": "ed94c7163ddd5eb5cc3e369313c4b03951ed1eb7",
      "parents": [
        "759c3505ec566e85b666105a4f0af9a45e0211dd"
      ],
      "author": {
        "name": "Adrian Boziloff",
        "email": "boziloff@google.com",
        "time": "Fri Jul 17 14:44:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 17 14:44:52 2026 -0700"
      },
      "message": "Halt resource_files.zip generation for Robolectric builds to enable skipping aapt2 convert.\n\nresource_files.zip is unused by Robolectric builds. We can forego its creation.\n\nBy using a lack of resource_files.zip as a marker, ResourceLinker can skip the costly \u0027aapt2 convert\u0027 step.\n\nPiperOrigin-RevId: 949770100\nChange-Id: I76b857dd252ffeec53b6d107fa18481929be4e06\n"
    },
    {
      "commit": "759c3505ec566e85b666105a4f0af9a45e0211dd",
      "tree": "0f4c90e0d1c273b0065d5c875188155fbf08816b",
      "parents": [
        "3bc4d7d9ab4543aa9ef6fdeb042f91a72b62cc12"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Jul 17 12:49:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 17 12:50:14 2026 -0700"
      },
      "message": "migrate --android_platforms\n#FLAG_CHANGE\n\nPiperOrigin-RevId: 949713985\nChange-Id: I9eb51c959ca639fa2a6f94c345ca9cc15060c0f7\n"
    },
    {
      "commit": "3bc4d7d9ab4543aa9ef6fdeb042f91a72b62cc12",
      "tree": "5bffd00e0ba60f90e19fd1b1eb6eaf75d3df716e",
      "parents": [
        "16f31b43135ab63f5788f0264340b7b2ebff37a4"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Fri Jul 17 12:33:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 17 12:33:52 2026 -0700"
      },
      "message": "Migrate additional flags to Starlark.\n\n--internal_persistent_busybox_tools\n--internal_persistent_multiplex_busybox_tools​\n--internal_persistent_android_dex_desugar\n--internal_persistent_multiplex_android_dex_desugar\n\nPiperOrigin-RevId: 949706149\nChange-Id: I3d1d47aa9e240632236d66c9ea218ea3217817eb\n"
    },
    {
      "commit": "16f31b43135ab63f5788f0264340b7b2ebff37a4",
      "tree": "168cee5b3830a27fc9ebecd4ad3d050fb4fcdf24",
      "parents": [
        "00036f953afa2e8ca5b541508a28706802c9698a"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Fri Jul 17 10:48:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 17 10:48:28 2026 -0700"
      },
      "message": "Explicitly set scope to \"target\" for our custom build settings.\n\nPiperOrigin-RevId: 949651636\nChange-Id: Ie89768e2b4ecb12b9bb3c3a98547002221cc345d\n"
    },
    {
      "commit": "00036f953afa2e8ca5b541508a28706802c9698a",
      "tree": "0fa3257394406ec9ca6ddb7c19d8581cebfe1cd8",
      "parents": [
        "fb61e957162f506428923f276e643679da7abc91"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Fri Jul 17 10:23:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 17 10:24:09 2026 -0700"
      },
      "message": "Fix issue with access of _jacoco_runtime attribute now that it is no longer transitioned.\n\nPiperOrigin-RevId: 949639038\nChange-Id: I69a06ab82b9ef503873d5492ebdf89484b698853\n"
    },
    {
      "commit": "fb61e957162f506428923f276e643679da7abc91",
      "tree": "ca3dc1c36fb43e0be9354da32a67f7b0c99e037a",
      "parents": [
        "2533714a0dbecf01b8ca8b647d09d40ef077b8ba"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Fri Jul 17 09:45:04 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 17 09:45:23 2026 -0700"
      },
      "message": "Create a new a`android_host_hybrid_mode_transition` and apply it to android_local_test\n\nThis removes the Feature Flags Transition.\n\nPiperOrigin-RevId: 949618519\nChange-Id: I539a5cfc788cabae0b393c6f4f26f64e9f7b58e0\n"
    },
    {
      "commit": "2533714a0dbecf01b8ca8b647d09d40ef077b8ba",
      "tree": "e6152675561d6053d35e08c422884b9edac66aaf",
      "parents": [
        "b1fee4d2d301432703bcb137f06e6ae4c0a91a71"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Thu Jul 16 21:05:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 16 21:06:15 2026 -0700"
      },
      "message": "Move get_dexopts_supported_in_dex_merger into starlark.\n\nAlso no longer pass dexopts to create_dex_merger_actions, as the internal implementation effectively filters out everything other than --forceJumbo which is not set (and I\u0027m pretty sure the correct flag is actually --force-jumbo)\n\nPiperOrigin-RevId: 949341252\nChange-Id: I9ac36eba58642628cde9a19894686c65eff61377\n"
    },
    {
      "commit": "b1fee4d2d301432703bcb137f06e6ae4c0a91a71",
      "tree": "9ac4f8793264fe271005a95247a1cc129645d534",
      "parents": [
        "b5fce4ed2a885c56fb8fda1f7bed944b3aa7d5bb"
      ],
      "author": {
        "name": "Adrian Boziloff",
        "email": "boziloff@google.com",
        "time": "Thu Jul 16 16:25:08 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 16 16:25:37 2026 -0700"
      },
      "message": "Use -Othroughput within ValidateAndLinkResourcesAction\n\nSince linkStatically is used exclusively in ValidateAndLinkResourcesAction, this change adds the -Othroughput flag directly to the linkStatically method in ResourceLinker.java. This enables the benefits of -Othroughput\u0027s decreased runtime for LinkResourcesAction.\n\nValidateAndLinkResourcesAction is only used for intermediate resource validation, so a lower compression level will not impact release APKs.\n\nPiperOrigin-RevId: 949238225\nChange-Id: Id965bb3456e4f1ca3035950c150dded8874c58b0\n"
    },
    {
      "commit": "b5fce4ed2a885c56fb8fda1f7bed944b3aa7d5bb",
      "tree": "399f7b5d4782b18395659ed44abb01a53ba44f14",
      "parents": [
        "e9ba16981222b635684812dda934c84e64a1a9b1"
      ],
      "author": {
        "name": "Adrian Boziloff",
        "email": "boziloff@google.com",
        "time": "Wed Jul 15 15:41:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 15 15:42:16 2026 -0700"
      },
      "message": "Enable -Othroughput for aapt2 commands in android_local_test actions.\n\nThis change introduces an --optimize_throughput option to the resource packaging actions. When enabled, it passes the -Othroughput flag to aapt2 commands, which uses Level 1 APK compression for faster action execution in testing. This option is set to true for android_local_test targets.\n\nPiperOrigin-RevId: 948586045\nChange-Id: I59c16cab116ce524bbf124c4116f59f4d3b8963e\n"
    },
    {
      "commit": "e9ba16981222b635684812dda934c84e64a1a9b1",
      "tree": "bccaccc4a36d62500acf0e6d8157a8a5bbe01782",
      "parents": [
        "e09d249d493dcca01d9ec3a2570773bbfad2fe6c"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Wed Jul 15 12:52:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 15 12:52:51 2026 -0700"
      },
      "message": "Create an \"android_host_mode\" build setting.\n\nWe will transition this value via a new transition applied in android_local_test\n\nPiperOrigin-RevId: 948495733\nChange-Id: I737017a6354ad5df3f223f908bb357020fa08458\n"
    },
    {
      "commit": "e09d249d493dcca01d9ec3a2570773bbfad2fe6c",
      "tree": "470f96e23e1d97622680d7a96c5316c8525a1118",
      "parents": [
        "854f13d43a35ca751723b8b44a0dc373048addf3"
      ],
      "author": {
        "name": "Tim Peut",
        "email": "timpeut@google.com",
        "time": "Wed Jul 15 10:18:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 15 10:18:58 2026 -0700"
      },
      "message": "Remove unneeded indexing now that we transition on the incoming edge.\n\nPiperOrigin-RevId: 948407136\nChange-Id: Iabe52b1a905232ed2d82b2920647e9c4e5bea67f\n"
    },
    {
      "commit": "854f13d43a35ca751723b8b44a0dc373048addf3",
      "tree": "4db1bdc0747b74f391f938af2ebf450d8fb3c532",
      "parents": [
        "646d1e9c7032d0714a4a1220fb5dba83d2a39f7f"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Tue Jul 14 14:53:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 14 14:54:19 2026 -0700"
      },
      "message": "Remove usages of `android_platforms_transition` on `android_binary` attributes.\n\nThe transition is applied on the incoming edge so there is no need to apply it to individual attributes.\n\nPiperOrigin-RevId: 947920471\nChange-Id: I2e811a46fcbbf13a76696219c008eb434363fe05\n"
    },
    {
      "commit": "646d1e9c7032d0714a4a1220fb5dba83d2a39f7f",
      "tree": "88f3d91d347e2f5a4d990435137e42f0c929e8ec",
      "parents": [
        "62b698c37a97db4d25d32199ef812e2939704b41"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Tue Jul 14 14:25:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 14 14:26:03 2026 -0700"
      },
      "message": "Apply the `android_platforms_transition` instead of the feature flags transition on the incoming edge of `android_binary`.\n\nThis ensures all dependencies of `android_binary` are built in an Android configuration. It also removes one more dependency on native Bazel.\n\nPiperOrigin-RevId: 947905881\nChange-Id: Ic5e1573f392f756a533615c5b6c2a7d69bdca9e9\n"
    },
    {
      "commit": "62b698c37a97db4d25d32199ef812e2939704b41",
      "tree": "34ba0f1b23cf577cfc604df541170e694d8b7de6",
      "parents": [
        "73488c2b8e4e574efc94aa59e797282a3ae33c69"
      ],
      "author": {
        "name": "Michael Hoisie",
        "email": "hoisie@google.com",
        "time": "Tue Jul 14 14:10:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 14 14:10:52 2026 -0700"
      },
      "message": "Delete dead workaround `rfix` logic in ResourceLinker\n\nResourceLinker.linkStatically is only called by `ValidateAndLinkResourcesAction`.\nThis only happens when `--tool LINK_STATIC_LIBRARY` is called in RPBB. When\nthis is called in busybox.bzl, only the android.jar is ever passed in:\n`args.add(\"--libraries\", android_jar)`.\n\nTherefore, this `rfix` branch is dead code and has been for 9+ years, and can\nbe removed.\n\nPiperOrigin-RevId: 947897674\nChange-Id: Id1ef81a67193b278613bec4ad372347ea7eb2fc7\n"
    },
    {
      "commit": "73488c2b8e4e574efc94aa59e797282a3ae33c69",
      "tree": "f959f97e11246877ed0890d24e673188c1281715",
      "parents": [
        "89407e63b2c0ad587cd05ef0e15bac9f2f631b28"
      ],
      "author": {
        "name": "A Googler",
        "email": "no-reply@google.com",
        "time": "Tue Jul 14 12:54:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 14 12:55:27 2026 -0700"
      },
      "message": "migrate --experimental_android_compress_java_resources\n\nPiperOrigin-RevId: 947854156\nChange-Id: I4752787726b5badc9bf38ff1749059fca7bccb56\n"
    },
    {
      "commit": "89407e63b2c0ad587cd05ef0e15bac9f2f631b28",
      "tree": "4a1ae099ad785d1446bd840892b87961d8436530",
      "parents": [
        "e3b343a4d643a3f36b357b32434cb4123682c01d"
      ],
      "author": {
        "name": "Andrew Sinclair",
        "email": "asinclair@google.com",
        "time": "Sun Jul 12 16:11:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jul 12 16:11:48 2026 -0700"
      },
      "message": "Add a parameter `cfg` to `android_binary`\u0027s `make_rule` definition to allow modifying the rule\u0027s incoming edge transition(s)\n\nPiperOrigin-RevId: 946692408\nChange-Id: I9eefe20fc287dff9ab911730c2fa7b179d2165a1\n"
    }
  ],
  "next": "e3b343a4d643a3f36b357b32434cb4123682c01d"
}
