Re-add nolib shrinkers
Change-Id: I750130fa7ed20cd79396a39566fdcb411e62c232
diff --git a/tools/as_utils.py b/tools/as_utils.py
index a5cc24d..7a6528a 100644
--- a/tools/as_utils.py
+++ b/tools/as_utils.py
@@ -10,7 +10,7 @@
import utils
-def add_r8_dependency(checkout_dir, temp_dir):
+def add_r8_dependency(checkout_dir, temp_dir, minified):
build_file = os.path.join(checkout_dir, 'build.gradle')
assert os.path.isfile(build_file), (
'Expected a file to be present at {}'.format(build_file))
@@ -36,7 +36,7 @@
elif 'com.android.tools.build:gradle:' in stripped:
gradle_version = stripped[stripped.rindex(':')+1:-1]
indent = ''.ljust(line.index('classpath'))
- jar = os.path.join(temp_dir, 'r8lib.jar')
+ jar = os.path.join(temp_dir, 'r8lib.jar' if minified else 'r8.jar')
f.write('{}classpath files(\'{}\')\n'.format(indent, jar))
added_r8_dependency = True
elif stripped == '}':
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index f1948db..78ec384 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -17,7 +17,7 @@
import as_utils
-SHRINKERS = ['r8', 'r8-full', 'pg']
+SHRINKERS = ['r8', 'r8-full', 'r8-nolib', 'r8-nolib-full', 'pg']
WORKING_DIR = os.path.join(utils.BUILD, 'opensource_apps')
if ('R8_BENCHMARK_DIR' in os.environ
@@ -184,6 +184,9 @@
utils.PrintCmd(cmd, quiet=options.quiet)
return '~~R8' in subprocess.check_output(cmd).strip()
+def IsMinifiedR8(shrinker):
+ return 'nolib' not in shrinker
+
def IsTrackedByGit(file):
return subprocess.check_output(['git', 'ls-files', file]).strip() != ''
@@ -390,7 +393,7 @@
' for recompilation' if keepRuleSynthesisForRecompilation else ''))
# Add 'r8.jar' from top-level build.gradle.
- as_utils.add_r8_dependency(checkout_dir, temp_dir)
+ as_utils.add_r8_dependency(checkout_dir, temp_dir, IsMinifiedR8(shrinker))
app_module = config.get('app_module', 'app')
archives_base_name = config.get('archives_base_name', app_module)
@@ -417,7 +420,7 @@
# Value for property android.enableR8.
enableR8 = 'r8' in shrinker
# Value for property android.enableR8.fullMode.
- enableR8FullMode = shrinker == 'r8-full'
+ enableR8FullMode = shrinker == 'r8-full' or shrinker == 'r8-nolib-full'
# Build gradlew command line.
cmd = ['./gradlew', '--no-daemon', 'clean', releaseTarget,
'--profile', '--stacktrace',
@@ -481,7 +484,8 @@
# Compile given APK with shrinker to temporary zip file.
android_jar = utils.get_android_jar(compile_sdk)
- r8_jar = os.path.join(temp_dir, 'r8lib.jar')
+ r8_jar = os.path.join(
+ temp_dir, 'r8lib.jar' if IsMinifiedR8(shrinker) else 'r8.jar')
zip_dest = apk_dest[:-4] + '.zip'
# TODO(christofferqa): Entry point should be CompatProguard if the shrinker
@@ -719,12 +723,14 @@
with utils.TempDir() as temp_dir:
if not options.no_build or options.golem:
- gradle.RunGradle(['r8lib'])
+ gradle.RunGradle(['r8', 'r8lib'])
+ assert os.path.isfile(utils.R8_JAR), 'Cannot build without r8.jar'
assert os.path.isfile(utils.R8LIB_JAR), 'Cannot build without r8lib.jar'
- # Make a copy of r8lib.jar such that it stay the same for the entire
- # execution of this script.
+ # Make a copy of r8.jar and r8lib.jar such that they stay the same for
+ # the entire execution of this script.
+ shutil.copyfile(utils.R8_JAR, os.path.join(temp_dir, 'r8.jar'))
shutil.copyfile(utils.R8LIB_JAR, os.path.join(temp_dir, 'r8lib.jar'))
result_per_shrinker_per_app = {}