From c26029b473c4eee7ead718665de75e27cea1399f Mon Sep 17 00:00:00 2001 From: Ian Zerny Date: Fri, 25 Aug 2023 13:43:44 +0200 Subject: [PATCH] Translate SDK level 10000 to a valid compiler min-api Targets with the special level 10000 are compiled using the current platform SDK level. They are also compiled as a "platform build" which will disable features such as API modeling and method backports. Bug: 295591477 Test: manual inspection of the updated build commands Change-Id: Ifda8859396b33dde4c46a9b212ddb855b012bf07 --- java/dex.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/java/dex.go b/java/dex.go index df501bffa..cd13e3909 100644 --- a/java/dex.go +++ b/java/dex.go @@ -217,8 +217,9 @@ func (d *dexer) dexCommonFlags(ctx android.ModuleContext, // Note: Targets with a min SDK kind of core_platform (e.g., framework.jar) or unspecified (e.g., // services.jar), are not classified as stable, which is WAI. // TODO(b/232073181): Expand to additional min SDK cases after validation. + var addAndroidPlatformBuildFlag = false if !dexParams.sdkVersion.Stable() { - flags = append(flags, "--android-platform-build") + addAndroidPlatformBuildFlag = true } effectiveVersion, err := dexParams.minSdkVersion.EffectiveVersion(ctx) @@ -226,7 +227,18 @@ func (d *dexer) dexCommonFlags(ctx android.ModuleContext, ctx.PropertyErrorf("min_sdk_version", "%s", err) } - flags = append(flags, "--min-api "+strconv.Itoa(effectiveVersion.FinalOrFutureInt())) + // If the specified SDK level is 10000, then configure the compiler to use the + // current platform SDK level and to compile the build as a platform build. + var minApiFlagValue = effectiveVersion.FinalOrFutureInt() + if minApiFlagValue == 10000 { + minApiFlagValue = ctx.Config().PlatformSdkVersion().FinalInt() + addAndroidPlatformBuildFlag = true + } + flags = append(flags, "--min-api "+strconv.Itoa(minApiFlagValue)) + + if addAndroidPlatformBuildFlag { + flags = append(flags, "--android-platform-build") + } return flags, deps }