Add genrule for combined-removed-dex

This is a module that aims to have the same contents as
out/soong/hiddenapi/combined-dex-api generated by hiddenapi_singleton.go
inside soong, but generated using a different method that does not
depend on the monolithic droidstubs rule in frameworks/base.

This is part of a series of changes to remove all the dependencies on
the monolithic droidstub rules, so that they can eventually be removed.

Bug: 169034951
Bug: 169395887
Test: m combined-dex-api
Change-Id: I2c4a76aa1d85ef44fc467474afacec20901aee13
diff --git a/api/Android.bp b/api/Android.bp
index 546f151..ffc4a21 100644
--- a/api/Android.bp
+++ b/api/Android.bp
@@ -147,3 +147,17 @@
     tools: ["metalava"],
     cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
 }
+
+genrule {
+    name: "combined-removed-dex",
+    srcs: [
+        ":frameworks-base-api-removed-merged.txt",
+        ":frameworks-base-api-system-removed-merged.txt",
+        ":android.car-stubs-docs{.removed-api.txt}",
+        ":android.car-system-stubs-docs{.removed-api.txt}",
+    ],
+    tool_files: ["gen_combined_removed_dex.sh"],
+    tools: ["metalava"],
+    out: ["combined-removed-dex.txt"],
+    cmd: "$(location gen_combined_removed_dex.sh) $(location metalava) $(genDir) $(in) > $(out)",
+}
diff --git a/api/gen_combined_removed_dex.sh b/api/gen_combined_removed_dex.sh
new file mode 100755
index 0000000..9225fe8
--- /dev/null
+++ b/api/gen_combined_removed_dex.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+metalava_path="$1"
+tmp_dir="$2"
+shift 2
+
+# Convert each removed.txt to the "dex format" equivalent, and print all output.
+for f in "$@"; do
+    "$metalava_path" --no-banner "$f" --dex-api "${tmp_dir}/tmp"
+    cat "${tmp_dir}/tmp"
+done