xref: /aosp_15_r20/external/bazelbuild-rules_android/rules/providers.bzl (revision 9e965d6fece27a77de5377433c2f7e6999b8cc0b)
1*9e965d6fSRomain Jobredeaux# Copyright 2018 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 providers for Android rules."""
16*9e965d6fSRomain Jobredeaux
17*9e965d6fSRomain Jobredeaux
18*9e965d6fSRomain Jobredeaux
19*9e965d6fSRomain JobredeauxAndroidAppsInfo = provider(
20*9e965d6fSRomain Jobredeaux    doc = "Provides information about app to install.",
21*9e965d6fSRomain Jobredeaux    fields = dict(
22*9e965d6fSRomain Jobredeaux        apps = "List of app provider artifacts.",
23*9e965d6fSRomain Jobredeaux    ),
24*9e965d6fSRomain Jobredeaux)
25*9e965d6fSRomain Jobredeaux
26*9e965d6fSRomain Jobredeaux
27*9e965d6fSRomain Jobredeaux
28*9e965d6fSRomain Jobredeaux
29*9e965d6fSRomain Jobredeaux
30*9e965d6fSRomain Jobredeaux
31*9e965d6fSRomain Jobredeaux
32*9e965d6fSRomain Jobredeaux
33*9e965d6fSRomain JobredeauxAndroidJavaInfo = provider(
34*9e965d6fSRomain Jobredeaux    doc = "Provides outputs for the Android Java Compilation",
35*9e965d6fSRomain Jobredeaux    fields = dict(
36*9e965d6fSRomain Jobredeaux        aidl = "AndroidIdlInfo",
37*9e965d6fSRomain Jobredeaux        aide = "AndroidIdeInfo",
38*9e965d6fSRomain Jobredeaux        java = "JavaInfo",
39*9e965d6fSRomain Jobredeaux    ),
40*9e965d6fSRomain Jobredeaux)
41*9e965d6fSRomain Jobredeaux
42*9e965d6fSRomain JobredeauxAndroidFilteredJdepsInfo = provider(
43*9e965d6fSRomain Jobredeaux    doc = "Provides a filtered jdeps proto.",
44*9e965d6fSRomain Jobredeaux    fields = dict(
45*9e965d6fSRomain Jobredeaux        jdeps = "Filtered jdeps",
46*9e965d6fSRomain Jobredeaux    ),
47*9e965d6fSRomain Jobredeaux)
48*9e965d6fSRomain Jobredeaux
49*9e965d6fSRomain Jobredeaux
50*9e965d6fSRomain JobredeauxStarlarkApkInfo = provider(
51*9e965d6fSRomain Jobredeaux    doc = "Provides APK outputs of a rule.",
52*9e965d6fSRomain Jobredeaux    fields = dict(
53*9e965d6fSRomain Jobredeaux        keystore = "Keystore used to sign the APK. Deprecated, prefer signing_keys.",
54*9e965d6fSRomain Jobredeaux        signing_keys = "List of keys used to sign the APK",
55*9e965d6fSRomain Jobredeaux        signing_lineage = "Optional sigining lineage file",
56*9e965d6fSRomain Jobredeaux        signed_apk = "Signed APK",
57*9e965d6fSRomain Jobredeaux        unsigned_apk = "Unsigned APK",
58*9e965d6fSRomain Jobredeaux    ),
59*9e965d6fSRomain Jobredeaux)
60*9e965d6fSRomain Jobredeaux
61*9e965d6fSRomain JobredeauxResourcesNodeInfo = provider(
62*9e965d6fSRomain Jobredeaux    doc = "Provides information for building ResourceProcessorBusyBox flags",
63*9e965d6fSRomain Jobredeaux    fields = dict(
64*9e965d6fSRomain Jobredeaux        label = "A label, the target's label",
65*9e965d6fSRomain Jobredeaux
66*9e965d6fSRomain Jobredeaux        # Assets related fields
67*9e965d6fSRomain Jobredeaux        assets = "A depset of files, assets files of the target",
68*9e965d6fSRomain Jobredeaux        assets_dir = "A string, the name of the assets directory",
69*9e965d6fSRomain Jobredeaux        assets_symbols = "A file, the merged assets",
70*9e965d6fSRomain Jobredeaux        compiled_assets = "A file, the compiled assets",
71*9e965d6fSRomain Jobredeaux
72*9e965d6fSRomain Jobredeaux        # Dynamic resources field
73*9e965d6fSRomain Jobredeaux        resource_apks = "A depset of resource only apk files",
74*9e965d6fSRomain Jobredeaux
75*9e965d6fSRomain Jobredeaux        # Resource related fields
76*9e965d6fSRomain Jobredeaux        resource_files = "A depset of files, resource files of the target",
77*9e965d6fSRomain Jobredeaux        compiled_resources = "A file, the compiled resources",
78*9e965d6fSRomain Jobredeaux        r_txt = "A file, the R.txt file",
79*9e965d6fSRomain Jobredeaux        manifest = "A file, the AndroidManifest.xml",
80*9e965d6fSRomain Jobredeaux        # TODO(ostonge): Add the manifest if it's exported, otherwise leave empty
81*9e965d6fSRomain Jobredeaux        exports_manifest = "Boolean, whether the manifest is exported",
82*9e965d6fSRomain Jobredeaux    ),
83*9e965d6fSRomain Jobredeaux)
84*9e965d6fSRomain Jobredeaux
85*9e965d6fSRomain JobredeauxStarlarkAndroidResourcesInfo = provider(
86*9e965d6fSRomain Jobredeaux    doc = "Provides information about direct and transitive resources",
87*9e965d6fSRomain Jobredeaux    fields = dict(
88*9e965d6fSRomain Jobredeaux        direct_resources_nodes = "Depset of ResourcesNodeInfo providers, can contain multiple providers due to exports",
89*9e965d6fSRomain Jobredeaux        transitive_resources_nodes = "Depset of transitive ResourcesNodeInfo providers, not including directs",
90*9e965d6fSRomain Jobredeaux        transitive_assets = "Depset of transitive assets files",
91*9e965d6fSRomain Jobredeaux        transitive_assets_symbols = "Depset of transitive merged assets",
92*9e965d6fSRomain Jobredeaux        transitive_compiled_assets = "Depset of transitive compiled assets",
93*9e965d6fSRomain Jobredeaux        direct_compiled_resources = "Depset of direct compiled_resources, can contain multiple files due to exports",
94*9e965d6fSRomain Jobredeaux        transitive_compiled_resources = "Depset of transitive compiled resources",
95*9e965d6fSRomain Jobredeaux        transitive_manifests = "Depset of transitive manifests",
96*9e965d6fSRomain Jobredeaux        transitive_r_txts = "Depset of transitive R.txt files",
97*9e965d6fSRomain Jobredeaux        transitive_resource_files = "Depset of transitive resource files",
98*9e965d6fSRomain Jobredeaux        packages_to_r_txts = "Map of packages to depset of r_txt files",
99*9e965d6fSRomain Jobredeaux        transitive_resource_apks = "Depset of transitive resource only apk files",
100*9e965d6fSRomain Jobredeaux    ),
101*9e965d6fSRomain Jobredeaux)
102*9e965d6fSRomain Jobredeaux
103*9e965d6fSRomain JobredeauxAndroidLintRulesInfo = provider(
104*9e965d6fSRomain Jobredeaux    doc = "Provides extra lint rules to use with AndroidLint.",
105*9e965d6fSRomain Jobredeaux    fields = dict(
106*9e965d6fSRomain Jobredeaux        lint_jars = "A depset of lint rule jars found in AARs and exported by a target.",
107*9e965d6fSRomain Jobredeaux    ),
108*9e965d6fSRomain Jobredeaux)
109*9e965d6fSRomain Jobredeaux
110*9e965d6fSRomain JobredeauxAndroidFeatureModuleInfo = provider(
111*9e965d6fSRomain Jobredeaux    doc = "Contains data required to build an Android feature split.",
112*9e965d6fSRomain Jobredeaux    fields = dict(
113*9e965d6fSRomain Jobredeaux        binary = "String, target of the underlying split android_binary target",
114*9e965d6fSRomain Jobredeaux        feature_name = "String, the name of the feature module. If unspecified, the target name will be used.",
115*9e965d6fSRomain Jobredeaux        fused = "Boolean, whether the split is \"fused\" for the system image and for pre-L devices.",
116*9e965d6fSRomain Jobredeaux        library = "String, target of the underlying split android_library target",
117*9e965d6fSRomain Jobredeaux        manifest = "Optional AndroidManifest.xml file to use for this feature.",
118*9e965d6fSRomain Jobredeaux        min_sdk_version = "String, the min SDK version for this feature.",
119*9e965d6fSRomain Jobredeaux        title_id = "String, resource identifier for the split title.",
120*9e965d6fSRomain Jobredeaux        title_lib = "String, target of the split title android_library.",
121*9e965d6fSRomain Jobredeaux    ),
122*9e965d6fSRomain Jobredeaux)
123*9e965d6fSRomain Jobredeaux
124*9e965d6fSRomain Jobredeaux
125*9e965d6fSRomain JobredeauxDex2OatApkInfo = provider(
126*9e965d6fSRomain Jobredeaux    doc = "Contains data about artifacts generated through host dex2oat.",
127*9e965d6fSRomain Jobredeaux    fields = dict(
128*9e965d6fSRomain Jobredeaux        signed_apk = "Signed APK",
129*9e965d6fSRomain Jobredeaux        oat_file = "Oat file generated through dex2oat.",
130*9e965d6fSRomain Jobredeaux        vdex_file = "Vdex file generated through dex2oat.",
131*9e965d6fSRomain Jobredeaux        art_file = "ART file generated through dex2oat.",
132*9e965d6fSRomain Jobredeaux    ),
133*9e965d6fSRomain Jobredeaux)
134*9e965d6fSRomain Jobredeaux
135*9e965d6fSRomain JobredeauxInstrumentedAppInfo = provider(
136*9e965d6fSRomain Jobredeaux    doc = "Contains data about an android_binary's instrumented android_binary.",
137*9e965d6fSRomain Jobredeaux    fields = dict(
138*9e965d6fSRomain Jobredeaux        android_ide_info = "AndroidIdeInfo provider from the instrumented android_binary.",
139*9e965d6fSRomain Jobredeaux    ),
140*9e965d6fSRomain Jobredeaux)
141*9e965d6fSRomain Jobredeaux
142*9e965d6fSRomain JobredeauxFailureInfo = provider(
143*9e965d6fSRomain Jobredeaux    fields = dict(
144*9e965d6fSRomain Jobredeaux        error = "Error message",
145*9e965d6fSRomain Jobredeaux    ),
146*9e965d6fSRomain Jobredeaux)
147*9e965d6fSRomain Jobredeaux
148*9e965d6fSRomain JobredeauxAndroidBundleInfo = provider(
149*9e965d6fSRomain Jobredeaux    doc = "Provides .aab outputs from a rule.",
150*9e965d6fSRomain Jobredeaux    fields = dict(
151*9e965d6fSRomain Jobredeaux        unsigned_aab = "File, the unsigned .aab",
152*9e965d6fSRomain Jobredeaux    ),
153*9e965d6fSRomain Jobredeaux)
154*9e965d6fSRomain Jobredeaux
155*9e965d6fSRomain JobredeauxStarlarkAndroidDexInfo = provider(
156*9e965d6fSRomain Jobredeaux    doc = "Internal provider used to collect transitive dex info.",
157*9e965d6fSRomain Jobredeaux    fields = dict(
158*9e965d6fSRomain Jobredeaux        dex_archives_dict = (
159*9e965d6fSRomain Jobredeaux            "A dictionary of all the transitive dex archives for all dexopts."
160*9e965d6fSRomain Jobredeaux        ),
161*9e965d6fSRomain Jobredeaux    ),
162*9e965d6fSRomain Jobredeaux)
163