Merge "Support target and max sdk version in app bp2build." into main

This commit is contained in:
Romain Jobredeaux
2023-07-11 13:34:29 +00:00
committed by Gerrit Code Review
2 changed files with 26 additions and 6 deletions

View File

@@ -349,7 +349,7 @@ android_app {
}}) }})
} }
func TestAndroidAppMinSdkProvided(t *testing.T) { func TestAndroidAppManifestSdkVersionsProvided(t *testing.T) {
runAndroidAppTestCase(t, Bp2buildTestCase{ runAndroidAppTestCase(t, Bp2buildTestCase{
Description: "Android app with value for min_sdk_version", Description: "Android app with value for min_sdk_version",
ModuleTypeUnderTest: "android_app", ModuleTypeUnderTest: "android_app",
@@ -360,6 +360,8 @@ android_app {
name: "foo", name: "foo",
sdk_version: "current", sdk_version: "current",
min_sdk_version: "24", min_sdk_version: "24",
max_sdk_version: "30",
target_sdk_version: "29",
} }
`, `,
ExpectedBazelTargets: []string{ ExpectedBazelTargets: []string{
@@ -367,14 +369,16 @@ android_app {
"manifest": `"AndroidManifest.xml"`, "manifest": `"AndroidManifest.xml"`,
"resource_files": `[]`, "resource_files": `[]`,
"manifest_values": `{ "manifest_values": `{
"maxSdkVersion": "30",
"minSdkVersion": "24", "minSdkVersion": "24",
"targetSdkVersion": "29",
}`, }`,
"sdk_version": `"current"`, "sdk_version": `"current"`,
}), }),
}}) }})
} }
func TestAndroidAppMinSdkDefaultToSdkVersion(t *testing.T) { func TestAndroidAppMinAndTargetSdkDefaultToSdkVersion(t *testing.T) {
runAndroidAppTestCase(t, Bp2buildTestCase{ runAndroidAppTestCase(t, Bp2buildTestCase{
Description: "Android app with value for sdk_version", Description: "Android app with value for sdk_version",
ModuleTypeUnderTest: "android_app", ModuleTypeUnderTest: "android_app",
@@ -392,6 +396,7 @@ android_app {
"resource_files": `[]`, "resource_files": `[]`,
"manifest_values": `{ "manifest_values": `{
"minSdkVersion": "30", "minSdkVersion": "30",
"targetSdkVersion": "30",
}`, }`,
"sdk_version": `"30"`, "sdk_version": `"30"`,
}), }),

View File

@@ -1572,6 +1572,8 @@ func androidAppCertificateBp2Build(ctx android.TopDownMutatorContext, module *An
type manifestValueAttribute struct { type manifestValueAttribute struct {
MinSdkVersion *string MinSdkVersion *string
MaxSdkVersion *string
TargetSdkVersion *string
} }
type bazelAndroidAppAttributes struct { type bazelAndroidAppAttributes struct {
@@ -1601,12 +1603,25 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
// MinSdkVersion(ctx) calls SdkVersion(ctx) if no value for min_sdk_version is set // MinSdkVersion(ctx) calls SdkVersion(ctx) if no value for min_sdk_version is set
minSdkVersion := a.MinSdkVersion(ctx) minSdkVersion := a.MinSdkVersion(ctx)
if !minSdkVersion.IsPreview() && !minSdkVersion.IsInvalid() { if !minSdkVersion.IsPreview() && !minSdkVersion.IsInvalid() {
minSdkStr, err := minSdkVersion.EffectiveVersionString(ctx) if minSdkStr, err := minSdkVersion.EffectiveVersionString(ctx); err == nil {
if err == nil {
manifestValues.MinSdkVersion = &minSdkStr manifestValues.MinSdkVersion = &minSdkStr
} }
} }
maxSdkVersion := a.MaxSdkVersion(ctx)
if !maxSdkVersion.IsPreview() && !maxSdkVersion.IsInvalid() {
if maxSdkStr, err := maxSdkVersion.EffectiveVersionString(ctx); err == nil {
manifestValues.MaxSdkVersion = &maxSdkStr
}
}
targetSdkVersion := a.TargetSdkVersion(ctx)
if !targetSdkVersion.IsPreview() && !targetSdkVersion.IsInvalid() {
if targetSdkStr, err := targetSdkVersion.EffectiveVersionString(ctx); err == nil {
manifestValues.TargetSdkVersion = &targetSdkStr
}
}
appAttrs := &bazelAndroidAppAttributes{ appAttrs := &bazelAndroidAppAttributes{
// TODO(b/209576404): handle package name override by product variable PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES // TODO(b/209576404): handle package name override by product variable PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES
Custom_package: a.overridableAppProperties.Package_name, Custom_package: a.overridableAppProperties.Package_name,