Merge "Support two active sdks in EffectiveVersionString"

This commit is contained in:
Spandan Das
2023-03-02 00:52:12 +00:00
committed by Gerrit Code Review
2 changed files with 38 additions and 2 deletions

View File

@@ -211,7 +211,29 @@ func (s SdkSpec) EffectiveVersionString(ctx EarlyModuleContext) (string, error)
if !s.ApiLevel.IsPreview() {
return s.ApiLevel.String(), nil
}
return ctx.Config().DefaultAppTargetSdk(ctx).String(), nil
// Determine the default sdk
ret := ctx.Config().DefaultAppTargetSdk(ctx)
if !ret.IsPreview() {
// If the default sdk has been finalized, return that
return ret.String(), nil
}
// There can be more than one active in-development sdks
// If an app is targeting an active sdk, but not the default one, return the requested active sdk.
// e.g.
// SETUP
// In-development: UpsideDownCake, VanillaIceCream
// Default: VanillaIceCream
// Android.bp
// min_sdk_version: `UpsideDownCake`
// RETURN
// UpsideDownCake and not VanillaIceCream
for _, preview := range ctx.Config().PreviewApiLevels() {
if s.ApiLevel.String() == preview.String() {
return preview.String(), nil
}
}
// Otherwise return the default one
return ret.String(), nil
}
var (

View File

@@ -1005,6 +1005,7 @@ func TestAppSdkVersion(t *testing.T) {
platformSdkInt int
platformSdkCodename string
platformSdkFinal bool
minSdkVersionBp string
expectedMinSdkVersion string
platformApis bool
activeCodenames []string
@@ -1052,6 +1053,14 @@ func TestAppSdkVersion(t *testing.T) {
platformSdkCodename: "S",
activeCodenames: []string{"S"},
},
{
name: "two active SDKs",
sdkVersion: "module_current",
minSdkVersionBp: "UpsideDownCake",
expectedMinSdkVersion: "UpsideDownCake", // And not VanillaIceCream
platformSdkCodename: "VanillaIceCream",
activeCodenames: []string{"UpsideDownCake", "VanillaIceCream"},
},
}
for _, moduleType := range []string{"android_app", "android_library"} {
@@ -1061,12 +1070,17 @@ func TestAppSdkVersion(t *testing.T) {
if test.platformApis {
platformApiProp = "platform_apis: true,"
}
minSdkVersionProp := ""
if test.minSdkVersionBp != "" {
minSdkVersionProp = fmt.Sprintf(` min_sdk_version: "%s",`, test.minSdkVersionBp)
}
bp := fmt.Sprintf(`%s {
name: "foo",
srcs: ["a.java"],
sdk_version: "%s",
%s
}`, moduleType, test.sdkVersion, platformApiProp)
%s
}`, moduleType, test.sdkVersion, platformApiProp, minSdkVersionProp)
result := android.GroupFixturePreparers(
prepareForJavaTest,