Pass optional android jars to recompilation
Bug: 123150326
Change-Id: I33ffef7bce211232e447a4fb1c32a2446f4b9ccb
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index e9b2dcd..fcd0a76 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -433,9 +433,7 @@
assert apk_dest.endswith('.apk')
# Compile given APK with shrinker to temporary zip file.
- android_jar = os.path.join(
- utils.REPO_ROOT,
- utils.ANDROID_JAR.format(api=compile_sdk))
+ android_jar = utils.get_android_jar(compile_sdk)
r8_jar = utils.R8LIB_JAR if IsMinifiedR8(shrinker) else utils.R8_JAR
zip_dest = apk_dest[:-4] + '.zip'
@@ -446,6 +444,11 @@
cmd = ['java', '-ea:com.android.tools.r8...', '-cp', r8_jar, entry_point,
'--release', '--min-api', str(min_sdk), '--pg-conf', proguard_config_file,
'--lib', android_jar, '--output', zip_dest, apk]
+
+ for android_optional_jar in utils.get_android_optional_jars(compile_sdk):
+ cmd.append('--lib')
+ cmd.append(android_optional_jar)
+
utils.PrintCmd(cmd)
subprocess.check_output(cmd)
diff --git a/tools/utils.py b/tools/utils.py
index f8b4469..72febdc 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -13,7 +13,8 @@
import tarfile
import tempfile
-ANDROID_JAR = 'third_party/android_jar/lib-v{api}/android.jar'
+ANDROID_JAR_DIR = 'third_party/android_jar/lib-v{api}'
+ANDROID_JAR = os.path.join(ANDROID_JAR_DIR, 'android.jar')
TOOLS_DIR = os.path.abspath(os.path.normpath(os.path.join(__file__, '..')))
REPO_ROOT = os.path.realpath(os.path.join(TOOLS_DIR, '..'))
THIRD_PARTY = os.path.join(REPO_ROOT, 'third_party')
@@ -308,8 +309,23 @@
if m is not None:
raise Exception("Do not use google JVM for benchmarking: " + version)
+def get_android_jar_dir(api):
+ return os.path.join(REPO_ROOT, ANDROID_JAR_DIR.format(api=api))
+
def get_android_jar(api):
return os.path.join(REPO_ROOT, ANDROID_JAR.format(api=api))
+def get_android_optional_jars(api):
+ android_optional_jars_dir = os.path.join(get_android_jar_dir(api), 'optional')
+ android_optional_jars = [
+ os.path.join(android_optional_jars_dir, 'android.test.base.jar'),
+ os.path.join(android_optional_jars_dir, 'android.test.mock.jar'),
+ os.path.join(android_optional_jars_dir, 'android.test.runner.jar'),
+ os.path.join(android_optional_jars_dir, 'org.apache.http.legacy.jar')
+ ]
+ return [
+ android_optional_jar for android_optional_jar in android_optional_jars
+ if os.path.isfile(android_optional_jar)]
+
def is_bot():
return 'BUILDBOT_BUILDERNAME' in os.environ