Remove validation that checks for minSdkVersion 21+ when native multidex is enabled

PiperOrigin-RevId: 644419565
Change-Id: I617ab8fa2a09d1e2b24b907cb9d9630f4d1e0444
diff --git a/rules/acls.bzl b/rules/acls.bzl
index 19d723d..58f9766 100644
--- a/rules/acls.bzl
+++ b/rules/acls.bzl
@@ -53,7 +53,6 @@
 load("//rules/acls:android_library_use_aosp_aidl_compiler.bzl", "ANDROID_LIBRARY_USE_AOSP_AIDL_COMPILER_ALLOWLIST")
 load("//rules/acls:android_lint_checks_rollout.bzl", "ANDROID_LINT_CHECKS_FALLBACK", "ANDROID_LINT_CHECKS_ROLLOUT")
 load("//rules/acls:android_lint_rollout.bzl", "ANDROID_LINT_FALLBACK", "ANDROID_LINT_ROLLOUT")
-load("//rules/acls:android_multidex_native_min_sdk_allowlist.bzl", "ANDROID_MULTIDEX_NATIVE_MIN_SDK_ALLOWLIST")
 load("//rules/acls:android_test_lockdown.bzl", "ANDROID_TEST_LOCKDOWN_GENERATOR_FUNCTIONS", "ANDROID_TEST_LOCKDOWN_TARGETS")
 load("//rules/acls:b122039567.bzl", "B122039567")
 load("//rules/acls:baseline_profiles_optimizer_integration.bzl", "BASELINE_PROFILES_OPTIMIZER_INTEGRATION", "BASELINE_PROFILES_OPTIMIZER_INTEGRATION_FALLBACK")
@@ -198,9 +197,6 @@
 def _in_android_binary_starlark_rollout(fqn):
     return matches(fqn, ANDROID_BINARY_STARLARK_ROLLOUT_DICT) and not matches(fqn, ANDROID_BINARY_STARLARK_FALLBACK_DICT)
 
-def _in_android_binary_multidex_native_min_sdk_allowlist(fqn):
-    return matches(fqn, ANDROID_MULTIDEX_NATIVE_MIN_SDK_ALLOWLIST_DICT)
-
 def _in_disable_optimizing_dexer(fqn):
     return matches(fqn, DISABLE_OPTIMIZING_DEXER_DICT)
 
@@ -268,7 +264,6 @@
 USE_R8_DICT = make_dict(USE_R8)
 ANDROID_BINARY_STARLARK_ROLLOUT_DICT = make_dict(ANDROID_BINARY_STARLARK_ROLLOUT)
 ANDROID_BINARY_STARLARK_FALLBACK_DICT = make_dict(ANDROID_BINARY_STARLARK_FALLBACK)
-ANDROID_MULTIDEX_NATIVE_MIN_SDK_ALLOWLIST_DICT = make_dict(ANDROID_MULTIDEX_NATIVE_MIN_SDK_ALLOWLIST)
 DISABLE_OPTIMIZING_DEXER_DICT = make_dict(DISABLE_OPTIMIZING_DEXER)
 
 def matches(fqn, dct):
@@ -360,7 +355,6 @@
     in_android_binary_resource_name_obfuscation_opt_out_allowlist = _in_android_binary_resource_name_obfuscation_opt_out_allowlist,
     in_allow_proguard_apply_mapping = _in_allow_proguard_apply_mapping,
     in_android_binary_starlark_rollout = _in_android_binary_starlark_rollout,
-    in_android_binary_multidex_native_min_sdk_allowlist = _in_android_binary_multidex_native_min_sdk_allowlist,
     use_r8 = _use_r8,
     in_disable_optimizing_dexer = _in_disable_optimizing_dexer,
 )
diff --git a/rules/android_binary_internal/impl.bzl b/rules/android_binary_internal/impl.bzl
index 43ac1d4..0f2c054 100644
--- a/rules/android_binary_internal/impl.bzl
+++ b/rules/android_binary_internal/impl.bzl
@@ -139,9 +139,6 @@
         manifest_validation_output = _resources.validate_manifest(
             ctx,
             manifest = packaged_resources_ctx.processed_manifest,
-            should_validate_multidex =
-                ctx.attr.multidex == "native" and
-                not acls.in_android_binary_multidex_native_min_sdk_allowlist(str(ctx.label)),
             min_sdk_version = ctx.attr.min_sdk_version,
             manifest_validation_tool = get_android_toolchain(ctx).manifest_validation_tool.files_to_run,
             toolchain_type = ANDROID_TOOLCHAIN_TYPE,
diff --git a/rules/resources.bzl b/rules/resources.bzl
index e35ba61..b0c413a 100644
--- a/rules/resources.bzl
+++ b/rules/resources.bzl
@@ -1236,7 +1236,6 @@
 def _validate_manifest(
         ctx,
         manifest,
-        should_validate_multidex = True,
         min_sdk_version = 0,
         manifest_validation_tool = None,
         toolchain_type = None):
@@ -1245,14 +1244,13 @@
     Args:
       ctx: The rules context.
       manifest: File. The AndroidManifest.xml file.
-      should_validate_multidex: Boolean. Whether to validate minSdkVersion for multidex.
       min_sdk_version: Int. The expected minSdkVersion value in the manifest.
       manifest_validation_tool: FilesToRunProvider. The manifest validation tool executable.
       toolchain_type: The Android Toolchain.
     Returns:
       A file containing the log of validation results, or None if validation not performed.
     """
-    if (not should_validate_multidex and min_sdk_version <= 0) or not manifest_validation_tool:
+    if (min_sdk_version <= 0) or not manifest_validation_tool:
         return None
 
     output = ctx.actions.declare_file(ctx.label.name + "_manifest_validation_output")
@@ -1260,7 +1258,6 @@
     args = ctx.actions.args()
     args.add("--manifest", manifest)
     args.add("--output", output)
-    args.add("--validate_multidex=%s" % should_validate_multidex)
     args.add("--expected_min_sdk_version", min_sdk_version)
 
     ctx.actions.run(
diff --git a/src/validations/validate_manifest/validate_manifest.py b/src/validations/validate_manifest/validate_manifest.py
index 41bc61b..d3f2c6d 100644
--- a/src/validations/validate_manifest/validate_manifest.py
+++ b/src/validations/validate_manifest/validate_manifest.py
@@ -23,15 +23,11 @@
                                 'Path to manifest.xml to validate.')
 _OUTPUT = flags.DEFINE_string('output', None,
                               'Output file for validation action.')
-_VALIDATE_MULTIDEX_MINSDK = flags.DEFINE_boolean(
-    'validate_multidex', True, 'Whether to validate minSdkVersion for multidex')
 _EXPECTED_MIN_SDK = flags.DEFINE_integer('expected_min_sdk_version', 0,
                                          'Expected minSdkVersion in manifest.')
 
 _MIN_SDK_VERSION = 'android:minSdkVersion'
 
-_LOLLIPOP_SDK_VERSION = 21
-
 
 def _GetMinSdkVersion(manifest):
   dom = xml.dom.minidom.parseString(manifest)
@@ -47,44 +43,19 @@
     return None
 
 
-def ValidateManifestMinSdkVersionForNativeMultidex(manifest):
-  """Validates that an Android manifest's minSdkVersion supports native multidex.
-
-  Args:
-    manifest: the XML manifest of the main APK as a string
-
-  Returns:
-    The reason the manifest is invalid, or None.
-  """
-
-  min_sdk_version = _GetMinSdkVersion(manifest)
-  if not min_sdk_version:
-    return """
-Enabling multidex='native' is only supported on SDK version %d and newer; minSdkVersion is not set and defaults to 1.
-
-Use multidex='legacy' instead if support for earlier SDK versions is required
-
-""" % (_LOLLIPOP_SDK_VERSION)
-  min_sdk_version = _TryParseInt(min_sdk_version)
-  if not min_sdk_version:
-    return None
-  if min_sdk_version < _LOLLIPOP_SDK_VERSION:
-    return """
-Enabling multidex='native' is only supported on SDK version %d and newer; minSdkVersion is set to %d.
-
-Use multidex='legacy' instead if support for earlier SDK versions is required
-
-""" % (_LOLLIPOP_SDK_VERSION, min_sdk_version)
-  return None
-
-
 def ValidateManifestMinSdk(manifest, expected_min_sdk):
-  min_sdk_version = _TryParseInt(_GetMinSdkVersion(manifest))
+  min_sdk_version_string = _GetMinSdkVersion(manifest)
+  if not min_sdk_version_string:
+    return """
+Expected manifest minSdkVersion of %s but no minSdkVersion was set
+
+""" % expected_min_sdk
+  min_sdk_version = _TryParseInt(min_sdk_version_string)
   if min_sdk_version != expected_min_sdk:
     return """
- Expected manifest minSdkVersion of %s but got %s
+Expected manifest minSdkVersion of %s but got %s
 
- """ % (expected_min_sdk, min_sdk_version)
+""" % (expected_min_sdk, min_sdk_version)
 
 
 def main(argv):
@@ -94,12 +65,6 @@
   with open(_MANIFEST.value, 'rb') as manifest_file:
     manifest = manifest_file.read()
 
-  if _VALIDATE_MULTIDEX_MINSDK.value:
-    error = ValidateManifestMinSdkVersionForNativeMultidex(manifest)
-    if error:
-      sys.stderr.write(error)
-      sys.exit(1)
-
   if _EXPECTED_MIN_SDK.value:
     error = ValidateManifestMinSdk(manifest, _EXPECTED_MIN_SDK.value)
     if error:
diff --git a/src/validations/validate_manifest/validate_manifest_test.py b/src/validations/validate_manifest/validate_manifest_test.py
index c72997f..7540d92 100644
--- a/src/validations/validate_manifest/validate_manifest_test.py
+++ b/src/validations/validate_manifest/validate_manifest_test.py
@@ -36,15 +36,6 @@
 </manifest>
 """
 
-MANIFEST_NO_USES_SDK = """<?xml version='1.0' encoding='utf-8'?>
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.google.android.apps.testapp"
-    android:versionCode="70"
-    android:versionName="1.0">
-</manifest>
-"""
-
 BAD_MANIFEST = """<?xml version='1.0' encoding='utf-8'?>
 <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
@@ -56,9 +47,18 @@
 """
 
 NO_MIN_SDK_ERROR = """
-Enabling multidex='native' is only supported on SDK version 21 and newer; minSdkVersion is not set and defaults to 1.
+Expected manifest minSdkVersion of 21 but no minSdkVersion was set
 
-Use multidex='legacy' instead if support for earlier SDK versions is required
+"""
+
+
+MIN_SDK_TOO_LOW_ERROR = """
+Expected manifest minSdkVersion of 21 but got 10
+
+"""
+
+MIN_SDK_BAD_ERROR = """
+Expected manifest minSdkVersion of 21 but got None
 
 """
 
@@ -67,27 +67,27 @@
 
   def test_no_min_sdk(self):
     self.assertEqual(
-        validate_manifest.ValidateManifestMinSdkVersionForNativeMultidex(
-            MANIFEST_NO_MIN_SDK), NO_MIN_SDK_ERROR)
+        validate_manifest.ValidateManifestMinSdk(MANIFEST_NO_MIN_SDK, 21),
+        NO_MIN_SDK_ERROR,
+    )
+
+  def test_too_low_min_sdk(self):
     self.assertEqual(
-        validate_manifest.ValidateManifestMinSdkVersionForNativeMultidex(
-            MANIFEST_NO_USES_SDK), NO_MIN_SDK_ERROR)
+        validate_manifest.ValidateManifestMinSdk(MANIFEST, 21),
+        MIN_SDK_TOO_LOW_ERROR,
+    )
 
-  def test_give_me_a_name(self):
+  def test_bad_min_sdk(self):
     self.assertEqual(
-        validate_manifest.ValidateManifestMinSdkVersionForNativeMultidex(
-            MANIFEST), """
-Enabling multidex='native' is only supported on SDK version 21 and newer; minSdkVersion is set to 10.
-
-Use multidex='legacy' instead if support for earlier SDK versions is required
-
-""")
+        validate_manifest.ValidateManifestMinSdk(BAD_MANIFEST, 21),
+        MIN_SDK_BAD_ERROR,
+    )
 
   def test_negative(self):
     self.assertIsNone(
-        validate_manifest.ValidateManifestMinSdkVersionForNativeMultidex(
-            BAD_MANIFEST), None)
+        validate_manifest.ValidateManifestMinSdk(MANIFEST, 10), None
+    )
 
 
-if __name__ == '__main__':
+if __name__ == "__main__":
   unittest.main()