commit | c25b01a37023a880485ab6d0199249ceace6a4a9 | [log] [tgz] |
---|---|---|
author | Lucas TenĂ³rio <ltenorio@google.com> | Mon Oct 16 03:06:21 2023 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Oct 16 03:07:10 2023 -0700 |
tree | b2f24e1610c01244d1af9cb4e5b3fd97fc9388cc | |
parent | 0820235adbb156e345138327d88ae9bc697fd74f [diff] |
Add command for generating the RuntimeEnabledSdkConfig message. This is used in an app bundle to reference the sandboxed SDK dependencies and how they are signed. This is later read by app stores to properly install SDK dependencies on devices (or create split APKs with SDK dependencies). Note that the config message needs to have a `resource id` for every SDK, which represents the first byte of the package IDs for the SDK. Low values for this ID can cause problems on API <26 (P and below) so we need to start from a base value (0x7F) and decrease from there, enforcing a low limit (50 SDKs). On Android O and above we can use the full byte starting from the base (0x7F). Since this logic depends on the minSdkVersion, the command receives the AAPT manifest dump of the app. PiperOrigin-RevId: 573756689 Change-Id: I4830042f8356f9a774822f2efedf9fc3011f8221
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
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.
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( ... )