Migrate android flags --experimental_incremental_dexing_after_proguard --dexopts_supported_in_dexsharder --android_fixed_resource_neverlinking --android_resource_shrinking --experimental_android_resource_path_shortening --experimental_android_resource_name_obfuscation #FLAG_CHANGE PiperOrigin-RevId: 952087005 Change-Id: I48b8e853905e6e3fabf3a98689e0ea96f4fa1771
diff --git a/flags/BUILD b/flags/BUILD index e6f363b..5c71bf6 100644 --- a/flags/BUILD +++ b/flags/BUILD
@@ -73,6 +73,13 @@ visibility = ["//visibility:public"], ) +bool_flag( + name = "experimental_android_resource_name_obfuscation", + build_setting_default = False, + scope = "universal", + visibility = ["//visibility:public"], +) + string_flag( name = "android_manifest_merger_order", build_setting_default = "alphabetical", @@ -93,7 +100,7 @@ ) bool_flag( - name = "android_fixed_resource_neverlinking", + name = "fixed_resource_neverlinking", build_setting_default = True, visibility = ["//visibility:public"], ) @@ -137,16 +144,6 @@ ) string_list_flag( - name = "dexopts_supported_in_dexmerger", - build_setting_default = [ - "--minimal-main-dex", - "--set-max-idx-number", - ], - scope = "universal", - visibility = ["//visibility:public"], -) - -string_list_flag( name = "dexopts_supported_in_dexsharder", build_setting_default = ["--minimal-main-dex"], scope = "universal", @@ -200,7 +197,7 @@ ) int_flag( - name = "incremental_dexing_after_proguard", + name = "experimental_incremental_dexing_after_proguard", build_setting_default = 50, scope = "universal", visibility = ["//visibility:public"],
diff --git a/rules/aar_import/attrs.bzl b/rules/aar_import/attrs.bzl index 0494249..1d0b8b0 100644 --- a/rules/aar_import/attrs.bzl +++ b/rules/aar_import/attrs.bzl
@@ -91,4 +91,5 @@ _attrs.DATA_CONTEXT, _attrs.ANDROID_TOOLCHAIN_ATTRS, _attrs.AUTOMATIC_EXEC_GROUPS_ENABLED, + _attrs.FLAGS_ATTRS, )
diff --git a/rules/android_binary/impl.bzl b/rules/android_binary/impl.bzl index 44b3a97..530154d 100644 --- a/rules/android_binary/impl.bzl +++ b/rules/android_binary/impl.bzl
@@ -105,7 +105,7 @@ java_package = java_package, compilation_mode = compilation_mode.get(ctx), shrink_resources = ctx.attr.shrink_resources, - use_android_resource_shrinking = ctx.fragments.android.use_android_resource_shrinking, + 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_legacy_manifest_merger = use_legacy_manifest_merger(ctx), should_throw_on_conflict = not acls.in_allow_resource_conflicts(str(ctx.label)), @@ -315,7 +315,7 @@ force_incremental_dexing = ctx.attr.incremental_dexing, has_forbidden_dexopts = len([d for d in ctx.attr.dexopts if d in forbidden_dexopts]) > 0, is_binary_optimized = is_binary_optimized, - incremental_dexing_shards_after_proguard = ctx.fragments.android.incremental_dexing_shards_after_proguard, + incremental_dexing_shards_after_proguard = read_possibly_native_flag(ctx, "experimental_incremental_dexing_after_proguard"), ) classes_dex_zip = _dex.get_dx_artifact(ctx, "classes.dex.zip") @@ -736,7 +736,7 @@ has_proguard_specs = bool(ctx.files.proguard_specs) enable_resource_shrinking = _resources.is_resource_shrinking_enabled( ctx.attr.shrink_resources, - ctx.fragments.android.use_android_resource_shrinking, + read_possibly_native_flag(ctx, "android_resource_shrinking"), has_proguard_specs, ) resource_shrinking_in_optimizer = acls.in_resource_shrinking_in_optimizer(str(ctx.label)) and _resources.is_resource_name_obfuscation_enabled(ctx, enable_resource_shrinking)
diff --git a/rules/android_binary/r8.bzl b/rules/android_binary/r8.bzl index 4c63947..df658eb 100644 --- a/rules/android_binary/r8.bzl +++ b/rules/android_binary/r8.bzl
@@ -212,7 +212,7 @@ if (not acls.use_r8(str(ctx.label)) or not _resources.is_resource_shrinking_enabled( ctx.attr.shrink_resources, - ctx.fragments.android.use_android_resource_shrinking, + read_possibly_native_flag(ctx, "android_resource_shrinking"), bool(ctx.files.proguard_specs), )): return ProviderInfo(
diff --git a/rules/android_library/attrs.bzl b/rules/android_library/attrs.bzl index 00e0213..61b368b 100644 --- a/rules/android_library/attrs.bzl +++ b/rules/android_library/attrs.bzl
@@ -248,4 +248,5 @@ _attrs.DATA_CONTEXT, _attrs.ANDROID_TOOLCHAIN_ATTRS, _attrs.AUTOMATIC_EXEC_GROUPS_ENABLED, + _attrs.FLAGS_ATTRS, )
diff --git a/rules/android_local_test/attrs.bzl b/rules/android_local_test/attrs.bzl index 684f27c..c8b9aa2 100644 --- a/rules/android_local_test/attrs.bzl +++ b/rules/android_local_test/attrs.bzl
@@ -229,6 +229,7 @@ _attrs.compilation_attributes(), _attrs.DATA_CONTEXT, _attrs.AUTOMATIC_EXEC_GROUPS_ENABLED, + _attrs.FLAGS_ATTRS, ) ATTRS = make_attrs()
diff --git a/rules/dex.bzl b/rules/dex.bzl index 9d82101..cb05fd2 100644 --- a/rules/dex.bzl +++ b/rules/dex.bzl
@@ -126,11 +126,11 @@ needs_normalization = not should_optimize_dex, ) java_resource_jar = ctx.actions.declare_file(ctx.label.name + "_files/java_resources.jar") - if ctx.fragments.android.incremental_dexing_shards_after_proguard > 1: + if read_possibly_native_flag(ctx, "experimental_incremental_dexing_after_proguard") > 1: dex_archives, globals_shards = _shard_proguarded_jar_and_dex( ctx, java_resource_jar = java_resource_jar, - num_shards = ctx.fragments.android.incremental_dexing_shards_after_proguard, + num_shards = read_possibly_native_flag(ctx, "experimental_incremental_dexing_after_proguard"), dexopts = toplevel_dexbuilder_dexopts, proguarded_jar = proguarded_jar, min_sdk_version = min_sdk_version, @@ -192,7 +192,7 @@ ctx, output = shards, inputs = dex_archives, - dexopts = _filter_dexopts(dexopts, ctx.fragments.android.get_dexopts_supported_in_dex_sharder), + dexopts = _filter_dexopts(dexopts, read_possibly_native_flag(ctx, "dexopts_supported_in_dexsharder")), inclusion_filter_jar = inclusion_filter_jar, dexsharder = dexsharder, toolchain_type = toolchain_type,
diff --git a/rules/flags/flags.bzl b/rules/flags/flags.bzl index 70f8770..208b898 100644 --- a/rules/flags/flags.bzl +++ b/rules/flags/flags.bzl
@@ -190,27 +190,33 @@ return flags[0][FlagsInfo] _POSSIBLY_NATIVE_FLAGS = { - "desugar_java8_libs": (lambda ctx: ctx.fragments.android.desugar_java8_libs, "starlark"), + "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, - "starlark", + "native", ), "internal_persistent_android_dex_desugar": ( lambda ctx: ctx.fragments.android.persistent_android_dex_desugar, - "starlark", + "native", ), "internal_persistent_busybox_tools": ( lambda ctx: ctx.fragments.android.persistent_busybox_tools, - "starlark", + "native", ), "internal_persistent_multiplex_android_dex_desugar": ( lambda ctx: ctx.fragments.android.persistent_multiplex_android_dex_desugar, - "starlark", + "native", ), "internal_persistent_multiplex_busybox_tools": ( lambda ctx: ctx.fragments.android.persistent_multiplex_busybox_tools, - "starlark", + "native", ), + "experimental_incremental_dexing_after_proguard": (lambda ctx: ctx.fragments.android.incremental_dexing_shards_after_proguard, "native"), + "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_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"), } def read_possibly_native_flag(ctx, flag_name): @@ -247,6 +253,7 @@ # 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 + if flag_name in wrapped_flags: return wrapped_flags[flag_name].value elif hasattr(ctx.fragments, "android"):
diff --git a/rules/resources.bzl b/rules/resources.bzl index 3072d1c..fa4e37a 100644 --- a/rules/resources.bzl +++ b/rules/resources.bzl
@@ -18,6 +18,7 @@ load("//rules:add_constraints.bzl", "add_constraints") load("//rules:min_sdk_version.bzl", _min_sdk_version = "min_sdk_version") 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//rules:common_settings.bzl", "BuildSettingInfo") load(":attrs.bzl", _attrs = "attrs") @@ -1254,7 +1255,7 @@ resources_neverlink = ( neverlink and ( defines_resources or - ctx.fragments.android.fixed_resource_neverlinking + read_possibly_native_flag(ctx, "fixed_resource_neverlinking") ) ) @@ -1931,12 +1932,12 @@ return _ResourcesOptimizeContextInfo(**optimize_ctx) def _is_resource_path_shortening_enabled(ctx): - return ctx.fragments.android.use_android_resource_path_shortening and \ + return read_possibly_native_flag(ctx, "experimental_android_resource_path_shortening") and \ _compilation_mode.get(ctx) == _compilation_mode.OPT and \ not acls.in_android_binary_raw_access_to_resource_paths_allowlist(str(ctx.label)) def _is_resource_name_obfuscation_enabled(ctx, is_resource_shrunk): - return (ctx.fragments.android.use_android_resource_name_obfuscation or + return (read_possibly_native_flag(ctx, "experimental_android_resource_name_obfuscation") or _FEATURE_RESOURCE_NAME_OBFUSCATION in ctx.features) and \ is_resource_shrunk and \ not acls.in_android_binary_resource_name_obfuscation_opt_out_allowlist(str(ctx.label))
diff --git a/test/rules/resources/test.bzl b/test/rules/resources/test.bzl index b4413b0..f85fdf2 100644 --- a/test/rules/resources/test.bzl +++ b/test/rules/resources/test.bzl
@@ -13,6 +13,7 @@ # limitations under the License. """Test rule for resource processing.""" +load("//flags:flags_wrapper.bzl", "WrappedFlagsInfo") load("//providers:providers.bzl", "StarlarkAndroidResourcesInfo") load("//rules:attrs.bzl", "ANDROID_BINARY_ATTRS") load("//rules:common.bzl", _common = "common") @@ -126,6 +127,10 @@ _manifest_merge_order = attr.label( default = "//rules/flags:manifest_merge_order", ), + _wrapped_flags = attr.label( + default = Label("//flags:flags_wrapper"), + providers = [WrappedFlagsInfo], + ), use_xsltproc = attr.bool(default = True), use_instrument_xslt = attr.bool(default = True), ),