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

Commit b42b703f authored by Jooyung Han's avatar Jooyung Han Committed by Gerrit Code Review
Browse files

Merge "apex: respect PRODUCT_COMPRESSED_APEX for prebuilt APEXes" into main

parents 81e60c9c 26ec8484
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -8993,6 +8993,30 @@ func TestCompressedApex(t *testing.T) {
	ensureContains(t, androidMk, "LOCAL_MODULE_STEM := myapex.capex\n")
}

func TestApexSet_ShouldRespectCompressedApexFlag(t *testing.T) {
	for _, compressionEnabled := range []bool{true, false} {
		t.Run(fmt.Sprintf("compressionEnabled=%v", compressionEnabled), func(t *testing.T) {
			ctx := testApex(t, `
				apex_set {
					name: "com.company.android.myapex",
					apex_name: "com.android.myapex",
					set: "company-myapex.apks",
				}
			`, android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
				variables.CompressedApex = proptools.BoolPtr(compressionEnabled)
			}),
			)

			build := ctx.ModuleForTests("com.company.android.myapex", "android_common_com.android.myapex").Output("com.company.android.myapex.apex")
			if compressionEnabled {
				ensureEquals(t, build.Rule.String(), "android/soong/android.Cp")
			} else {
				ensureEquals(t, build.Rule.String(), "android/apex.decompressApex")
			}
		})
	}
}

func TestPreferredPrebuiltSharedLibDep(t *testing.T) {
	ctx := testApex(t, `
		apex {
+12 −1
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ var (
			CommandDeps: []string{"${extract_apks}"},
		},
		"abis", "allow-prereleased", "sdk-version", "skip-sdk-check")
	decompressApex = pctx.StaticRule("decompressApex", blueprint.RuleParams{
		Command:     `${deapexer} decompress --copy-if-uncompressed --input ${in} --output ${out}`,
		CommandDeps: []string{"${deapexer}"},
		Description: "decompress",
	})
)

type prebuilt interface {
@@ -1072,8 +1077,14 @@ func (a *ApexSet) GenerateAndroidBuildActions(ctx android.ModuleContext) {

	inputApex := android.OptionalPathForModuleSrc(ctx, a.prebuiltCommonProperties.Selected_apex).Path()
	a.outputApex = android.PathForModuleOut(ctx, a.installFilename)

	// Build the output APEX. If compression is not enabled, make sure the output is not compressed even if the input is compressed
	buildRule := android.Cp
	if !ctx.Config().ApexCompressionEnabled() {
		buildRule = decompressApex
	}
	ctx.Build(pctx, android.BuildParams{
		Rule:   android.Cp,
		Rule:   buildRule,
		Input:  inputApex,
		Output: a.outputApex,
	})