Migrate --optimizing_dexer and delete  _legacy_main_dex_list_generator
This change is NOOP

PiperOrigin-RevId: 954713631
Change-Id: I03e3953160858ee33680bc9366b9c8cfcfe4006a
diff --git a/rules/android_binary/attrs.bzl b/rules/android_binary/attrs.bzl
index e8dacc1..6c0c5b1 100644
--- a/rules/android_binary/attrs.bzl
+++ b/rules/android_binary/attrs.bzl
@@ -243,14 +243,6 @@
                 cfg = "exec",
                 executable = True,
             ),
-            _legacy_main_dex_list_generator = attr.label(
-                default = configuration_field(
-                    fragment = "android",
-                    name = "legacy_main_dex_list_generator",
-                ),
-                cfg = "exec",
-                executable = True,
-            ),
             _manifest_merge_order = attr.label(
                 default = "//rules/flags:manifest_merge_order",
             ),
diff --git a/rules/android_binary/impl.bzl b/rules/android_binary/impl.bzl
index f610600..2de18cc 100644
--- a/rules/android_binary/impl.bzl
+++ b/rules/android_binary/impl.bzl
@@ -271,7 +271,7 @@
     postprocessing_output_map = None
     deploy_jar = deploy_ctx.deploy_jar
     is_binary_optimized = len(ctx.attr.proguard_specs) > 0
-    optimizing_dexer = ctx.attr._optimizing_dexer
+    optimizing_dexer = read_possibly_native_flag(ctx, "optimizing_dexer")
     java8_legacy_dex_map = None
     proguarded_jar = optimize_ctx.proguard_output.output_jar if is_binary_optimized else None
     proguard_output_map = optimize_ctx.proguard_output.mapping if is_binary_optimized else None
@@ -752,7 +752,7 @@
         ctx.attr.proguard_generate_mapping or enable_resource_shrinking
     )
     desugar_java8_libs_generates_map = read_possibly_native_flag(ctx, "desugar_for_android")
-    optimizing_dexing = bool(ctx.attr._optimizing_dexer) and not acls.in_disable_optimizing_dexer(str(ctx.label))
+    optimizing_dexing = bool(read_possibly_native_flag(ctx, "optimizing_dexer")) and not acls.in_disable_optimizing_dexer(str(ctx.label))
 
     if generate_proguard_map:
         # Determine the output of the Proguard map from shrinking the app. This depends on the
diff --git a/rules/attrs.bzl b/rules/attrs.bzl
index d80a0a0..3607f4b 100644
--- a/rules/attrs.bzl
+++ b/rules/attrs.bzl
@@ -518,6 +518,11 @@
         default = Label("//flags:flags_wrapper"),
         providers = [WrappedFlagsInfo],
     ),
+    _starlark_optimizing_dexer = attr.label(
+        allow_files = True,
+        cfg = "exec",
+        default = Label("//flags:optimizing_dexer"),
+    ),
 )
 
 attrs = struct(
diff --git a/rules/flags/flags.bzl b/rules/flags/flags.bzl
index 40d62c1..e49a627 100644
--- a/rules/flags/flags.bzl
+++ b/rules/flags/flags.bzl
@@ -235,8 +235,13 @@
     "experimental_android_resource_shrinking": (lambda ctx: ctx.fragments.android.use_android_resource_shrinking, "native"),
     "experimental_android_resource_path_shortening": (lambda ctx: ctx.fragments.android.use_android_resource_path_shortening, "native"),
     "experimental_android_resource_name_obfuscation": (lambda ctx: ctx.fragments.android.use_android_resource_name_obfuscation, "native"),
+    "optimizing_dexer": (lambda ctx: ctx.attr._optimizing_dexer, "starlark"),
 }
 
+_LABEL_FLAGS = [
+    "optimizing_dexer",
+]
+
 def read_possibly_native_flag(ctx, flag_name):
     """
     Canonical API for reading a Android build flag.
@@ -268,6 +273,12 @@
     if use_native_def:
         return _POSSIBLY_NATIVE_FLAGS[flag_name][0](ctx)
     else:
+        if flag_name in _LABEL_FLAGS:
+            val = getattr(ctx.attr, "_starlark_" + flag_name, None)
+            if val and not str(val.label).endswith(":empty"):
+                return val
+            return getattr(ctx.attr, "_" + flag_name, None)
+
         # First check the new wrapped_flags attribute
         if hasattr(ctx.attr, "_wrapped_flags") and ctx.attr._wrapped_flags:
             wrapped_flags = ctx.attr._wrapped_flags[WrappedFlagsInfo].flags