Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffb31afd authored by Spandan Das's avatar Spandan Das
Browse files

Support two active sdks in EffectiveVersionString

Currently it would return the default one even if the requested one is
an active sdk.

Bug: 270609292
Test: go test ./java
Test: built `rkpdapp` locally in internal and verified that its
targetSdkVersion is U and V
Test: TH

Change-Id: Idb03ff4786ff87fb7911bf31205941618a662404
parent 7ba7b46f
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -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 (
+15 −1
Original line number Diff line number Diff line
@@ -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,