Merge "apex: respect PRODUCT_COMPRESSED_APEX for prebuilt APEXes" into main
This commit is contained in:
@@ -8993,6 +8993,30 @@ func TestCompressedApex(t *testing.T) {
|
|||||||
ensureContains(t, androidMk, "LOCAL_MODULE_STEM := myapex.capex\n")
|
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) {
|
func TestPreferredPrebuiltSharedLibDep(t *testing.T) {
|
||||||
ctx := testApex(t, `
|
ctx := testApex(t, `
|
||||||
apex {
|
apex {
|
||||||
|
@@ -42,6 +42,11 @@ var (
|
|||||||
CommandDeps: []string{"${extract_apks}"},
|
CommandDeps: []string{"${extract_apks}"},
|
||||||
},
|
},
|
||||||
"abis", "allow-prereleased", "sdk-version", "skip-sdk-check")
|
"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 {
|
type prebuilt interface {
|
||||||
@@ -1072,8 +1077,14 @@ func (a *ApexSet) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
|
|
||||||
inputApex := android.OptionalPathForModuleSrc(ctx, a.prebuiltCommonProperties.Selected_apex).Path()
|
inputApex := android.OptionalPathForModuleSrc(ctx, a.prebuiltCommonProperties.Selected_apex).Path()
|
||||||
a.outputApex = android.PathForModuleOut(ctx, a.installFilename)
|
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{
|
ctx.Build(pctx, android.BuildParams{
|
||||||
Rule: android.Cp,
|
Rule: buildRule,
|
||||||
Input: inputApex,
|
Input: inputApex,
|
||||||
Output: a.outputApex,
|
Output: a.outputApex,
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user