Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 014a8571 authored by Baligh Uddin's avatar Baligh Uddin
Browse files

Allow codename.fingerprint format for minSdkVersion

Use codename.fingerprint format for minSdkVersion if it is unset
in the manifest and
UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT=true.

Using a utility function in sdk.go to check whether to apply
api.fingerprint.

BUG: 130541924
Change-Id: I748a25c419033bf54b63171d334644fcd0ecc78f
parent a22f30e0
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -376,15 +376,17 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) {
		}

		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() {
+6 −8
Original line number Diff line number Diff line
@@ -93,12 +93,10 @@ func manifestFixer(ctx android.ModuleContext, manifest android.Path, sdkContext

	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") {
	minSdkVersion := sdkVersionOrDefault(ctx, sdkContext.minSdkVersion())
	if (UseApiFingerprint(ctx, sdkContext.targetSdkVersion()) ||
		UseApiFingerprint(ctx, sdkContext.minSdkVersion())) {
			apiFingerprint := ApiFingerprintPath(ctx)
		targetSdkVersion += fmt.Sprintf(".$$(cat %s)", apiFingerprint.String())
			deps = append(deps, apiFingerprint)
	}

@@ -110,7 +108,7 @@ func manifestFixer(ctx android.ModuleContext, manifest android.Path, sdkContext
		Implicits:   deps,
		Output:      fixedManifest,
		Args: map[string]string{
			"minSdkVersion":    sdkVersionOrDefault(ctx, sdkContext.minSdkVersion()),
			"minSdkVersion":    minSdkVersion,
			"targetSdkVersion": targetSdkVersion,
			"args":             strings.Join(args, " "),
		},
+18 −2
Original line number Diff line number Diff line
@@ -47,13 +47,29 @@ type sdkContext interface {
	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)