Skip to content

Commit 2985c25

Browse files
snazhmudinovcopybara-github
authored andcommitted
Merge #450 by snazhmudinov: Fix R8 processor to read minSdkVersion from manifest_values
We calculating the minSdkVersion we need take into account ALL the possible ways that value can be passed. So the idea here is to take max value from `floor`, `min_sdk_version` attribute and `manifest_values["minSdkVersion"]`. Closes #450 COPYBARA_INTEGRATE_REVIEW=#450 from snazhmudinov:r8-min-sdk e4e053d PiperOrigin-RevId: 861349956 Change-Id: I44246c89092a6d64e53157b386d730a3069048e7
1 parent f1e0382 commit 2985c25

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

rules/android_binary/r8.bzl

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ load("//rules:acls.bzl", "acls")
1818
load("//rules:android_neverlink_aspect.bzl", "StarlarkAndroidNeverlinkInfo")
1919
load("//rules:common.bzl", "common")
2020
load("//rules:java.bzl", "java")
21+
load("//rules:min_sdk_version.bzl", "min_sdk_version")
2122
load(
2223
"//rules:processing_pipeline.bzl",
2324
"ProviderInfo",
@@ -80,15 +81,26 @@ def process_r8(ctx, validation_ctx, jvm_ctx, packaged_resources_ctx, build_info_
8081

8182
android_jar = get_android_sdk(ctx).android_jar
8283
proguard_specs = proguard.get_proguard_specs(ctx, packaged_resources_ctx.resource_proguard_config)
83-
min_sdk_version = getattr(ctx.attr, "min_sdk_version", None)
84+
85+
# Get min SDK version from attribute, manifest_values, or depot floor
86+
effective_min_sdk = min_sdk_version.DEPOT_FLOOR
87+
min_sdk_attr = getattr(ctx.attr, "min_sdk_version", 0)
88+
if min_sdk_attr:
89+
effective_min_sdk = max(effective_min_sdk, min_sdk_attr)
90+
manifest_values = getattr(ctx.attr, "manifest_values", {})
91+
if "minSdkVersion" in manifest_values:
92+
manifest_min_sdk_str = manifest_values["minSdkVersion"]
93+
if manifest_min_sdk_str.isdigit():
94+
effective_min_sdk = max(effective_min_sdk, int(manifest_min_sdk_str))
95+
else:
96+
fail("minSdkVersion must be an integer")
8497

8598
neverlink_infos = utils.collect_providers(StarlarkAndroidNeverlinkInfo, ctx.attr.deps)
8699
neverlink_jars = depset(transitive = [info.transitive_neverlink_libraries for info in neverlink_infos])
87100

88101
args = ctx.actions.args()
89102
args.add("--release")
90-
if min_sdk_version:
91-
args.add("--min-api", min_sdk_version)
103+
args.add("--min-api", effective_min_sdk)
92104
args.add("--output", dexes_zip)
93105
args.add_all(proguard_specs, before_each = "--pg-conf")
94106
args.add("--lib", android_jar)

0 commit comments

Comments
 (0)