Enforce newapi check only if min_sdk_version < compile_sdk_version

- NewApi check should be enforced only if min_sdk_version is less than
  the compile_sdk_version (the opposite direction should be a different
  build-time error)
- Change the datatype of *sdkVersion to android.ApiLevel (from string)
  to support version comparisons

Test: go build ./java
Test: no changes in ninja file
Bug: 228956345

Merged-In: Ic408857db7760d912ef4694d2ed72c0b7106eb04
Change-Id: Ic408857db7760d912ef4694d2ed72c0b7106eb04
(cherry picked from commit ba7e532a11)
This commit is contained in:
Spandan Das
2022-04-22 17:28:25 +00:00
parent 2b5384bc93
commit a3264efb42
2 changed files with 12 additions and 12 deletions

View File

@@ -1481,11 +1481,11 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
} }
if ctx.Device() { if ctx.Device() {
lintSDKVersionString := func(sdkSpec android.SdkSpec) string { lintSDKVersion := func(sdkSpec android.SdkSpec) android.ApiLevel {
if v := sdkSpec.ApiLevel; !v.IsPreview() { if v := sdkSpec.ApiLevel; !v.IsPreview() {
return v.String() return v
} else { } else {
return ctx.Config().DefaultAppTargetSdk(ctx).String() return ctx.Config().DefaultAppTargetSdk(ctx)
} }
} }
@@ -1494,9 +1494,9 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
j.linter.srcJars = srcJars j.linter.srcJars = srcJars
j.linter.classpath = append(append(android.Paths(nil), flags.bootClasspath...), flags.classpath...) j.linter.classpath = append(append(android.Paths(nil), flags.bootClasspath...), flags.classpath...)
j.linter.classes = j.implementationJarFile j.linter.classes = j.implementationJarFile
j.linter.minSdkVersion = lintSDKVersionString(j.MinSdkVersion(ctx)) j.linter.minSdkVersion = lintSDKVersion(j.MinSdkVersion(ctx))
j.linter.targetSdkVersion = lintSDKVersionString(j.TargetSdkVersion(ctx)) j.linter.targetSdkVersion = lintSDKVersion(j.TargetSdkVersion(ctx))
j.linter.compileSdkVersion = lintSDKVersionString(j.SdkVersion(ctx)) j.linter.compileSdkVersion = lintSDKVersion(j.SdkVersion(ctx))
j.linter.compileSdkKind = j.SdkVersion(ctx).Kind j.linter.compileSdkKind = j.SdkVersion(ctx).Kind
j.linter.javaLanguageLevel = flags.javaVersion.String() j.linter.javaLanguageLevel = flags.javaVersion.String()
j.linter.kotlinLanguageLevel = "1.3" j.linter.kotlinLanguageLevel = "1.3"

View File

@@ -75,9 +75,9 @@ type linter struct {
extraLintCheckJars android.Paths extraLintCheckJars android.Paths
test bool test bool
library bool library bool
minSdkVersion string minSdkVersion android.ApiLevel
targetSdkVersion string targetSdkVersion android.ApiLevel
compileSdkVersion string compileSdkVersion android.ApiLevel
compileSdkKind android.SdkKind compileSdkKind android.SdkKind
javaLanguageLevel string javaLanguageLevel string
kotlinLanguageLevel string kotlinLanguageLevel string
@@ -300,7 +300,7 @@ func (l *linter) generateManifest(ctx android.ModuleContext, rule *android.RuleB
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='%s' android:targetSdkVersion='%s'/>" &&`, 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)
@@ -325,7 +325,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...)
_, filtered := android.FilterList(l.properties.Lint.Warning_checks, updatabilityChecks) _, filtered := android.FilterList(l.properties.Lint.Warning_checks, updatabilityChecks)
if len(filtered) != 0 { if len(filtered) != 0 {
@@ -427,7 +427,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 ", 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())).