From 7fa982c0ecd1af67b1d83e8bc932e398efc22d21 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Fri, 24 Feb 2023 18:38:56 +0000 Subject: [PATCH] Update usages of min_sdk_version that relies on (kind+level) The type of min_sdk_version is being migrated from android.SdkSpec(kind+level) to android.ApiLevel(level). This affects `ShouldSupportSdkVersion` for java modules. This function skips the check for modules compiling against `core`, and that requires access to SdkVersion and not MinSdkVersion after the migration. Skip the check explicitly using SdkVersion. Test: go test ./java Test: No change in ninja file Bug: 208456999 Change-Id: I14eca4f8e8c5d7477ded00c4fe54097323fab4a2 --- apex/apex_test.go | 28 ++++++++++++++++++++++++++++ java/base.go | 13 ++++++++----- java/java.go | 13 ++++++++----- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/apex/apex_test.go b/apex/apex_test.go index faf82b32c..f66c5f8c1 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -2128,6 +2128,34 @@ func TestApexMinSdkVersion_ErrorIfIncompatibleVersion(t *testing.T) { min_sdk_version: "30", } `) + + // Skip check for modules compiling against core API surface + testApex(t, ` + apex { + name: "myapex", + key: "myapex.key", + java_libs: ["libfoo"], + min_sdk_version: "29", + } + + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + } + + java_library { + name: "libfoo", + srcs: ["Foo.java"], + apex_available: [ + "myapex", + ], + // Compile against core API surface + sdk_version: "core_current", + min_sdk_version: "30", + } + `) + } func TestApexMinSdkVersion_Okay(t *testing.T) { diff --git a/java/base.go b/java/base.go index e7e3d8fea..2e77c1e1c 100644 --- a/java/base.go +++ b/java/base.go @@ -1845,15 +1845,18 @@ func (j *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu // Implements android.ApexModule func (j *Module) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error { - sdkSpec := j.MinSdkVersion(ctx) - if !sdkSpec.Specified() { + sdkVersionSpec := j.SdkVersion(ctx) + minSdkVersionSpec := j.MinSdkVersion(ctx) + if !minSdkVersionSpec.Specified() { return fmt.Errorf("min_sdk_version is not specified") } - if sdkSpec.Kind == android.SdkCore { + // If the module is compiling against core (via sdk_version), skip comparison check. + if sdkVersionSpec.Kind == android.SdkCore { return nil } - if sdkSpec.ApiLevel.GreaterThan(sdkVersion) { - return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel) + minSdkVersion := minSdkVersionSpec.ApiLevel + if minSdkVersion.GreaterThan(sdkVersion) { + return fmt.Errorf("newer SDK(%v)", minSdkVersion) } return nil } diff --git a/java/java.go b/java/java.go index 27b2a6ec6..1df45b804 100644 --- a/java/java.go +++ b/java/java.go @@ -2166,15 +2166,18 @@ func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu // Implements android.ApexModule func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error { - sdkSpec := j.MinSdkVersion(ctx) - if !sdkSpec.Specified() { + sdkVersionSpec := j.SdkVersion(ctx) + minSdkVersionSpec := j.MinSdkVersion(ctx) + if !minSdkVersionSpec.Specified() { return fmt.Errorf("min_sdk_version is not specified") } - if sdkSpec.Kind == android.SdkCore { + // If the module is compiling against core (via sdk_version), skip comparison check. + if sdkVersionSpec.Kind == android.SdkCore { return nil } - if sdkSpec.ApiLevel.GreaterThan(sdkVersion) { - return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel) + minSdkVersion := minSdkVersionSpec.ApiLevel + if minSdkVersion.GreaterThan(sdkVersion) { + return fmt.Errorf("newer SDK(%v)", minSdkVersion) } return nil }