xref: /aosp_15_r20/external/bazelbuild-rules_android/rules/android_binary.bzl (revision 9e965d6fece27a77de5377433c2f7e6999b8cc0b)
1*9e965d6fSRomain Jobredeaux# Copyright 2019 The Bazel Authors. All rights reserved.
2*9e965d6fSRomain Jobredeaux#
3*9e965d6fSRomain Jobredeaux# Licensed under the Apache License, Version 2.0 (the "License");
4*9e965d6fSRomain Jobredeaux# you may not use this file except in compliance with the License.
5*9e965d6fSRomain Jobredeaux# You may obtain a copy of the License at
6*9e965d6fSRomain Jobredeaux#
7*9e965d6fSRomain Jobredeaux#    http://www.apache.org/licenses/LICENSE-2.0
8*9e965d6fSRomain Jobredeaux#
9*9e965d6fSRomain Jobredeaux# Unless required by applicable law or agreed to in writing, software
10*9e965d6fSRomain Jobredeaux# distributed under the License is distributed on an "AS IS" BASIS,
11*9e965d6fSRomain Jobredeaux# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*9e965d6fSRomain Jobredeaux# See the License for the specific language governing permissions and
13*9e965d6fSRomain Jobredeaux# limitations under the License.
14*9e965d6fSRomain Jobredeaux
15*9e965d6fSRomain Jobredeaux"""Bazel rule for building an APK."""
16*9e965d6fSRomain Jobredeaux
17*9e965d6fSRomain Jobredeauxload(":common.bzl", "common")
18*9e965d6fSRomain Jobredeauxload(":migration_tag_DONOTUSE.bzl", "add_migration_tag")
19*9e965d6fSRomain Jobredeauxload("//rules/android_binary_internal:rule.bzl", "android_binary_internal_macro")
20*9e965d6fSRomain Jobredeauxload("//rules:acls.bzl", "acls")
21*9e965d6fSRomain Jobredeaux
22*9e965d6fSRomain Jobredeauxdef android_binary(**attrs):
23*9e965d6fSRomain Jobredeaux    """Bazel android_binary rule.
24*9e965d6fSRomain Jobredeaux
25*9e965d6fSRomain Jobredeaux    https://docs.bazel.build/versions/master/be/android.html#android_binary
26*9e965d6fSRomain Jobredeaux
27*9e965d6fSRomain Jobredeaux    Args:
28*9e965d6fSRomain Jobredeaux      **attrs: Rule attributes
29*9e965d6fSRomain Jobredeaux    """
30*9e965d6fSRomain Jobredeaux    android_binary_internal_name = ":" + attrs["name"] + common.PACKAGED_RESOURCES_SUFFIX
31*9e965d6fSRomain Jobredeaux    android_binary_internal_macro(
32*9e965d6fSRomain Jobredeaux        **dict(
33*9e965d6fSRomain Jobredeaux            attrs,
34*9e965d6fSRomain Jobredeaux            name = android_binary_internal_name[1:],
35*9e965d6fSRomain Jobredeaux            visibility = ["//visibility:private"],
36*9e965d6fSRomain Jobredeaux        )
37*9e965d6fSRomain Jobredeaux    )
38*9e965d6fSRomain Jobredeaux
39*9e965d6fSRomain Jobredeaux    attrs.pop("$enable_manifest_merging", None)
40*9e965d6fSRomain Jobredeaux
41*9e965d6fSRomain Jobredeaux    # dex_shards is deprecated and unused. This only existed for mobile-install classic which has
42*9e965d6fSRomain Jobredeaux    # been replaced by mobile-install v2
43*9e965d6fSRomain Jobredeaux    attrs.pop("dex_shards", None)
44*9e965d6fSRomain Jobredeaux
45*9e965d6fSRomain Jobredeaux    # resource_apks is not used by the native android_binary
46*9e965d6fSRomain Jobredeaux    attrs.pop("resource_apks", None)
47*9e965d6fSRomain Jobredeaux
48*9e965d6fSRomain Jobredeaux    fqn = "//%s:%s" % (native.package_name(), attrs["name"])
49*9e965d6fSRomain Jobredeaux    if acls.use_r8(fqn):
50*9e965d6fSRomain Jobredeaux        # Do not pass proguard specs to the native android_binary so that it does
51*9e965d6fSRomain Jobredeaux        # not try to use proguard and instead uses the dex files from the
52*9e965d6fSRomain Jobredeaux        # AndroidDexInfo provider from android_binary_internal.
53*9e965d6fSRomain Jobredeaux        # This also disables resource shrinking from native android_binary (reguardless of the
54*9e965d6fSRomain Jobredeaux        # shrink_resources attr).
55*9e965d6fSRomain Jobredeaux        attrs["proguard_specs"] = []
56*9e965d6fSRomain Jobredeaux
57*9e965d6fSRomain Jobredeaux    native.android_binary(
58*9e965d6fSRomain Jobredeaux        application_resources = android_binary_internal_name,
59*9e965d6fSRomain Jobredeaux        **add_migration_tag(attrs)
60*9e965d6fSRomain Jobredeaux    )
61