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