apex mixed builds: use the .capex when required.
The .capex is the compressed apex. Depending on various conditions, the
.capex should be installed, and thus the
apex.go#ProcessBazelQueryResponse should set the .capex as the main apex
output file.
Fixes: 264873511
Test: new unit test with install rules
Test: m com.android.adbd --bazel-mode-staging gives:
$ ls -lah
out/target/product/generic_arm64/system/apex/com.android.adbd.capex
-rw-r----- 1 jingwen primarygroup 3.6M Jan 10 14:44 out/target/product/generic_arm64/system/apex/com.android.adbd.capex
Change-Id: Ic3143cc6999f111428c6adb76760be8ddc4b6344
diff --git a/apex/apex.go b/apex/apex.go
index b9a3c8f..e99823b 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1905,9 +1905,15 @@
return
}
a.installDir = android.PathForModuleInstall(ctx, "apex")
- a.outputApexFile = android.PathForBazelOut(ctx, outputs.SignedOutput)
- a.outputFile = a.outputApexFile
+
+ // Set the output file to .apex or .capex depending on the compression configuration.
a.setCompression(ctx)
+ if a.isCompressed {
+ a.outputApexFile = android.PathForBazelOut(ctx, outputs.SignedCompressedOutput)
+ } else {
+ a.outputApexFile = android.PathForBazelOut(ctx, outputs.SignedOutput)
+ }
+ a.outputFile = a.outputApexFile
// TODO(b/257829940): These are used by the apex_keys_text singleton; would probably be a clearer
// interface if these were set in a provider rather than the module itself