Merge remote-tracking branch 'aosp/upstream-main' into HEAD

* aosp/upstream-main: (42 commits)
  Transition into 'exec' config on the `aapt2` attr of android_toolchain.
  Misc tool mapping fixes
  Init tests for android_local_test rule. Part of #106
  Always pass proguard implicit output artifacts to Native and symlink them.
  Add a dummy SDK for rules_android.
  Switch Cpp `BuildInfo` system to new API.
  Wire up AndroidOptimizationInfo in Starlark
  Wire up AndroidPreDexJarInfo in Starlark android_binary_internal.
  Use `binary_jar` as `java_resource_jar` if the flag `get_java_resources_from_optimized_jar` is True.
  Wire up ProguardMappingInfo in Starlark.
  Remove min_sdk_version from test in preparation for ACL fixes.
  Deal with explicit namespaces in Bazel
  Set most of the dependency_map tools to //tools/android:gen_fail
  Rename
  support-additional_providers-in-make_rule
  Replace _DEPOT_MIN_SDK_FLOOR constant with an acl-based system.
  Release src/tools/mi/deployment_oss
  Remove unused enforce_min_sdk_floor acl.
  Fix a bug that `proguard_specs` should be a list of Files rather than Targets in method `_dex.generate_main_dex_list`.
  Remove the redundant underscore in the runtype_suffix string.
  ...

Bug: 303786272
Change-Id: I5b22c7f5062340f6504a560b72da23cdec6af4df
tree: a58049c9682d6fd38e8408479340bf3911b87515
  1. .bazelci/
  2. android/
  3. examples/
  4. kokoro/
  5. mobile_install/
  6. rules/
  7. src/
  8. test/
  9. toolchains/
  10. tools/
  11. .bazelignore
  12. .bazelrc
  13. .gitignore
  14. android_sdk_supplemental_repository.bzl
  15. AUTHORS
  16. BUILD
  17. CONTRIBUTING.md
  18. CONTRIBUTORS
  19. defs.bzl
  20. defs_dev.bzl
  21. go.mod
  22. go.sum
  23. groups
  24. LICENSE
  25. METADATA
  26. MODULE.bazel
  27. MODULE_LICENSE_APACHE2
  28. prereqs.bzl
  29. project.config
  30. README.md
  31. ROADMAP.md
  32. rules_android_maven_install.json
  33. WORKSPACE
  34. WORKSPACE.bzlmod
README.md

Android support in Bazel

Disclaimer

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

A version of Bazel built at or near head or a recent pre-release and the following flags are necessary to use these rules:

--experimental_enable_android_migration_apis
--experimental_google_legacy_api
--incompatible_java_common_parameters
--android_databinding_use_v3_4_args
--experimental_android_databinding_v2

Overview

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

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

For the list of Android rules, see the Bazel documentation.

Getting Started

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

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# Or a later commit
RULES_ANDROID_COMMIT= "0bf3093bd011acd35de3c479c8990dd630d552aa"
RULES_ANDROID_SHA = "b75a673a66c157138ab53f4d8612a6e655d38b69bb14207c1a6675f0e10afa61"
http_archive(
    name = "rules_android",
    url = "https://github.com/bazelbuild/rules_android/archive/%s.zip" % RULES_ANDROID_COMMIT,
    sha256 = RULES_ANDROID_SHA,
    strip_prefix = "rules_android-%s" % RULES_ANDROID_COMMIT,
)
load("@rules_android//:prereqs.bzl", "rules_android_prereqs")
rules_android_prereqs()
load("@rules_android//:defs.bzl", "rules_android_workspace")
rules_android_workspace()

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

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

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

android_library(
    ...
)