Extract and propagate databinding information from imported aars.
#2694
RELNOTES: None
PiperOrigin-RevId: 309327526
diff --git a/tools/android/aar_resources_extractor.py b/tools/android/aar_resources_extractor.py
index 29d2b4b..49ce7f1 100644
--- a/tools/android/aar_resources_extractor.py
+++ b/tools/android/aar_resources_extractor.py
@@ -45,6 +45,10 @@
flags.DEFINE_string("output_res_dir", None, "Output resources directory")
flags.mark_flag_as_required("output_res_dir")
flags.DEFINE_string("output_assets_dir", None, "Output assets directory")
+flags.DEFINE_string("output_databinding_br_dir", None,
+ "Output directory for databinding br files")
+flags.DEFINE_string("output_databinding_setter_store_dir", None,
+ "Output directory for databinding setter_store.json files")
def ExtractResources(aar, output_res_dir):
@@ -79,6 +83,14 @@
WriteFileWithJunctions(empty_asset_filename, b"")
+def ExtractDatabinding(aar, file_suffix, output_databinding_dir):
+ """Extracts databinding metadata files from an `aar`."""
+ output_databinding_dir_abs = os.path.abspath(output_databinding_dir)
+ for name in aar.namelist():
+ if name.startswith("data-binding/") and name.endswith(file_suffix):
+ ExtractOneFile(aar, name, output_databinding_dir_abs)
+
+
def WriteFileWithJunctions(filename, content):
"""Writes file including creating any junctions or directories necessary."""
def _WriteFile(filename):
@@ -132,6 +144,12 @@
ExtractResources(aar, FLAGS.output_res_dir)
if FLAGS.output_assets_dir is not None:
ExtractAssets(aar, FLAGS.output_assets_dir)
+ if FLAGS.output_databinding_br_dir is not None:
+ ExtractDatabinding(aar, "br.bin", FLAGS.output_databinding_br_dir)
+ if FLAGS.output_databinding_setter_store_dir is not None:
+ ExtractDatabinding(aar, "setter_store.json",
+ FLAGS.output_databinding_setter_store_dir)
+
if __name__ == "__main__":
FLAGS(sys.argv)