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

Commit 5417f775 authored by Jooyung Han's avatar Jooyung Han
Browse files

apex: Deprecate legacy_android10_support prop

min_sdk_version = 29 implies that the module should support Android10.

Bug: 150431944
Test: m
Change-Id: Iad90a239898f59456900ae7816b90379b1b43406
parent da1aefe4
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -21,13 +21,14 @@ import (
	"sync"
)

const (
	SdkVersion_Android10 = 29
)

type ApexInfo struct {
	// Name of the apex variant that this module is mutated into
	ApexName string

	// Whether this apex variant needs to target Android 10
	LegacyAndroid10Support bool

	MinSdkVersion int
}

@@ -207,7 +208,7 @@ func (m *ApexModuleBase) ChooseSdkVersion(versionList []string, useLatest bool)
}

func (m *ApexModuleBase) ShouldSupportAndroid10() bool {
	return !m.IsForPlatform() && (m.ApexProperties.Info.MinSdkVersion <= 29 || m.ApexProperties.Info.LegacyAndroid10Support)
	return !m.IsForPlatform() && (m.ApexProperties.Info.MinSdkVersion <= SdkVersion_Android10)
}

func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) {
+2 −8
Original line number Diff line number Diff line
@@ -1059,11 +1059,9 @@ func apexDepsMutator(mctx android.TopDownMutatorContext) {
	var apexBundles []android.ApexInfo
	var directDep bool
	if a, ok := mctx.Module().(*apexBundle); ok && !a.vndkApex {
		minSdkVersion := a.minSdkVersion(mctx)
		apexBundles = []android.ApexInfo{android.ApexInfo{
			ApexName:      mctx.ModuleName(),
			LegacyAndroid10Support: proptools.Bool(a.properties.Legacy_android10_support),
			MinSdkVersion:          minSdkVersion,
			MinSdkVersion: a.minSdkVersion(mctx),
		}}
		directDep = true
	} else if am, ok := mctx.Module().(android.ApexModule); ok {
@@ -1307,10 +1305,6 @@ type apexBundleProperties struct {
	// Should be only used in tests#.
	Test_only_no_hashtree *bool

	// Whether this APEX should support Android10. Default is false. If this is set true, then apex_manifest.json is bundled as well
	// because Android10 requires legacy apex_manifest.json instead of apex_manifest.pb
	Legacy_android10_support *bool

	IsCoverageVariant bool `blueprint:"mutated"`

	// Whether this APEX is considered updatable or not. When set to true, this will enforce additional
+1 −1
Original line number Diff line number Diff line
@@ -3737,7 +3737,7 @@ func TestLegacyAndroid10Support(t *testing.T) {
			name: "myapex",
			key: "myapex.key",
			native_shared_libs: ["mylib"],
			legacy_android10_support: true,
			min_sdk_version: "29",
		}

		apex_key {
+8 −8
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import (
	"path/filepath"
	"runtime"
	"sort"
	"strconv"
	"strings"

	"android/soong/android"
@@ -206,7 +207,7 @@ func (a *apexBundle) buildManifest(ctx android.ModuleContext, provideNativeLibs,
		},
	})

	if proptools.Bool(a.properties.Legacy_android10_support) {
	if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
		// b/143654022 Q apexd can't understand newly added keys in apex_manifest.json
		// prepare stripped-down version so that APEX modules built from R+ can be installed to Q
		a.manifestJsonOut = android.PathForModuleOut(ctx, "apex_manifest.json")
@@ -355,7 +356,7 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) {
	var emitCommands []string
	imageContentFile := android.PathForModuleOut(ctx, "content.txt")
	emitCommands = append(emitCommands, "echo ./apex_manifest.pb >> "+imageContentFile.String())
	if proptools.Bool(a.properties.Legacy_android10_support) {
	if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
		emitCommands = append(emitCommands, "echo ./apex_manifest.json >> "+imageContentFile.String())
	}
	for _, fi := range a.filesInfo {
@@ -454,10 +455,9 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) {
		targetSdkVersion := ctx.Config().DefaultAppTargetSdk()
		minSdkVersion := ctx.Config().DefaultAppTargetSdk()

		// TODO: this should be based on min_sdk_version property of an APEX.
		if proptools.Bool(a.properties.Legacy_android10_support) {
			targetSdkVersion = "29"
			minSdkVersion = "29"
		if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
			minSdkVersion = strconv.Itoa(a.minSdkVersion(ctx))
			targetSdkVersion = strconv.Itoa(a.minSdkVersion(ctx))
		}

		if java.UseApiFingerprint(ctx) {
@@ -486,7 +486,7 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) {
			ctx.PropertyErrorf("test_only_no_hashtree", "not available")
			return
		}
		if !proptools.Bool(a.properties.Legacy_android10_support) || a.testOnlyShouldSkipHashtreeGeneration() {
		if a.minSdkVersion(ctx) > android.SdkVersion_Android10 || a.testOnlyShouldSkipHashtreeGeneration() {
			// Apexes which are supposed to be installed in builtin dirs(/system, etc)
			// don't need hashtree for activation. Therefore, by removing hashtree from
			// apex bundle (filesystem image in it, to be specific), we can save storage.
@@ -499,7 +499,7 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) {
			optFlags = append(optFlags, "--do_not_check_keyname")
		}

		if proptools.Bool(a.properties.Legacy_android10_support) {
		if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
			implicitInputs = append(implicitInputs, a.manifestJsonOut)
			optFlags = append(optFlags, "--manifest_json "+a.manifestJsonOut.String())
		}