From 1938dba8b62a15b9a589e7aaf8ec5a120b7915fe Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 26 Jul 2022 23:53:00 +0000 Subject: Exclude unsupported libraries from sdk snapshot When an sdk snapshot is targeted at release X then it cannot include bootclasspath fragment libraries which are not present in that build as otherwise it causes build failures. It should also not include any unsupported libraries, i.e. libraries that cannot work on that release. This change causes sdk snapshot to exclude libraries that have a min_sdk_version > target build release It also ensures that hidden API flags do not include any information from excluded libraries. Bug: 240406019 Test: BUILD_NUMBER=fixed packages/modules/common/build/mainline_modules_sdks.sh # Ran the previous command with and without this change to make # sure that this change excludes framework-connectivity-t library from the # tethering sdk snapshot for S, including from the hidden API flag files. Change-Id: I57969b85a12e9e5a3fc76c055b260cec5d5f7d7f --- android/sdk.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'android/sdk.go') diff --git a/android/sdk.go b/android/sdk.go index a477cbaaf..a9cc547e0 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -74,6 +74,26 @@ type SdkAware interface { sdkAwareWithoutModule } +// minApiLevelForSdkSnapshot provides access to the min_sdk_version for MinApiLevelForSdkSnapshot +type minApiLevelForSdkSnapshot interface { + MinSdkVersion(ctx EarlyModuleContext) SdkSpec +} + +// MinApiLevelForSdkSnapshot returns the ApiLevel of the min_sdk_version of the supplied module. +// +// If the module does not provide a min_sdk_version then it defaults to 1. +func MinApiLevelForSdkSnapshot(ctx EarlyModuleContext, module Module) ApiLevel { + minApiLevel := NoneApiLevel + if m, ok := module.(minApiLevelForSdkSnapshot); ok { + minApiLevel = m.MinSdkVersion(ctx).ApiLevel + } + if minApiLevel == NoneApiLevel { + // The default min API level is 1. + minApiLevel = uncheckedFinalApiLevel(1) + } + return minApiLevel +} + // SdkRef refers to a version of an SDK type SdkRef struct { Name string -- cgit v1.2.3-59-g8ed1b