From 50885c052497ad4ef1691bfe21895455107a3336 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Thu, 23 Feb 2023 21:31:33 +0000 Subject: [PATCH] Update usages of min_sdk_version that relies on (kind+level) The type of min_sdk_version is being migrated from android.SdkSpec(kind+level) to android.ApiLevel(level). This affects the {min|target}-sdk-version aapt2 flag for vendor modules. For these modules, if min_sdk_version is not set in Android.bp files, MinSdkVersion would default to SdkVersion, and therefore would get access to the sdkKind it was compiling against. To accomodate the upcoming change of min_sdk_version to ApiLevel, explicitly use SdkVersion to determine the `min-sdk-version` flags for modules targeting `current`. Bug: 208456999 Test: no change in ninja files (this should be a noop) Change-Id: Ie2924698687597cdd572d4bb4c687d0b1569c4b8 --- java/aar.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/java/aar.go b/java/aar.go index a483e13b9..a74ba7cdd 100644 --- a/java/aar.go +++ b/java/aar.go @@ -219,11 +219,28 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext android.SdkConte linkFlags = append(linkFlags, android.JoinWithPrefix(assetDirStrings, "-A ")) linkDeps = append(linkDeps, assetDeps...) - // SDK version flags - minSdkVersion, err := sdkContext.MinSdkVersion(ctx).EffectiveVersionString(ctx) - if err != nil { - ctx.ModuleErrorf("invalid minSdkVersion: %s", err) + // Returns the effective version for {min|target}_sdk_version + effectiveVersionString := func(sdkVersion android.SdkSpec, minSdkVersion android.SdkSpec) string { + // If {min|target}_sdk_version is current, use sdk_version to determine the effective level + // This is necessary for vendor modules. + // The effective version does not _only_ depend on {min|target}_sdk_version(level), + // but also on the sdk_version (kind+level) + if minSdkVersion.ApiLevel.IsCurrent() { + ret, err := sdkVersion.EffectiveVersionString(ctx) + if err != nil { + ctx.ModuleErrorf("invalid sdk_version: %s", err) + } + return ret + } + ret, err := minSdkVersion.EffectiveVersionString(ctx) + if err != nil { + ctx.ModuleErrorf("invalid min_sdk_version: %s", err) + } + return ret } + // SDK version flags + sdkVersion := sdkContext.SdkVersion(ctx) + minSdkVersion := effectiveVersionString(sdkVersion, sdkContext.MinSdkVersion(ctx)) linkFlags = append(linkFlags, "--min-sdk-version "+minSdkVersion) linkFlags = append(linkFlags, "--target-sdk-version "+minSdkVersion)