Add main-dex-rules to configuration for apps in run_on_as_app

The Signal-Android cannot fit into one dex file when using minSdk < 21
thus the script should look for a main-dex-rules file in the
configuration

Bug: 124403236
Change-Id: Iacd6a5cc1f1c616c548922d873a2678803004163
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index ef72d12..f3cc2eb 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -107,6 +107,7 @@
       'app_module': '',
       'flavor': 'play',
       'git_repo': 'https://github.com/mkj-gram/Signal-Android.git',
+      'main_dex_rules': 'multidex-config.pro',
       'revision': '85e1a10993e5e9ffe923f0798b26cbc44068ba31',
       'releaseTarget': 'assemblePlayRelease',
       'signed-apk-name': 'Signal-play-release-4.32.7.apk',
@@ -353,6 +354,13 @@
 
           # Now rebuild generated apk.
           previous_apk = apk_dest
+
+          # We may need main dex rules when re-compiling with R8 as standalone.
+          main_dex_rules = None
+          if config.get('main_dex_rules'):
+            main_dex_rules = os.path.join(
+                checkout_dir, config.get('main_dex_rules'))
+
           for i in range(1, options.r8_compilation_steps):
             try:
               recompiled_apk_dest = os.path.join(
@@ -360,7 +368,7 @@
               RebuildAppWithShrinker(
                   app, previous_apk, recompiled_apk_dest,
                   ext_proguard_config_file, shrinker, min_sdk, compile_sdk,
-                  options, temp_dir)
+                  options, temp_dir, main_dex_rules)
               recompilation_result = {
                 'apk_dest': recompiled_apk_dest,
                 'build_status': 'success',
@@ -483,7 +491,7 @@
 
 def RebuildAppWithShrinker(
     app, apk, apk_dest, proguard_config_file, shrinker, min_sdk, compile_sdk,
-    options, temp_dir):
+    options, temp_dir, main_dex_rules):
   assert 'r8' in shrinker
   assert apk_dest.endswith('.apk')
 
@@ -507,6 +515,10 @@
     cmd.append('--lib')
     cmd.append(android_optional_jar)
 
+  if main_dex_rules:
+    cmd.append('--main-dex-rules')
+    cmd.append(main_dex_rules)
+
   utils.RunCmd(cmd, quiet=options.quiet)
 
   # Make a copy of the given APK, move the newly generated dex files into the