Update script to run R8/D8 on prebuild applications
Rename tools/run_r8_on_app.py to tools/run_on_app.py and add the --compiler
option to support both R8 and D8.
Cleanup of tools/gmail_data.py.
Change-Id: Ic258f563c228bdae717cd4213678f2dbf13b8c13
diff --git a/tools/gmail_data.py b/tools/gmail_data.py
index ab1e6b4..d09a3e8 100644
--- a/tools/gmail_data.py
+++ b/tools/gmail_data.py
@@ -12,8 +12,7 @@
V170604_16_BASE = os.path.join(BASE, 'gmail_android_170604.16')
V170604_16_PREFIX = os.path.join(V170604_16_BASE, 'Gmail_release_unstripped')
-# NOTE: we always use android.jar for SDK v25, later we might want to revise it
-# to use proper android.jar version for each of youtube version separately.
+# NOTE: We always use android.jar for SDK v25 for now.
ANDROID_JAR = os.path.join(THIRD_PARTY, 'android_jar', 'lib-v25', 'android.jar')
VERSIONS = {
@@ -21,13 +20,12 @@
'dex' : {
'inputs': [os.path.join(V170604_16_BASE, 'Gmail_release_unsigned.apk')],
'pgmap': '%s_proguard.map' % V170604_16_PREFIX,
- 'libraries' : [ANDROID_JAR, '/usr/local/buildtools/java/jdk-64/jre/lib/rt.jar'],
+ 'libraries' : [ANDROID_JAR],
'r8-flags': '--ignore-missing-classes',
},
'deploy' : {
'inputs': ['%s_deploy.jar' % V170604_16_PREFIX],
- 'pgconf': ['%s_proguard.config' % V170604_16_PREFIX,
- '%s/proguardsettings/YouTubeRelease_proguard.config' % THIRD_PARTY],
+ 'pgconf': ['%s_proguard.config' % V170604_16_PREFIX],
},
'proguarded' : {
'inputs': ['%s_proguard.jar' % V170604_16_PREFIX],
diff --git a/tools/run-r8-on-gmscore.py b/tools/run-r8-on-gmscore.py
index c00a58d..6d09760 100755
--- a/tools/run-r8-on-gmscore.py
+++ b/tools/run-r8-on-gmscore.py
@@ -5,7 +5,8 @@
import sys
-import run_r8_on_app
+import run_on_app
if __name__ == '__main__':
- sys.exit(run_r8_on_app.main())
+ # Default compiler is R8.
+ sys.exit(run_on_app.main())
diff --git a/tools/run_r8_on_app.py b/tools/run_on_app.py
similarity index 77%
rename from tools/run_r8_on_app.py
rename to tools/run_on_app.py
index 19696bb..966f786 100755
--- a/tools/run_r8_on_app.py
+++ b/tools/run_on_app.py
@@ -6,6 +6,7 @@
import optparse
import os
import r8
+import d8
import sys
import gmscore_data
@@ -17,6 +18,10 @@
def ParseOptions():
result = optparse.OptionParser()
+ result.add_option('--compiler',
+ help='',
+ default='r8',
+ choices=['d8', 'r8'])
result.add_option('--app',
help='',
default='gmscore',
@@ -89,18 +94,21 @@
return 1
values = version[options.type]
inputs = None
- # For 'deploy' the JAR is located using the Proguard configuration -injars option.
- if 'inputs' in values and options.type != 'deploy':
+ # For R8 'deploy' the JAR is located using the Proguard configuration -injars option.
+ if 'inputs' in values and (options.compiler != 'r8' or options.type != 'deploy'):
inputs = values['inputs']
args.extend(['--output', outdir])
- if 'pgmap' in values:
- args.extend(['--pg-map', values['pgmap']])
- if 'pgconf' in values and not options.k:
- for pgconf in values['pgconf']:
- args.extend(['--pg-conf', pgconf])
- if options.k:
- args.extend(['--pg-conf', options.k])
+
+ if options.compiler == 'r8':
+ if 'pgmap' in values:
+ args.extend(['--pg-map', values['pgmap']])
+ if 'pgconf' in values and not options.k:
+ for pgconf in values['pgconf']:
+ args.extend(['--pg-conf', pgconf])
+ if options.k:
+ args.extend(['--pg-conf', options.k])
+
if not options.no_libraries and 'libraries' in values:
for lib in values['libraries']:
args.extend(['--lib', lib])
@@ -108,10 +116,11 @@
if not outdir.endswith('.zip') and not outdir.endswith('.jar') and not os.path.exists(outdir):
os.makedirs(outdir)
- if 'r8-flags' in values:
- args.extend(values['r8-flags'].split(' '))
- if options.r8_flags:
- args.extend(options.r8_flags.split(' '))
+ if options.compiler == 'r8':
+ if 'r8-flags' in values:
+ args.extend(values['r8-flags'].split(' '))
+ if options.r8_flags:
+ args.extend(options.r8_flags.split(' '))
if inputs:
args.extend(inputs)
@@ -120,8 +129,12 @@
with open(options.dump_args_file, 'w') as args_file:
args_file.writelines([arg + os.linesep for arg in args])
else:
- r8.run(args, not options.no_build, not options.no_debug, options.profile,
- options.track_memory_to_file)
+ if options.compiler == 'd8':
+ d8.run(args, not options.no_build, not options.no_debug, options.profile,
+ options.track_memory_to_file)
+ else:
+ r8.run(args, not options.no_build, not options.no_debug, options.profile,
+ options.track_memory_to_file)
if __name__ == '__main__':
sys.exit(main())