Skip to content

Commit 15fcc90

Browse files
committed
Extract setter store from AAR in aar_import
1 parent c221362 commit 15fcc90

File tree

5 files changed

+29
-1
lines changed

5 files changed

+29
-1
lines changed

examples/databinding/MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ maven.install(
3333
aar_import_bzl_label = "@rules_android//rules:rules.bzl",
3434
artifacts = [
3535
"androidx.annotation:annotation-jvm:1.9.1",
36+
"androidx.databinding:databinding-adapters:8.7.0",
3637
"androidx.databinding:databinding-runtime:8.7.0",
3738
],
3839
repositories = [

examples/databinding/java/com/databindingapp/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ android_library(
1818
enable_data_binding = True,
1919
deps = [
2020
"@maven//:androidx_annotation_annotation_jvm",
21+
"@maven//:androidx_databinding_databinding_adapters",
2122
"@maven//:androidx_databinding_databinding_runtime",
2223
],
2324
)

rules/aar_import/impl.bzl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,19 @@ def _extract_resources(
9595
ctx,
9696
out_resources_dir,
9797
out_assets_dir,
98+
out_databinding_setter_store_dir,
9899
aar,
99100
aar_resources_extractor_tool):
100101
args = ctx.actions.args()
101102
args.add("--input_aar", aar)
102103
args.add("--output_res_dir", out_resources_dir.path)
103104
args.add("--output_assets_dir", out_assets_dir.path)
105+
args.add("--output_databinding_setter_store_dir", out_databinding_setter_store_dir.path)
104106
ctx.actions.run(
105107
executable = aar_resources_extractor_tool,
106108
arguments = [args],
107109
inputs = [aar],
108-
outputs = [out_resources_dir, out_assets_dir],
110+
outputs = [out_resources_dir, out_assets_dir, out_databinding_setter_store_dir],
109111
mnemonic = "AarResourcesExtractor",
110112
progress_message = "Extracting resources and assets from %s" % aar.basename,
111113
toolchain = None,
@@ -142,10 +144,12 @@ def _process_resources(
142144
# Extract resources and assets, if they exist.
143145
resources = _create_aar_tree_artifact(ctx, "resources")
144146
assets = _create_aar_tree_artifact(ctx, "assets")
147+
data_binding_setter_store = _create_aar_tree_artifact(ctx, "data_binding_setter_store")
145148
_extract_resources(
146149
ctx,
147150
resources,
148151
assets,
152+
data_binding_setter_store,
149153
aar,
150154
aar_resources_extractor_tool,
151155
)
@@ -156,6 +160,7 @@ def _process_resources(
156160
assets = [assets],
157161
assets_dir = assets.path,
158162
resource_files = [resources],
163+
data_binding_setter_store = data_binding_setter_store,
159164
stamp_manifest = False,
160165
deps = ctx.attr.deps,
161166
exports = ctx.attr.exports,

rules/data_binding.bzl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,19 @@ def _process(
328328

329329
return DataBindingContextInfo(**db_info)
330330

331+
def _process_aar(
332+
ctx,
333+
data_binding_setter_store):
334+
"""Builds a data binding provider for an AAR's extracted setter store
335+
"""
336+
return DataBindingV2Info(
337+
setter_stores = depset(direct = [data_binding_setter_store]),
338+
class_infos = depset(),
339+
transitive_br_files = depset(),
340+
java_packages = [],
341+
)
342+
331343
data_binding = struct(
332344
process = _process,
345+
process_aar = _process_aar,
333346
)

rules/resources.bzl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
load("//providers:providers.bzl", "AndroidLibraryResourceClassJarProvider", "ResourcesNodeInfo", "StarlarkAndroidResourcesInfo")
1717
load("//rules:acls.bzl", "acls")
18+
load("//rules:data_binding.bzl", _data_binding = "data_binding")
1819
load("//rules:min_sdk_version.bzl", _min_sdk_version = "min_sdk_version")
1920
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
2021
load("@rules_java//java/common:java_common.bzl", "java_common")
@@ -1190,6 +1191,7 @@ def _process_starlark(
11901191
resource_files = None,
11911192
neverlink = False,
11921193
enable_data_binding = False,
1194+
data_binding_setter_store = None,
11931195
fix_resource_transitivity = False,
11941196
aapt = None,
11951197
android_jar = None,
@@ -1369,6 +1371,12 @@ def _process_starlark(
13691371
data_binding_layout_info = None
13701372
processed_resources = resource_files
13711373
processed_manifest = None
1374+
1375+
if data_binding_setter_store != None:
1376+
resources_ctx[_PROVIDERS].append(
1377+
_data_binding.process_aar(ctx, data_binding_setter_store)
1378+
)
1379+
13721380
if not defines_resources:
13731381
if aapt:
13741382
# Generate an empty manifest with the right package

0 commit comments

Comments
 (0)