diff --git a/java/android_manifest.go b/java/android_manifest.go index dbcf09830..f2ebfa6a2 100644 --- a/java/android_manifest.go +++ b/java/android_manifest.go @@ -63,9 +63,11 @@ func targetSdkVersionForManifestFixer(ctx android.ModuleContext, params Manifest // 2. The module is run as part of MTS, and should be testable on stable branches // Do not return 10000 if we are enforcing default targetSdkVersion and sdk has been finalised func shouldReturnFinalOrFutureInt(ctx android.ModuleContext, targetSdkVersionLevel android.ApiLevel, enforceDefaultTargetSdkVersion bool) bool { - if enforceDefaultTargetSdkVersion && ctx.Config().PlatformSdkFinal() { + // If this is a REL branch, do not return 10000 + if ctx.Config().PlatformSdkFinal() { return false } + // If this a module targeting an unreleased SDK (MTS or unbundled builds), return 10000 return targetSdkVersionLevel.IsPreview() && (ctx.Config().UnbundledBuildApps() || includedInMts(ctx.Module())) } diff --git a/java/app_test.go b/java/app_test.go index 561be684e..7e97b0fb1 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -3034,11 +3034,13 @@ func TestExportedProguardFlagFiles(t *testing.T) { func TestTargetSdkVersionManifestFixer(t *testing.T) { platform_sdk_codename := "Tiramisu" + platform_sdk_version := 33 testCases := []struct { name string targetSdkVersionInBp string targetSdkVersionExpected string unbundledBuild bool + platformSdkFinal bool }{ { name: "Non-Unbundled build: Android.bp has targetSdkVersion", @@ -3075,6 +3077,12 @@ func TestTargetSdkVersionManifestFixer(t *testing.T) { targetSdkVersionExpected: "10000", unbundledBuild: true, }, + { + name: "Bundled build in REL branches", + targetSdkVersionExpected: "33", + unbundledBuild: false, + platformSdkFinal: true, + }, } for _, testCase := range testCases { targetSdkVersionTemplate := "" @@ -3091,8 +3099,12 @@ func TestTargetSdkVersionManifestFixer(t *testing.T) { fixture := android.GroupFixturePreparers( prepareForJavaTest, android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + if testCase.platformSdkFinal { + variables.Platform_sdk_final = proptools.BoolPtr(true) + } // explicitly set platform_sdk_codename to make the test deterministic variables.Platform_sdk_codename = &platform_sdk_codename + variables.Platform_sdk_version = &platform_sdk_version variables.Platform_version_active_codenames = []string{platform_sdk_codename} // create a non-empty list if unbundledBuild==true if testCase.unbundledBuild {