Defines a binary target and a config setting for d8_dexmerger.
RELNOTES: Experimental support for d8 merger is now available for use using --define=android_dexmerger_tool=d8_dexmerger.
PiperOrigin-RevId: 283382218
diff --git a/tools/android/BUILD.tools b/tools/android/BUILD.tools
index b1bff1c..ddb3300 100644
--- a/tools/android/BUILD.tools
+++ b/tools/android/BUILD.tools
@@ -74,9 +74,36 @@
actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder",
)
+# Defines d8_dexmerger using @<repo>//:d8_jar_import generated by android_sdk_repository rule
+# without needing the SDK repo's name (typically @androidsdk but not required).
+java_binary(
+ name = "d8_dexmerger",
+ main_class = "com.android.tools.r8.dexfilemerger.DexFileMerger",
+ visibility = ["//visibility:private"],
+ runtime_deps = ["//external:android/d8_jar_import"],
+)
+
+config_setting(
+ name = "use_dx_dexmerger",
+ values = {
+ "define": "android_dexmerger_tool=dx_dexmerger",
+ },
+)
+
+config_setting(
+ name = "use_d8_dexmerger",
+ values = {
+ "define": "android_dexmerger_tool=d8_dexmerger",
+ },
+)
+
alias(
name = "dexmerger",
- actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger",
+ actual = select({
+ "use_d8_dexmerger": ":d8_dexmerger",
+ "use_dx_dexmerger": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger",
+ "//conditions:default": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger",
+ })
)
alias(