Prepare scripts for major/minor API levels
For third_party/android_jar keep the current name scheme for
minor version 0, e.g.:
third_party/android_jar/lib-v36
For other minor versions add the minor version, e.g.:
third_party/android_jar/lib-v36.1
Change-Id: Ib06e0d7d551049ae10bc229a01c2cfbe62ff582e
diff --git a/tools/add-android-sdk.py b/tools/add-android-sdk.py
index 2eff289..5b127e6 100755
--- a/tools/add-android-sdk.py
+++ b/tools/add-android-sdk.py
@@ -64,15 +64,23 @@
print('Path %s does not exist' % source)
sys.exit(1)
- api_level = -1
+ api_level = args.api_level if args.api_level else args.sdk_name
+ api_level_major = -1
+ api_level_minor = 0
try:
- api_level = int(args.api_level if args.api_level else args.sdk_name)
- except:
- print('API level "%s" must be an integer'
- % (args.api_level if args.api_level else args.sdk_name))
- sys.exit(1)
+ api_level_parts = api_level.split('.')
+ if len(api_level_parts) > 2:
+ print('API level "%s" must be minor[.major]' % api_level)
+ return -1
- destination = utils.get_android_jar_dir(api_level)
+ api_level_major = int(api_level_parts[0])
+ if len(api_level_parts) == 2:
+ api_level_minor = int(api_level_parts[1])
+ except:
+ print('API level "%s" must be minor[.major]' % api_level)
+ return -1
+
+ destination = utils.get_android_jar_dir(api_level_major, api_level_minor)
# Remove existing if present.
shutil.rmtree(destination, ignore_errors=True)
@@ -103,5 +111,6 @@
print('Run main method in AndroidApiHashingDatabaseBuilderGeneratorTest'
' to generate the API database.')
+
if __name__ == '__main__':
sys.exit(main())
diff --git a/tools/build_sample_apk.py b/tools/build_sample_apk.py
index 0d577d4..e6adfcf 100755
--- a/tools/build_sample_apk.py
+++ b/tools/build_sample_apk.py
@@ -134,7 +134,7 @@
with utils.ChangedWorkingDirectory(get_sample_dir(app)):
args = [
'package', '-v', '-f', '-I',
- utils.get_android_jar(api), '-M', 'AndroidManifest.xml', '-A',
+ utils.get_android_jar(api, 0), '-M', 'AndroidManifest.xml', '-A',
'assets', '-S', 'res', '-m', '-J',
get_gen_path(app), '-F',
os.path.join(get_bin_path(app), 'resources.ap_'), '-G',
@@ -147,7 +147,7 @@
with utils.ChangedWorkingDirectory(get_sample_dir(app)):
args = [
'package', '-v', '-f', '-I',
- utils.get_android_jar(api), '-M',
+ utils.get_android_jar(api, 0), '-M',
'split_manifest/AndroidManifest.xml', '-S', 'res', '-F',
os.path.join(get_bin_path(app), 'split_resources.ap_')
]
@@ -157,7 +157,7 @@
def compile_with_javac(api, app):
with utils.ChangedWorkingDirectory(get_sample_dir(app)):
files = glob.glob(SRC_LOCATION.format(app=app))
- classpath = '%s:%s' % (utils.get_android_jar(api), get_guava_jar())
+ classpath = '%s:%s' % (utils.get_android_jar(api, 0), get_guava_jar())
command = [
DEFAULT_JAVAC, '-classpath', classpath, '-sourcepath',
'%s:%s:%s' %
@@ -177,7 +177,7 @@
command = [
DEFAULT_D8, '--', '--output',
get_bin_path(app), '--classpath',
- utils.get_android_jar(api), '--min-api',
+ utils.get_android_jar(api, 0), '--min-api',
str(api)
]
command.extend(files)
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index d90ea42..a6ee272 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -318,7 +318,7 @@
jdk.GetJavaExecutable(), '-cp', utils.R8_JAR,
'com.android.tools.r8.ir.desugar.desugaredlibrary.lint.GenerateDesugaredLibraryLintFiles',
configuration, implementation, lint_dir,
- utils.get_android_jar(34)
+ utils.get_android_jar(34, 0)
]
utils.PrintCmd(cmd)
subprocess.check_call(cmd)
@@ -336,7 +336,7 @@
jdk.GetJavaExecutable(), '-cp', utils.R8_JAR,
'com.android.tools.r8.ir.desugar.desugaredlibrary.specificationconversion.DesugaredLibraryConverter',
configuration, implementation, conversions,
- utils.get_android_jar(33), machine_configuration
+ utils.get_android_jar(33, 0), machine_configuration
]
subprocess.check_call(cmd)
diff --git a/tools/nest_data.py b/tools/nest_data.py
index bb9d709..54bc24f 100644
--- a/tools/nest_data.py
+++ b/tools/nest_data.py
@@ -12,7 +12,7 @@
# 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 nest version separately.
-ANDROID_JAR = utils.get_android_jar(25)
+ANDROID_JAR = utils.get_android_jar(25, 0)
VERSIONS = {
'20180926': {
diff --git a/tools/r8.py b/tools/r8.py
index a6bf42e..9b27fb5 100755
--- a/tools/r8.py
+++ b/tools/r8.py
@@ -56,7 +56,7 @@
(options, args) = ParseOptions(sys.argv)
r8_args = args[1:]
if options.lib_android:
- r8_args.extend(['--lib', utils.get_android_jar(options.lib_android)])
+ r8_args.extend(['--lib', utils.get_android_jar(options.lib_android, 0)])
if options.lib_rt:
r8_args.extend(['--lib', utils.RT_JAR])
time_consumer = lambda duration: print_duration(duration, options)
diff --git a/tools/run_kotlin_benchmarks.py b/tools/run_kotlin_benchmarks.py
index f7befb3..61d00b7 100755
--- a/tools/run_kotlin_benchmarks.py
+++ b/tools/run_kotlin_benchmarks.py
@@ -95,7 +95,7 @@
benchmark_jar = get_jar_for_benchmark(options.benchmark)
r8_args = [
'--lib',
- utils.get_android_jar(26), # Only works with api 26
+ utils.get_android_jar(26, 0), # Only works with api 26
'--output',
dex_path,
'--pg-conf',
diff --git a/tools/toolhelper.py b/tools/toolhelper.py
index 15fa557..6eca2e8 100644
--- a/tools/toolhelper.py
+++ b/tools/toolhelper.py
@@ -113,7 +113,7 @@
args = []
for arg in input_args:
if arg == '--lib-android':
- lib = utils.get_android_jar(28)
+ lib = utils.get_android_jar(28, 0)
elif arg == '--lib-java':
lib = utils.RT_JAR
else:
diff --git a/tools/utils.py b/tools/utils.py
index 0354cd9..4e6044a 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -724,13 +724,22 @@
if m is not None:
raise Exception("Do not use google JVM for benchmarking: " + version)
+def api_str(api_level_major, api_level_minor):
+ api = str(api_level_major)
+ if api_level_minor > 0:
+ api = api + '.' + str(api_level_minor)
+ return api
-def get_android_jar_dir(api):
- return os.path.join(REPO_ROOT, ANDROID_JAR_DIR.format(api=api))
+def get_android_jar_dir(api_level_major, api_level_minor):
+ return os.path.join(
+ REPO_ROOT,
+ ANDROID_JAR_DIR.format(api=api_str(api_level_major, api_level_minor)))
-def get_android_jar(api):
- return os.path.join(REPO_ROOT, ANDROID_JAR.format(api=api))
+def get_android_jar(api_level_major, api_level_minor):
+ return os.path.join(
+ REPO_ROOT,
+ ANDROID_JAR.format(api=api_str(api_level_major, api_level_minor)))
def is_bot():