Fix erroneous "Field requires API level 33 (current min is 32)" warnings
Bug: 215567981 Bug: 204776549 Test: m out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/lint/lint-report.xml, then check that that file doesn't have any of these warnings Change-Id: I39aa2228474630c93250bf5833ac6bd9bbadcc7f
This commit is contained in:
parent
a59059f3a1
commit
8b7f627f30
3 changed files with 38 additions and 10 deletions
|
@ -54,6 +54,14 @@ type ApiLevel struct {
|
|||
isPreview bool
|
||||
}
|
||||
|
||||
func (this ApiLevel) FinalInt() int {
|
||||
if this.IsPreview() {
|
||||
panic("Requested a final int from a non-final ApiLevel")
|
||||
} else {
|
||||
return this.number
|
||||
}
|
||||
}
|
||||
|
||||
func (this ApiLevel) FinalOrFutureInt() int {
|
||||
if this.IsPreview() {
|
||||
return FutureApiLevelInt
|
||||
|
|
25
java/base.go
25
java/base.go
|
@ -1478,11 +1478,30 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||
}
|
||||
|
||||
if ctx.Device() {
|
||||
lintSDKVersion := func(sdkSpec android.SdkSpec) android.ApiLevel {
|
||||
lintSDKVersion := func(sdkSpec android.SdkSpec) int {
|
||||
if v := sdkSpec.ApiLevel; !v.IsPreview() {
|
||||
return v
|
||||
return v.FinalInt()
|
||||
} else {
|
||||
return ctx.Config().DefaultAppTargetSdk(ctx)
|
||||
// When running metalava, we pass --version-codename. When that value
|
||||
// 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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
15
java/lint.go
15
java/lint.go
|
@ -17,6 +17,7 @@ package java
|
|||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
@ -75,9 +76,9 @@ type linter struct {
|
|||
extraLintCheckJars android.Paths
|
||||
test bool
|
||||
library bool
|
||||
minSdkVersion android.ApiLevel
|
||||
targetSdkVersion android.ApiLevel
|
||||
compileSdkVersion android.ApiLevel
|
||||
minSdkVersion int
|
||||
targetSdkVersion int
|
||||
compileSdkVersion int
|
||||
compileSdkKind android.SdkKind
|
||||
javaLanguageLevel string
|
||||
kotlinLanguageLevel string
|
||||
|
@ -299,8 +300,8 @@ func (l *linter) generateManifest(ctx android.ModuleContext, rule *android.RuleB
|
|||
Text(`echo "<?xml version='1.0' encoding='utf-8'?>" &&`).
|
||||
Text(`echo "<manifest xmlns:android='http://schemas.android.com/apk/res/android'" &&`).
|
||||
Text(`echo " android:versionCode='1' android:versionName='1' >" &&`).
|
||||
Textf(`echo " <uses-sdk android:minSdkVersion='%s' android:targetSdkVersion='%s'/>" &&`,
|
||||
l.minSdkVersion.String(), l.targetSdkVersion.String()).
|
||||
Textf(`echo " <uses-sdk android:minSdkVersion='%d' android:targetSdkVersion='%d'/>" &&`,
|
||||
l.minSdkVersion, l.targetSdkVersion).
|
||||
Text(`echo "</manifest>"`).
|
||||
Text(") >").Output(manifestPath)
|
||||
|
||||
|
@ -325,7 +326,7 @@ func (l *linter) lint(ctx android.ModuleContext) {
|
|||
return
|
||||
}
|
||||
|
||||
if l.minSdkVersion.CompareTo(l.compileSdkVersion) == -1 {
|
||||
if l.minSdkVersion != l.compileSdkVersion {
|
||||
l.extraMainlineLintErrors = append(l.extraMainlineLintErrors, updatabilityChecks...)
|
||||
_, filtered := android.FilterList(l.properties.Lint.Warning_checks, updatabilityChecks)
|
||||
if len(filtered) != 0 {
|
||||
|
@ -427,7 +428,7 @@ func (l *linter) lint(ctx android.ModuleContext) {
|
|||
FlagWithOutput("--html ", html).
|
||||
FlagWithOutput("--text ", text).
|
||||
FlagWithOutput("--xml ", xml).
|
||||
FlagWithArg("--compile-sdk-version ", l.compileSdkVersion.String()).
|
||||
FlagWithArg("--compile-sdk-version ", strconv.Itoa(l.compileSdkVersion)).
|
||||
FlagWithArg("--java-language-level ", l.javaLanguageLevel).
|
||||
FlagWithArg("--kotlin-language-level ", l.kotlinLanguageLevel).
|
||||
FlagWithArg("--url ", fmt.Sprintf(".=.,%s=out", android.PathForOutput(ctx).String())).
|
||||
|
|
Loading…
Reference in a new issue