From 496660d38a224a5d7cff9434bf9e8dbf034e580f Mon Sep 17 00:00:00 2001 From: Romain Jobredeaux Date: Mon, 10 Jul 2023 11:50:00 -0400 Subject: [PATCH] Support target and max sdk version in app bp2build. Test: Unit tests + CI Bug: 285304294 Bug: 280465047 Change-Id: I9bb1b6f9729ad783a43837d77dcf2d02b50ca77e --- bp2build/android_app_conversion_test.go | 11 ++++++++--- java/app.go | 21 ++++++++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/bp2build/android_app_conversion_test.go b/bp2build/android_app_conversion_test.go index 7f7aa6a3a..d1b4d4061 100644 --- a/bp2build/android_app_conversion_test.go +++ b/bp2build/android_app_conversion_test.go @@ -349,7 +349,7 @@ android_app { }}) } -func TestAndroidAppMinSdkProvided(t *testing.T) { +func TestAndroidAppManifestSdkVersionsProvided(t *testing.T) { runAndroidAppTestCase(t, Bp2buildTestCase{ Description: "Android app with value for min_sdk_version", ModuleTypeUnderTest: "android_app", @@ -359,7 +359,9 @@ func TestAndroidAppMinSdkProvided(t *testing.T) { android_app { name: "foo", sdk_version: "current", - min_sdk_version: "24", + min_sdk_version: "24", + max_sdk_version: "30", + target_sdk_version: "29", } `, ExpectedBazelTargets: []string{ @@ -367,14 +369,16 @@ android_app { "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, "manifest_values": `{ + "maxSdkVersion": "30", "minSdkVersion": "24", + "targetSdkVersion": "29", }`, "sdk_version": `"current"`, }), }}) } -func TestAndroidAppMinSdkDefaultToSdkVersion(t *testing.T) { +func TestAndroidAppMinAndTargetSdkDefaultToSdkVersion(t *testing.T) { runAndroidAppTestCase(t, Bp2buildTestCase{ Description: "Android app with value for sdk_version", ModuleTypeUnderTest: "android_app", @@ -392,6 +396,7 @@ android_app { "resource_files": `[]`, "manifest_values": `{ "minSdkVersion": "30", + "targetSdkVersion": "30", }`, "sdk_version": `"30"`, }), diff --git a/java/app.go b/java/app.go index d9272e4fc..fd626e1d6 100755 --- a/java/app.go +++ b/java/app.go @@ -1571,7 +1571,9 @@ func androidAppCertificateBp2Build(ctx android.TopDownMutatorContext, module *An } type manifestValueAttribute struct { - MinSdkVersion *string + MinSdkVersion *string + MaxSdkVersion *string + TargetSdkVersion *string } 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 := a.MinSdkVersion(ctx) if !minSdkVersion.IsPreview() && !minSdkVersion.IsInvalid() { - minSdkStr, err := minSdkVersion.EffectiveVersionString(ctx) - if err == nil { + if minSdkStr, err := minSdkVersion.EffectiveVersionString(ctx); err == nil { 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{ // TODO(b/209576404): handle package name override by product variable PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES Custom_package: a.overridableAppProperties.Package_name,