Merge "android_app APEX_GLOBAL_MIN_SDK_VERSION_OVERRIDE" into main

This commit is contained in:
Treehugger Robot
2023-09-07 16:55:45 +00:00
committed by Gerrit Code Review
4 changed files with 73 additions and 16 deletions

View File

@@ -316,6 +316,17 @@ func (a *AndroidApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
a.generateJavaUsedByApex(ctx)
}
func (a *AndroidApp) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel {
defaultMinSdkVersion := a.Module.MinSdkVersion(ctx)
if proptools.Bool(a.appProperties.Updatable) {
overrideApiLevel := android.MinSdkVersionFromValue(ctx, ctx.DeviceConfig().ApexGlobalMinSdkVersionOverride())
if !overrideApiLevel.IsNone() && overrideApiLevel.CompareTo(defaultMinSdkVersion) > 0 {
return overrideApiLevel
}
}
return defaultMinSdkVersion
}
func (a *AndroidApp) checkAppSdkVersions(ctx android.ModuleContext) {
if a.Updatable() {
if !a.SdkVersion(ctx).Stable() {

View File

@@ -4137,3 +4137,49 @@ func TestPrivappAllowlistAndroidMk(t *testing.T) {
"\\S+soong/.intermediates/foo/android_common_bar/privapp_allowlist_com.google.android.foo.xml:\\S+/target/product/test_device/system/etc/permissions/bar.xml",
)
}
func TestApexGlobalMinSdkVersionOverride(t *testing.T) {
result := android.GroupFixturePreparers(
PrepareForTestWithJavaDefaultModules,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
variables.ApexGlobalMinSdkVersionOverride = proptools.StringPtr("Tiramisu")
}),
).RunTestWithBp(t, `
android_app {
name: "com.android.bar",
srcs: ["a.java"],
sdk_version: "current",
}
android_app {
name: "com.android.foo",
srcs: ["a.java"],
sdk_version: "current",
min_sdk_version: "S",
updatable: true,
}
override_android_app {
name: "com.android.go.foo",
base: "com.android.foo",
}
`)
foo := result.ModuleForTests("com.android.foo", "android_common").Rule("manifestFixer")
fooOverride := result.ModuleForTests("com.android.foo", "android_common_com.android.go.foo").Rule("manifestFixer")
bar := result.ModuleForTests("com.android.bar", "android_common").Rule("manifestFixer")
android.AssertStringDoesContain(t,
"expected manifest fixer to set com.android.bar minSdkVersion to S",
bar.BuildParams.Args["args"],
"--minSdkVersion S",
)
android.AssertStringDoesContain(t,
"com.android.foo: expected manifest fixer to set minSdkVersion to T",
foo.BuildParams.Args["args"],
"--minSdkVersion T",
)
android.AssertStringDoesContain(t,
"com.android.go.foo: expected manifest fixer to set minSdkVersion to T",
fooOverride.BuildParams.Args["args"],
"--minSdkVersion T",
)
}