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