Commit 14b8ebf3 authored by Sam Maier's avatar Sam Maier Committed by Commit Bot

Providing min-sdk to Proguard

We had upstreamed min-sdk so that R8 could use it, but Proguard was forgotten.
This adds min-sdk support for Proguard.

Bug: 950918
Change-Id: I46aeb63ed89abcb2e384f874d3dbc1d43093884d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1559579
Commit-Queue: Sam Maier <smaier@chromium.org>
Commit-Queue: Andrew Grieve <agrieve@chromium.org>
Auto-Submit: Sam Maier <smaier@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#649230}
parent fd581356
...@@ -82,8 +82,6 @@ def _ParseOptions(args): ...@@ -82,8 +82,6 @@ def _ParseOptions(args):
assert not options.main_dex_rules_path or options.r8_path, \ assert not options.main_dex_rules_path or options.r8_path, \
'R8 must be enabled to pass main dex rules.' 'R8 must be enabled to pass main dex rules.'
assert not options.min_api or options.r8_path, \
'R8 must be enabled to pass min api.'
classpath = [] classpath = []
for arg in options.classpath: for arg in options.classpath:
...@@ -261,6 +259,7 @@ def main(args): ...@@ -261,6 +259,7 @@ def main(args):
proguard.mapping_output(options.mapping_output) proguard.mapping_output(options.mapping_output)
proguard.libraryjars(libraries) proguard.libraryjars(libraries)
proguard.verbose(options.verbose) proguard.verbose(options.verbose)
proguard.min_api(options.min_api)
# Do not consider the temp file as an input since its name is random. # Do not consider the temp file as an input since its name is random.
input_paths = proguard.GetInputs() input_paths = proguard.GetInputs()
......
...@@ -53,6 +53,7 @@ class ProguardCmdBuilder(object): ...@@ -53,6 +53,7 @@ class ProguardCmdBuilder(object):
self._outjar = None self._outjar = None
self._mapping_output = None self._mapping_output = None
self._verbose = False self._verbose = False
self._min_api = None
self._disabled_optimizations = [] self._disabled_optimizations = []
def outjar(self, path): def outjar(self, path):
...@@ -93,6 +94,10 @@ class ProguardCmdBuilder(object): ...@@ -93,6 +94,10 @@ class ProguardCmdBuilder(object):
def verbose(self, verbose): def verbose(self, verbose):
self._verbose = verbose self._verbose = verbose
def min_api(self, min_api):
assert self._min_api is None
self._min_api = min_api
def disable_optimizations(self, optimizations): def disable_optimizations(self, optimizations):
self._disabled_optimizations += optimizations self._disabled_optimizations += optimizations
...@@ -111,6 +116,13 @@ class ProguardCmdBuilder(object): ...@@ -111,6 +116,13 @@ class ProguardCmdBuilder(object):
if self._libraries: if self._libraries:
cmd += ['-libraryjars', ':'.join(self._libraries)] cmd += ['-libraryjars', ':'.join(self._libraries)]
if self._min_api:
cmd += [
'-assumevalues class android.os.Build$VERSION {' +
' public static final int SDK_INT return ' + self._min_api +
'..9999; }'
]
for optimization in self._disabled_optimizations: for optimization in self._disabled_optimizations:
cmd += [ '-optimizations', '!' + optimization ] cmd += [ '-optimizations', '!' + optimization ]
......
...@@ -1224,7 +1224,7 @@ if (enable_java_templates) { ...@@ -1224,7 +1224,7 @@ if (enable_java_templates) {
] ]
} }
if (_proguarding_with_r8 && defined(invoker.min_sdk_version)) { if (defined(invoker.min_sdk_version)) {
args += [ args += [
"--min-api", "--min-api",
"${invoker.min_sdk_version}", "${invoker.min_sdk_version}",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment