Migrate
--desugar_for_android
--experimental_android_library_exports_manifest_default
--experimental_android_resource_shrinking
--experimental_get_android_java_resources_from_optimized_jar
--android_manifest_merger
--experimental_android_resource_cycle_shrinking

PiperOrigin-RevId: 952899537
Change-Id: Icc035d739150f4954c54f477219ce90a1e8e0613
diff --git a/rules/aar_import/impl.bzl b/rules/aar_import/impl.bzl
index 11393b2..520ca10 100644
--- a/rules/aar_import/impl.bzl
+++ b/rules/aar_import/impl.bzl
@@ -40,7 +40,7 @@
     _utils = "utils",
 )
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
-load("//rules/flags:flags.bzl", _flags = "flags")
+load("//rules/flags:flags.bzl", "read_possibly_native_flag", _flags = "flags")
 load("@rules_java//java/common:java_common.bzl", "java_common")
 load("@rules_java//java/common:java_info.bzl", "JavaInfo")
 load("@rules_java//java/common:proguard_spec_info.bzl", "ProguardSpecInfo")
@@ -500,7 +500,7 @@
         deps = _utils.collect_providers(JavaInfo, ctx.attr.deps),
         r_java = resources_ctx.r_java,
         exports = _utils.collect_providers(JavaInfo, ctx.attr.exports),
-        enable_desugar_java8 = ctx.fragments.android.desugar_java8,
+        enable_desugar_java8 = read_possibly_native_flag(ctx, "desugar_for_android"),
         enable_imports_deps_check =
             _acls.in_aar_import_deps_checker(str(ctx.label)),
         aar_embedded_jars_extractor_tool =
diff --git a/rules/android_binary/impl.bzl b/rules/android_binary/impl.bzl
index 530154d..f610600 100644
--- a/rules/android_binary/impl.bzl
+++ b/rules/android_binary/impl.bzl
@@ -106,7 +106,7 @@
         compilation_mode = compilation_mode.get(ctx),
         shrink_resources = ctx.attr.shrink_resources,
         use_android_resource_shrinking = read_possibly_native_flag(ctx, "android_resource_shrinking"),
-        use_android_resource_cycle_shrinking = ctx.fragments.android.use_android_resource_cycle_shrinking,
+        use_android_resource_cycle_shrinking = read_possibly_native_flag(ctx, "experimental_android_resource_cycle_shrinking"),
         use_legacy_manifest_merger = use_legacy_manifest_merger(ctx),
         should_throw_on_conflict = not acls.in_allow_resource_conflicts(str(ctx.label)),
         enable_data_binding = ctx.attr.enable_data_binding,
@@ -397,7 +397,7 @@
         filtered_deploy_jar = deploy_ctx.filtered_deploy_jar,
         final_classes_dex_zip = final_classes_dex_zip,
         final_proguard_output_map = final_proguard_output_map,
-        java_resource_jar = binary_jar if ctx.fragments.android.get_java_resources_from_optimized_jar else deploy_jar,
+        java_resource_jar = binary_jar if read_possibly_native_flag(ctx, "experimental_get_android_java_resources_from_optimized_jar") else deploy_jar,
     )
     providers.append(AndroidPreDexJarInfo(pre_dex_jar = binary_jar))
 
@@ -446,7 +446,7 @@
     info = _dex.merge_infos(utils.collect_providers(StarlarkAndroidDexInfo, _get_dex_desugar_aspect_deps(ctx)))
     incremental_dexopts = _dex.filter_dexopts(ctx.attr.dexopts, _dex.DEXOPTS_SUPPORTED_IN_INCREMENTAL_DEXING)
     dex_archives = info.dex_archives_dict.get("".join(incremental_dexopts), depset()).to_list()
-    if ctx.fragments.android.desugar_java8:
+    if read_possibly_native_flag(ctx, "desugar_for_android"):
         desugared_jars = []
 
         # Only include the desugar globals in the deploy jar if this target will be optimized.
@@ -751,7 +751,7 @@
     generate_proguard_map = (
         ctx.attr.proguard_generate_mapping or enable_resource_shrinking
     )
-    desugar_java8_libs_generates_map = ctx.fragments.android.desugar_java8
+    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))
 
     if generate_proguard_map:
diff --git a/rules/android_library/impl.bzl b/rules/android_library/impl.bzl
index 4e00bb8..c410e83 100644
--- a/rules/android_library/impl.bzl
+++ b/rules/android_library/impl.bzl
@@ -31,6 +31,7 @@
 load("//rules:resources.bzl", _resources = "resources")
 load("//rules:utils.bzl", "get_android_sdk", "get_android_toolchain", "log", "utils")
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
+load("//rules/flags:flags.bzl", "read_possibly_native_flag")
 load("@rules_java//java/common:java_info.bzl", "JavaInfo")
 load("@rules_java//java/common:java_plugin_info.bzl", "JavaPluginInfo")
 load("@rules_java//java/common:proguard_spec_info.bzl", "ProguardSpecInfo")
@@ -148,7 +149,10 @@
 def _process_resources(ctx, java_package, manifest_ctx, localized_ctx, **unused_ctxs):
     # exports_manifest can be overridden by a bazel flag.
     if ctx.attr.exports_manifest == _attrs.tristate.auto:
-        exports_manifest = ctx.fragments.android.get_exports_manifest_default
+        exports_manifest = read_possibly_native_flag(
+            ctx,
+            "experimental_android_library_exports_manifest_default",
+        )
     else:
         exports_manifest = ctx.attr.exports_manifest == _attrs.tristate.yes
 
diff --git a/rules/dex_desugar_aspect.bzl b/rules/dex_desugar_aspect.bzl
index 2d4850b..d594c09 100644
--- a/rules/dex_desugar_aspect.bzl
+++ b/rules/dex_desugar_aspect.bzl
@@ -15,6 +15,7 @@
 
 load("//providers:providers.bzl", "AndroidBytecodeTransformerInfo", "AndroidIdeInfo", "StarlarkAndroidDexInfo")
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
+load("//rules/flags:flags.bzl", "read_possibly_native_flag")
 load("@rules_java//java/common:java_info.bzl", "JavaInfo")
 load("@bazel_skylib//lib:partial.bzl", "partial")
 load(":acls.bzl", "acls")
@@ -122,7 +123,7 @@
         basename_clash = _check_basename_clash(runtime_jars)
         aspect_dexopts = _get_aspect_dexopts()
         for jar in runtime_jars:
-            if ctx.fragments.android.desugar_java8:
+            if read_possibly_native_flag(ctx, "desugar_for_android"):
                 jar_to_desugar = jar
                 unique_desugar_filename = (jar.short_path if basename_clash else jar.basename) + "_desugared.jar"
                 desugared_jar = _dex.get_dx_artifact(ctx, unique_desugar_filename, min_sdk_version)
diff --git a/rules/flags/flags.bzl b/rules/flags/flags.bzl
index 208b898..40d62c1 100644
--- a/rules/flags/flags.bzl
+++ b/rules/flags/flags.bzl
@@ -190,11 +190,28 @@
     return flags[0][FlagsInfo]
 
 _POSSIBLY_NATIVE_FLAGS = {
+    "android_manifest_merger": (
+        lambda ctx: ctx.fragments.android.manifest_merger,
+        "native",
+    ),
+    "desugar_for_android": (lambda ctx: ctx.fragments.android.desugar_java8, "native"),
     "desugar_java8_libs": (lambda ctx: ctx.fragments.android.desugar_java8_libs, "native"),
     "experimental_android_compress_java_resources": (
         lambda ctx: ctx.fragments.android.compress_java_resources,
         "native",
     ),
+    "experimental_android_library_exports_manifest_default": (
+        lambda ctx: ctx.fragments.android.get_exports_manifest_default,
+        "native",
+    ),
+    "experimental_android_resource_cycle_shrinking": (
+        lambda ctx: ctx.fragments.android.use_android_resource_cycle_shrinking,
+        "native",
+    ),
+    "experimental_get_android_java_resources_from_optimized_jar": (
+        lambda ctx: ctx.fragments.android.get_java_resources_from_optimized_jar,
+        "native",
+    ),
     "internal_persistent_android_dex_desugar": (
         lambda ctx: ctx.fragments.android.persistent_android_dex_desugar,
         "native",
@@ -215,6 +232,7 @@
     "dexopts_supported_in_dexsharder": (lambda ctx: ctx.fragments.android.get_dexopts_supported_in_dex_sharder, "native"),
     "fixed_resource_neverlinking": (lambda ctx: ctx.fragments.android.fixed_resource_neverlinking, "native"),
     "android_resource_shrinking": (lambda ctx: ctx.fragments.android.use_android_resource_shrinking, "native"),
+    "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"),
 }
diff --git a/rules/proguard.bzl b/rules/proguard.bzl
index 2c55f9d..9005755 100644
--- a/rules/proguard.bzl
+++ b/rules/proguard.bzl
@@ -14,6 +14,7 @@
 """Bazel Android Proguard library for the Android rules."""
 
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
+load("//rules/flags:flags.bzl", "read_possibly_native_flag")
 load("@rules_java//java/common:java_common.bzl", "java_common")
 load("@rules_java//java/common:proguard_spec_info.bzl", "ProguardSpecInfo")
 load(":acls.bzl", "acls")
@@ -444,7 +445,7 @@
         )
 
     library_jar_list = [utils.only(common.get_java_toolchain(ctx)[java_common.JavaToolchainInfo].bootclasspath.to_list())]
-    if ctx.fragments.android.desugar_java8:
+    if read_possibly_native_flag(ctx, "desugar_for_android"):
         library_jar_list.append(ctx.file._desugared_java8_legacy_apis)
     neverlink_infos = utils.collect_providers(StarlarkAndroidNeverlinkInfo, ctx.attr.deps)
     library_jars = depset(library_jar_list, transitive = [info.transitive_neverlink_libraries for info in neverlink_infos])