Use ApiLevel on min, target and compile Sdk version

This change is a partial revert of aosp/2143082. The reason is
that unreleased apis should be referenced by name instead of a
number.

link to xml reports before/after this cl:
https://drive.google.com/drive/folders/1woIgVlHF6qude5RpW-0mEQLzcXo4isX4?usp=sharing

Test: m lint-check
Change-Id: I6d801f95a24400c9c5c23546e19d6440bd357873
This commit is contained in:
Zi Wang
2023-11-06 11:43:17 -08:00
parent 4c01bb49da
commit e1166f081f
2 changed files with 10 additions and 30 deletions

View File

@@ -1678,30 +1678,11 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
} }
if ctx.Device() { if ctx.Device() {
lintSDKVersion := func(apiLevel android.ApiLevel) int { lintSDKVersion := func(apiLevel android.ApiLevel) android.ApiLevel {
if !apiLevel.IsPreview() { if !apiLevel.IsPreview() {
return apiLevel.FinalInt() return apiLevel
} else { } else {
// When running metalava, we pass --version-codename. When that value return ctx.Config().DefaultAppTargetSdk(ctx)
// is not REL, metalava will add 1 to the --current-version argument.
// On old branches, PLATFORM_SDK_VERSION is the latest version (for that
// branch) and the codename is REL, except potentially on the most
// recent non-master branch. On that branch, it goes through two other
// phases before it gets to the phase previously described:
// - PLATFORM_SDK_VERSION has not been updated yet, and the codename
// is not rel. This happens for most of the internal branch's life
// while the branch has been cut but is still under active development.
// - PLATFORM_SDK_VERSION has been set, but the codename is still not
// REL. This happens briefly during the release process. During this
// state the code to add --current-version is commented out, and then
// that commenting out is reverted after the codename is set to REL.
// On the master branch, the PLATFORM_SDK_VERSION always represents a
// prior version and the codename is always non-REL.
//
// We need to add one here to match metalava adding 1. Technically
// this means that in the state described in the second bullet point
// above, this number is 1 higher than it should be.
return ctx.Config().PlatformSdkVersion().FinalInt() + 1
} }
} }

View File

@@ -17,7 +17,6 @@ package java
import ( import (
"fmt" "fmt"
"sort" "sort"
"strconv"
"strings" "strings"
"github.com/google/blueprint/proptools" "github.com/google/blueprint/proptools"
@@ -84,9 +83,9 @@ type linter struct {
classes android.Path classes android.Path
extraLintCheckJars android.Paths extraLintCheckJars android.Paths
library bool library bool
minSdkVersion int minSdkVersion android.ApiLevel
targetSdkVersion int targetSdkVersion android.ApiLevel
compileSdkVersion int compileSdkVersion android.ApiLevel
compileSdkKind android.SdkKind compileSdkKind android.SdkKind
javaLanguageLevel string javaLanguageLevel string
kotlinLanguageLevel string kotlinLanguageLevel string
@@ -356,8 +355,8 @@ func (l *linter) generateManifest(ctx android.ModuleContext, rule *android.RuleB
Text(`echo "<?xml version='1.0' encoding='utf-8'?>" &&`). Text(`echo "<?xml version='1.0' encoding='utf-8'?>" &&`).
Text(`echo "<manifest xmlns:android='http://schemas.android.com/apk/res/android'" &&`). Text(`echo "<manifest xmlns:android='http://schemas.android.com/apk/res/android'" &&`).
Text(`echo " android:versionCode='1' android:versionName='1' >" &&`). Text(`echo " android:versionCode='1' android:versionName='1' >" &&`).
Textf(`echo " <uses-sdk android:minSdkVersion='%d' android:targetSdkVersion='%d'/>" &&`, Textf(`echo " <uses-sdk android:minSdkVersion='%s' android:targetSdkVersion='%s'/>" &&`,
l.minSdkVersion, l.targetSdkVersion). l.minSdkVersion.String(), l.targetSdkVersion.String()).
Text(`echo "</manifest>"`). Text(`echo "</manifest>"`).
Text(") >").Output(manifestPath) Text(") >").Output(manifestPath)
@@ -382,7 +381,7 @@ func (l *linter) lint(ctx android.ModuleContext) {
return return
} }
if l.minSdkVersion != l.compileSdkVersion { if l.minSdkVersion.CompareTo(l.compileSdkVersion) == -1 {
l.extraMainlineLintErrors = append(l.extraMainlineLintErrors, updatabilityChecks...) l.extraMainlineLintErrors = append(l.extraMainlineLintErrors, updatabilityChecks...)
// Skip lint warning checks for NewApi warnings for libcore where they come from source // Skip lint warning checks for NewApi warnings for libcore where they come from source
// files that reference the API they are adding (b/208656169). // files that reference the API they are adding (b/208656169).
@@ -496,7 +495,7 @@ func (l *linter) lint(ctx android.ModuleContext) {
FlagWithOutput("--html ", html). FlagWithOutput("--html ", html).
FlagWithOutput("--text ", text). FlagWithOutput("--text ", text).
FlagWithOutput("--xml ", xml). FlagWithOutput("--xml ", xml).
FlagWithArg("--compile-sdk-version ", strconv.Itoa(l.compileSdkVersion)). FlagWithArg("--compile-sdk-version ", l.compileSdkVersion.String()).
FlagWithArg("--java-language-level ", l.javaLanguageLevel). FlagWithArg("--java-language-level ", l.javaLanguageLevel).
FlagWithArg("--kotlin-language-level ", l.kotlinLanguageLevel). FlagWithArg("--kotlin-language-level ", l.kotlinLanguageLevel).
FlagWithArg("--url ", fmt.Sprintf(".=.,%s=out", android.PathForOutput(ctx).String())). FlagWithArg("--url ", fmt.Sprintf(".=.,%s=out", android.PathForOutput(ctx).String())).