Merge "Set targetsdkversion to future level if TARGET_BUILD_APPS is not empty" am: 16ce4801ef am: 4b669af97c

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1907152

Change-Id: Idc7aff0edc89c3ae2aed7ff5a4f5fec84e3cc85d
This commit is contained in:
Spandan Das
2021-12-03 18:32:02 +00:00
committed by Automerger Merge Worker

View File

@@ -16,6 +16,7 @@ package java
import ( import (
"fmt" "fmt"
"strconv"
"strings" "strings"
"github.com/google/blueprint" "github.com/google/blueprint"
@@ -42,6 +43,20 @@ var manifestMergerRule = pctx.AndroidStaticRule("manifestMerger",
}, },
"args", "libs") "args", "libs")
// targetSdkVersion for manifest_fixer
// When TARGET_BUILD_APPS is not empty, this method returns the unreleased(future) API level
// This enables release builds (that run with TARGET_BUILD_APPS=[val...]) to target APIs that have not yet been finalized as part of an SDK
func targetSdkVersionForManifestFixer(ctx android.ModuleContext, sdkContext android.SdkContext) string {
if ctx.Config().UnbundledBuildApps() {
return strconv.Itoa(android.FutureApiLevel.FinalOrFutureInt())
}
targetSdkVersion, err := sdkContext.TargetSdkVersion(ctx).EffectiveVersionString(ctx)
if err != nil {
ctx.ModuleErrorf("invalid targetSdkVersion: %s", err)
}
return targetSdkVersion
}
// Uses manifest_fixer.py to inject minSdkVersion, etc. into an AndroidManifest.xml // Uses manifest_fixer.py to inject minSdkVersion, etc. into an AndroidManifest.xml
func manifestFixer(ctx android.ModuleContext, manifest android.Path, sdkContext android.SdkContext, func manifestFixer(ctx android.ModuleContext, manifest android.Path, sdkContext android.SdkContext,
classLoaderContexts dexpreopt.ClassLoaderContextMap, isLibrary, useEmbeddedNativeLibs, usesNonSdkApis, classLoaderContexts dexpreopt.ClassLoaderContextMap, isLibrary, useEmbeddedNativeLibs, usesNonSdkApis,
@@ -89,10 +104,7 @@ func manifestFixer(ctx android.ModuleContext, manifest android.Path, sdkContext
args = append(args, "--logging-parent", loggingParent) args = append(args, "--logging-parent", loggingParent)
} }
var deps android.Paths var deps android.Paths
targetSdkVersion, err := sdkContext.TargetSdkVersion(ctx).EffectiveVersionString(ctx) targetSdkVersion := targetSdkVersionForManifestFixer(ctx, sdkContext)
if err != nil {
ctx.ModuleErrorf("invalid targetSdkVersion: %s", err)
}
if UseApiFingerprint(ctx) && ctx.ModuleName() != "framework-res" { if UseApiFingerprint(ctx) && ctx.ModuleName() != "framework-res" {
targetSdkVersion = ctx.Config().PlatformSdkCodename() + fmt.Sprintf(".$$(cat %s)", ApiFingerprintPath(ctx).String()) targetSdkVersion = ctx.Config().PlatformSdkCodename() + fmt.Sprintf(".$$(cat %s)", ApiFingerprintPath(ctx).String())
deps = append(deps, ApiFingerprintPath(ctx)) deps = append(deps, ApiFingerprintPath(ctx))