diff options
author | 2023-03-03 21:20:36 +0000 | |
---|---|---|
committer | 2023-03-20 16:51:32 +0000 | |
commit | e773739787394e9632043749e88ca6cfd5a40a67 (patch) | |
tree | c069277b81df80f608af7f97b33e62c3e0d18ff8 /java | |
parent | 3015e38a5f0d466dd850fd0a77648844a1364efc (diff) |
Update min_sdk_version from SdkSpec to ApiLevel
min_sdk_version signifies device version and does not need an sdkKind to
describe it fully. Update the type and cleanup existing usages. As a
side benefit, we also get better error handling since users can no
longer enter something like `public_30` as a valid min_sdk_version in bp
files
Will do a similar cleanup for targetSdkVersion and maxSdkVersion in a
followup CL
Test: m nothing
Test: no change in ninja files (this should be a no-op)
Bug: 208456999
Change-Id: Ie6ae7e267d093c5e4787e82685daaca1021d202e
Diffstat (limited to 'java')
-rw-r--r-- | java/aar.go | 12 | ||||
-rwxr-xr-x | java/app.go | 14 | ||||
-rw-r--r-- | java/app_import.go | 4 | ||||
-rw-r--r-- | java/base.go | 27 | ||||
-rw-r--r-- | java/classpath_fragment.go | 6 | ||||
-rw-r--r-- | java/dex.go | 2 | ||||
-rw-r--r-- | java/droiddoc.go | 6 | ||||
-rw-r--r-- | java/hiddenapi.go | 8 | ||||
-rw-r--r-- | java/hiddenapi_modular.go | 2 | ||||
-rw-r--r-- | java/java.go | 15 | ||||
-rw-r--r-- | java/rro.go | 6 | ||||
-rw-r--r-- | java/sdk_library.go | 8 |
12 files changed, 54 insertions, 56 deletions
diff --git a/java/aar.go b/java/aar.go index 4bc5465aa..4e5ac1f36 100644 --- a/java/aar.go +++ b/java/aar.go @@ -220,12 +220,12 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext android.SdkConte linkDeps = append(linkDeps, assetDeps...) // Returns the effective version for {min|target}_sdk_version - effectiveVersionString := func(sdkVersion android.SdkSpec, minSdkVersion android.SdkSpec) string { + effectiveVersionString := func(sdkVersion android.SdkSpec, minSdkVersion android.ApiLevel) string { // If {min|target}_sdk_version is current, use sdk_version to determine the effective level // This is necessary for vendor modules. // The effective version does not _only_ depend on {min|target}_sdk_version(level), // but also on the sdk_version (kind+level) - if minSdkVersion.ApiLevel.IsCurrent() { + if minSdkVersion.IsCurrent() { ret, err := sdkVersion.EffectiveVersionString(ctx) if err != nil { ctx.ModuleErrorf("invalid sdk_version: %s", err) @@ -689,7 +689,7 @@ type AARImport struct { jniPackages android.Paths sdkVersion android.SdkSpec - minSdkVersion android.SdkSpec + minSdkVersion android.ApiLevel } var _ android.OutputFileProducer = (*AARImport)(nil) @@ -714,11 +714,11 @@ func (a *AARImport) SystemModules() string { return "" } -func (a *AARImport) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { +func (a *AARImport) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { if a.properties.Min_sdk_version != nil { - return android.SdkSpecFrom(ctx, *a.properties.Min_sdk_version) + return android.ApiLevelFrom(ctx, *a.properties.Min_sdk_version) } - return a.SdkVersion(ctx) + return a.SdkVersion(ctx).ApiLevel } func (a *AARImport) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) android.SdkSpec { diff --git a/java/app.go b/java/app.go index 1a324bfeb..939b95dd7 100755 --- a/java/app.go +++ b/java/app.go @@ -752,7 +752,7 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) { type appDepsInterface interface { SdkVersion(ctx android.EarlyModuleContext) android.SdkSpec - MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec + MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel RequiresStableAPIs(ctx android.BaseModuleContext) bool } @@ -865,10 +865,10 @@ func (a *AndroidApp) buildAppDependencyInfo(ctx android.ModuleContext) { } else { toMinSdkVersion := "(no version)" if m, ok := to.(interface { - MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec + MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel }); ok { - if v := m.MinSdkVersion(ctx); !v.ApiLevel.IsNone() { - toMinSdkVersion = v.ApiLevel.String() + if v := m.MinSdkVersion(ctx); !v.IsNone() { + toMinSdkVersion = v.String() } } else if m, ok := to.(interface{ MinSdkVersion() string }); ok { // TODO(b/175678607) eliminate the use of MinSdkVersion returning @@ -1523,9 +1523,9 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { manifestValues := &manifestValueAttribute{} // MinSdkVersion(ctx) calls SdkVersion(ctx) if no value for min_sdk_version is set - minSdkSpec := a.MinSdkVersion(ctx) - if !minSdkSpec.ApiLevel.IsPreview() && minSdkSpec.Valid() { - minSdkStr, err := minSdkSpec.EffectiveVersionString(ctx) + minSdkVersion := a.MinSdkVersion(ctx) + if !minSdkVersion.IsPreview() && !minSdkVersion.IsInvalid() { + minSdkStr, err := minSdkVersion.EffectiveVersionString(ctx) if err == nil { manifestValues.MinSdkVersion = &minSdkStr } diff --git a/java/app_import.go b/java/app_import.go index e24e7804e..c1de66745 100644 --- a/java/app_import.go +++ b/java/app_import.go @@ -426,8 +426,8 @@ func (a *AndroidAppImport) SdkVersion(ctx android.EarlyModuleContext) android.Sd return android.SdkSpecPrivate } -func (a *AndroidAppImport) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { - return android.SdkSpecPrivate +func (a *AndroidAppImport) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { + return android.SdkSpecPrivate.ApiLevel } func (a *AndroidAppImport) LintDepSets() LintDepSets { diff --git a/java/base.go b/java/base.go index 85f4a5e06..75ec16d6f 100644 --- a/java/base.go +++ b/java/base.go @@ -489,7 +489,7 @@ type Module struct { hideApexVariantFromMake bool sdkVersion android.SdkSpec - minSdkVersion android.SdkSpec + minSdkVersion android.ApiLevel maxSdkVersion android.SdkSpec sourceExtensions []string @@ -665,11 +665,11 @@ func (j *Module) SystemModules() string { return proptools.String(j.deviceProperties.System_modules) } -func (j *Module) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { +func (j *Module) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { if j.deviceProperties.Min_sdk_version != nil { - return android.SdkSpecFrom(ctx, *j.deviceProperties.Min_sdk_version) + return android.ApiLevelFrom(ctx, *j.deviceProperties.Min_sdk_version) } - return j.SdkVersion(ctx) + return j.SdkVersion(ctx).ApiLevel } func (j *Module) MaxSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { @@ -685,7 +685,7 @@ func (j *Module) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) } func (j *Module) MinSdkVersionString() string { - return j.minSdkVersion.Raw + return j.minSdkVersion.String() } func (j *Module) TargetSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { @@ -881,7 +881,7 @@ func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.Opt j.ignoredAidlPermissionList = android.PathsForModuleSrcExcludes(ctx, exceptions, nil) } - aidlMinSdkVersion := j.MinSdkVersion(ctx).ApiLevel.String() + aidlMinSdkVersion := j.MinSdkVersion(ctx).String() flags = append(flags, "--min_sdk_version="+aidlMinSdkVersion) return strings.Join(flags, " "), deps @@ -1542,9 +1542,9 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { } if ctx.Device() { - lintSDKVersion := func(sdkSpec android.SdkSpec) int { - if v := sdkSpec.ApiLevel; !v.IsPreview() { - return v.FinalInt() + lintSDKVersion := func(apiLevel android.ApiLevel) int { + if !apiLevel.IsPreview() { + return apiLevel.FinalInt() } else { // When running metalava, we pass --version-codename. When that value // is not REL, metalava will add 1 to the --current-version argument. @@ -1575,8 +1575,8 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { j.linter.classpath = append(append(android.Paths(nil), flags.bootClasspath...), flags.classpath...) j.linter.classes = j.implementationJarFile j.linter.minSdkVersion = lintSDKVersion(j.MinSdkVersion(ctx)) - j.linter.targetSdkVersion = lintSDKVersion(j.TargetSdkVersion(ctx)) - j.linter.compileSdkVersion = lintSDKVersion(j.SdkVersion(ctx)) + j.linter.targetSdkVersion = lintSDKVersion(j.TargetSdkVersion(ctx).ApiLevel) + j.linter.compileSdkVersion = lintSDKVersion(j.SdkVersion(ctx).ApiLevel) j.linter.compileSdkKind = j.SdkVersion(ctx).Kind j.linter.javaLanguageLevel = flags.javaVersion.String() j.linter.kotlinLanguageLevel = "1.3" @@ -1846,15 +1846,14 @@ func (j *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu // Implements android.ApexModule func (j *Module) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error { sdkVersionSpec := j.SdkVersion(ctx) - minSdkVersionSpec := j.MinSdkVersion(ctx) - if !minSdkVersionSpec.Specified() { + minSdkVersion := j.MinSdkVersion(ctx) + if !minSdkVersion.Specified() { return fmt.Errorf("min_sdk_version is not specified") } // If the module is compiling against core (via sdk_version), skip comparison check. if sdkVersionSpec.Kind == android.SdkCore { return nil } - minSdkVersion := minSdkVersionSpec.ApiLevel if minSdkVersion.GreaterThan(sdkVersion) { return fmt.Errorf("newer SDK(%v)", minSdkVersion) } diff --git a/java/classpath_fragment.go b/java/classpath_fragment.go index cf81ddb5d..45e6175f2 100644 --- a/java/classpath_fragment.go +++ b/java/classpath_fragment.go @@ -130,13 +130,13 @@ func configuredJarListToClasspathJars(ctx android.ModuleContext, configuredJars if s, ok := m.(*SdkLibrary); ok { // TODO(208456999): instead of mapping "current" to latest, min_sdk_version should never be set to "current" if s.minSdkVersion.Specified() { - if s.minSdkVersion.ApiLevel.IsCurrent() { + if s.minSdkVersion.IsCurrent() { jar.minSdkVersion = ctx.Config().DefaultAppTargetSdk(ctx).String() } else { - jar.minSdkVersion = s.minSdkVersion.ApiLevel.String() + jar.minSdkVersion = s.minSdkVersion.String() } } - if s.maxSdkVersion.Specified() { + if s.maxSdkVersion.ApiLevel.Specified() { if s.maxSdkVersion.ApiLevel.IsCurrent() { jar.maxSdkVersion = ctx.Config().DefaultAppTargetSdk(ctx).String() } else { diff --git a/java/dex.go b/java/dex.go index 7b6a99a8a..4d6aa3456 100644 --- a/java/dex.go +++ b/java/dex.go @@ -343,7 +343,7 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8Fl type compileDexParams struct { flags javaBuilderFlags sdkVersion android.SdkSpec - minSdkVersion android.SdkSpec + minSdkVersion android.ApiLevel classesJar android.Path jarName string } diff --git a/java/droiddoc.go b/java/droiddoc.go index e98b9ea29..3e210088b 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -248,8 +248,8 @@ func (j *Javadoc) SystemModules() string { return proptools.String(j.properties.System_modules) } -func (j *Javadoc) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { - return j.SdkVersion(ctx) +func (j *Javadoc) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { + return j.SdkVersion(ctx).ApiLevel } func (j *Javadoc) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) android.SdkSpec { @@ -304,7 +304,7 @@ func (j *Javadoc) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.Op flags = append(flags, "-I"+src.String()) } - minSdkVersion := j.MinSdkVersion(ctx).ApiLevel.FinalOrFutureInt() + minSdkVersion := j.MinSdkVersion(ctx).FinalOrFutureInt() flags = append(flags, fmt.Sprintf("--min_sdk_version=%v", minSdkVersion)) return strings.Join(flags, " "), deps diff --git a/java/hiddenapi.go b/java/hiddenapi.go index c4fc65f2e..d25096b15 100644 --- a/java/hiddenapi.go +++ b/java/hiddenapi.go @@ -73,7 +73,7 @@ type hiddenAPIModule interface { android.Module hiddenAPIIntf - MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec + MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel } type hiddenAPIIntf interface { @@ -157,7 +157,7 @@ func (h *hiddenAPI) hiddenAPIEncodeDex(ctx android.ModuleContext, dexJar android // Create a copy of the dex jar which has been encoded with hiddenapi flags. flagsCSV := hiddenAPISingletonPaths(ctx).flags outputDir := android.PathForModuleOut(ctx, "hiddenapi").OutputPath - encodedDex := hiddenAPIEncodeDex(ctx, dexJar, flagsCSV, uncompressDex, android.SdkSpecNone, outputDir) + encodedDex := hiddenAPIEncodeDex(ctx, dexJar, flagsCSV, uncompressDex, android.NoneApiLevel, outputDir) // Use the encoded dex jar from here onwards. return encodedDex @@ -253,7 +253,7 @@ var hiddenAPIEncodeDexRule = pctx.AndroidStaticRule("hiddenAPIEncodeDex", bluepr // The encode dex rule requires unzipping, encoding and rezipping the classes.dex files along with // all the resources from the input jar. It also ensures that if it was uncompressed in the input // it stays uncompressed in the output. -func hiddenAPIEncodeDex(ctx android.ModuleContext, dexInput, flagsCSV android.Path, uncompressDex bool, minSdkVersion android.SdkSpec, outputDir android.OutputPath) android.OutputPath { +func hiddenAPIEncodeDex(ctx android.ModuleContext, dexInput, flagsCSV android.Path, uncompressDex bool, minSdkVersion android.ApiLevel, outputDir android.OutputPath) android.OutputPath { // The output file has the same name as the input file and is in the output directory. output := outputDir.Join(ctx, dexInput.Base()) @@ -283,7 +283,7 @@ func hiddenAPIEncodeDex(ctx android.ModuleContext, dexInput, flagsCSV android.Pa // If the library is targeted for Q and/or R then make sure that they do not // have any S+ flags encoded as that will break the runtime. - minApiLevel := minSdkVersion.ApiLevel + minApiLevel := minSdkVersion if !minApiLevel.IsNone() { if minApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(ctx, "R")) { hiddenapiFlags = hiddenapiFlags + " --max-hiddenapi-level=max-target-r" diff --git a/java/hiddenapi_modular.go b/java/hiddenapi_modular.go index be4a48e5b..445ca1e39 100644 --- a/java/hiddenapi_modular.go +++ b/java/hiddenapi_modular.go @@ -1278,7 +1278,7 @@ type bootDexInfo struct { uncompressDex bool // The minimum sdk version that the dex jar will be used on. - minSdkVersion android.SdkSpec + minSdkVersion android.ApiLevel } // bootDexInfoByModule is a map from module name (as returned by module.Name()) to the boot dex diff --git a/java/java.go b/java/java.go index 0841dad5e..287bdace3 100644 --- a/java/java.go +++ b/java/java.go @@ -811,7 +811,7 @@ func (p *librarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberCo // If the min_sdk_version was set then add the canonical representation of the API level to the // snapshot. if j.deviceProperties.Min_sdk_version != nil { - canonical := android.ReplaceFinalizedCodenames(ctx.SdkModuleContext().Config(), j.minSdkVersion.ApiLevel.String()) + canonical := android.ReplaceFinalizedCodenames(ctx.SdkModuleContext().Config(), j.minSdkVersion.String()) p.MinSdkVersion = proptools.StringPtr(canonical) } @@ -1874,7 +1874,7 @@ type Import struct { hideApexVariantFromMake bool sdkVersion android.SdkSpec - minSdkVersion android.SdkSpec + minSdkVersion android.ApiLevel } var _ PermittedPackagesForUpdatableBootJars = (*Import)(nil) @@ -1891,11 +1891,11 @@ func (j *Import) SystemModules() string { return "none" } -func (j *Import) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { +func (j *Import) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { if j.properties.Min_sdk_version != nil { - return android.SdkSpecFrom(ctx, *j.properties.Min_sdk_version) + return android.ApiLevelFrom(ctx, *j.properties.Min_sdk_version) } - return j.SdkVersion(ctx) + return j.SdkVersion(ctx).ApiLevel } func (j *Import) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) android.SdkSpec { @@ -2161,15 +2161,14 @@ func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error { sdkVersionSpec := j.SdkVersion(ctx) - minSdkVersionSpec := j.MinSdkVersion(ctx) - if !minSdkVersionSpec.Specified() { + minSdkVersion := j.MinSdkVersion(ctx) + if !minSdkVersion.Specified() { return fmt.Errorf("min_sdk_version is not specified") } // If the module is compiling against core (via sdk_version), skip comparison check. if sdkVersionSpec.Kind == android.SdkCore { return nil } - minSdkVersion := minSdkVersionSpec.ApiLevel if minSdkVersion.GreaterThan(sdkVersion) { return fmt.Errorf("newer SDK(%v)", minSdkVersion) } diff --git a/java/rro.go b/java/rro.go index 9d0667cf0..49737b946 100644 --- a/java/rro.go +++ b/java/rro.go @@ -175,11 +175,11 @@ func (r *RuntimeResourceOverlay) SystemModules() string { return "" } -func (r *RuntimeResourceOverlay) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { +func (r *RuntimeResourceOverlay) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { if r.properties.Min_sdk_version != nil { - return android.SdkSpecFrom(ctx, *r.properties.Min_sdk_version) + return android.ApiLevelFrom(ctx, *r.properties.Min_sdk_version) } - return r.SdkVersion(ctx) + return r.SdkVersion(ctx).ApiLevel } func (r *RuntimeResourceOverlay) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) android.SdkSpec { diff --git a/java/sdk_library.go b/java/sdk_library.go index d2fbfd953..5477ed664 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1231,7 +1231,7 @@ func (module *SdkLibrary) getGeneratedApiScopes(ctx android.EarlyModuleContext) var _ android.ModuleWithMinSdkVersionCheck = (*SdkLibrary)(nil) func (module *SdkLibrary) CheckMinSdkVersion(ctx android.ModuleContext) { - android.CheckMinSdkVersion(ctx, module.MinSdkVersion(ctx).ApiLevel, func(c android.ModuleContext, do android.PayloadDepsCallback) { + android.CheckMinSdkVersion(ctx, module.MinSdkVersion(ctx), func(c android.ModuleContext, do android.PayloadDepsCallback) { ctx.WalkDeps(func(child android.Module, parent android.Module) bool { isExternal := !module.depIsInSameApex(ctx, child) if am, ok := child.(android.ApexModule); ok { @@ -1775,7 +1775,7 @@ func (module *SdkLibrary) UniqueApexVariations() bool { // Creates the xml file that publicizes the runtime library func (module *SdkLibrary) createXmlFile(mctx android.DefaultableHookContext) { - moduleMinApiLevel := module.Library.MinSdkVersion(mctx).ApiLevel + moduleMinApiLevel := module.Library.MinSdkVersion(mctx) var moduleMinApiLevelStr = moduleMinApiLevel.String() if moduleMinApiLevel == android.NoneApiLevel { moduleMinApiLevelStr = "current" @@ -2414,8 +2414,8 @@ func (module *SdkLibraryImport) UniqueApexVariations() bool { } // MinSdkVersion - Implements hiddenAPIModule -func (module *SdkLibraryImport) MinSdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { - return android.SdkSpecNone +func (module *SdkLibraryImport) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { + return android.NoneApiLevel } var _ hiddenAPIModule = (*SdkLibraryImport)(nil) |