apex: respect PRODUCT_COMPRESSED_APEX for prebuilt APEXes
If a prebuilt APEX is compressed, it's installed without decompression
even when PRODUCT_COMPRESSED_APEX is false.
This change decompresses the prebuilt/compressed APEX.
Bug: 356533488
Test: OVERRIDE_PRODUCT_COMPRESSED_APEX=false m
Change-Id: Ifdde074e383837df92d172bc483bfca9a97cb6f8
diff --git a/apex/prebuilt.go b/apex/prebuilt.go
index b9cc09b..5e46bab 100644
--- a/apex/prebuilt.go
+++ b/apex/prebuilt.go
@@ -42,6 +42,11 @@
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 @@
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,
})