Revert "Revert "Allow codename.fingerprint format for minSdkVersion""
This reverts commit 230e241f58bd96a07bf6b6149878d7e872cf2d4e.
Reason for revert: This is a revert of a revert. Downstream problem has been fixed and have been validated locally and via Forrest build.
Change-Id: I89c51d25b3adb818ea44a983d0ac681a88790d8c
diff --git a/apex/builder.go b/apex/builder.go
index 9122188..290c1ea 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -376,15 +376,17 @@
}
targetSdkVersion := ctx.Config().DefaultAppTargetSdk()
- if targetSdkVersion == ctx.Config().PlatformSdkCodename() &&
- ctx.Config().UnbundledBuild() &&
- !ctx.Config().UnbundledBuildUsePrebuiltSdks() &&
- ctx.Config().IsEnvTrue("UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT") {
- apiFingerprint := java.ApiFingerprintPath(ctx)
- targetSdkVersion += fmt.Sprintf(".$$(cat %s)", apiFingerprint.String())
- implicitInputs = append(implicitInputs, apiFingerprint)
+ minSdkVersion := ctx.Config().DefaultAppTargetSdk()
+ if java.UseApiFingerprint(ctx, targetSdkVersion) {
+ targetSdkVersion += fmt.Sprintf(".$$(cat %s)", java.ApiFingerprintPath(ctx).String())
+ implicitInputs = append(implicitInputs, java.ApiFingerprintPath(ctx))
+ }
+ if java.UseApiFingerprint(ctx, minSdkVersion) {
+ minSdkVersion += fmt.Sprintf(".$$(cat %s)", java.ApiFingerprintPath(ctx).String())
+ implicitInputs = append(implicitInputs, java.ApiFingerprintPath(ctx))
}
optFlags = append(optFlags, "--target_sdk_version "+targetSdkVersion)
+ optFlags = append(optFlags, "--min_sdk_version "+minSdkVersion)
noticeFile := a.buildNoticeFile(ctx, a.Name()+suffix)
if noticeFile.Valid() {
diff --git a/java/android_manifest.go b/java/android_manifest.go
index 021883e..dc7a3fc 100644
--- a/java/android_manifest.go
+++ b/java/android_manifest.go
@@ -93,13 +93,11 @@
var deps android.Paths
targetSdkVersion := sdkVersionOrDefault(ctx, sdkContext.targetSdkVersion())
- if targetSdkVersion == ctx.Config().PlatformSdkCodename() &&
- ctx.Config().UnbundledBuild() &&
- !ctx.Config().UnbundledBuildUsePrebuiltSdks() &&
- ctx.Config().IsEnvTrue("UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT") {
- apiFingerprint := ApiFingerprintPath(ctx)
- targetSdkVersion += fmt.Sprintf(".$$(cat %s)", apiFingerprint.String())
- deps = append(deps, apiFingerprint)
+ minSdkVersion := sdkVersionOrDefault(ctx, sdkContext.minSdkVersion())
+ if (UseApiFingerprint(ctx, sdkContext.targetSdkVersion()) ||
+ UseApiFingerprint(ctx, sdkContext.minSdkVersion())) {
+ apiFingerprint := ApiFingerprintPath(ctx)
+ deps = append(deps, apiFingerprint)
}
fixedManifest := android.PathForModuleOut(ctx, "manifest_fixer", "AndroidManifest.xml")
@@ -110,7 +108,7 @@
Implicits: deps,
Output: fixedManifest,
Args: map[string]string{
- "minSdkVersion": sdkVersionOrDefault(ctx, sdkContext.minSdkVersion()),
+ "minSdkVersion": minSdkVersion,
"targetSdkVersion": targetSdkVersion,
"args": strings.Join(args, " "),
},
diff --git a/java/sdk.go b/java/sdk.go
index 66eb284..73b7dcf 100644
--- a/java/sdk.go
+++ b/java/sdk.go
@@ -47,13 +47,29 @@
targetSdkVersion() string
}
+func UseApiFingerprint(ctx android.BaseModuleContext, v string) bool {
+ if v == ctx.Config().PlatformSdkCodename() &&
+ ctx.Config().UnbundledBuild() &&
+ !ctx.Config().UnbundledBuildUsePrebuiltSdks() &&
+ ctx.Config().IsEnvTrue("UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT") {
+ return true
+ }
+ return false
+}
+
func sdkVersionOrDefault(ctx android.BaseModuleContext, v string) string {
+ var sdkVersion string
switch v {
case "", "none", "current", "test_current", "system_current", "core_current", "core_platform":
- return ctx.Config().DefaultAppTargetSdk()
+ sdkVersion = ctx.Config().DefaultAppTargetSdk()
default:
- return v
+ sdkVersion = v
}
+ if UseApiFingerprint(ctx, sdkVersion) {
+ apiFingerprint := ApiFingerprintPath(ctx)
+ sdkVersion += fmt.Sprintf(".$$(cat %s)", apiFingerprint.String())
+ }
+ return sdkVersion
}
// Returns a sdk version as a number. For modules targeting an unreleased SDK (meaning it does not yet have a number)