Merge "Install flattened/unflattend apexes for GSI"
diff --git a/android/config.go b/android/config.go
index 271a54a..e1db55d 100644
--- a/android/config.go
+++ b/android/config.go
@@ -1103,6 +1103,10 @@
return Bool(c.productVariables.EnforceProductPartitionInterface)
}
+func (c *config) InstallExtraFlattenedApexes() bool {
+ return Bool(c.productVariables.InstallExtraFlattenedApexes)
+}
+
func (c *config) ProductHiddenAPIStubs() []string {
return c.productVariables.ProductHiddenAPIStubs
}
diff --git a/android/variable.go b/android/variable.go
index 25a5dc0..628408e 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -311,6 +311,8 @@
MissingUsesLibraries []string `json:",omitempty"`
EnforceProductPartitionInterface *bool `json:",omitempty"`
+
+ InstallExtraFlattenedApexes *bool `json:",omitempty"`
}
func boolPtr(v bool) *bool {
diff --git a/apex/apex.go b/apex/apex.go
index 81c1230..16bac94 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -913,6 +913,10 @@
} else {
a.suffix = ""
a.primaryApexType = true
+
+ if ctx.Config().InstallExtraFlattenedApexes() {
+ a.externalDeps = append(a.externalDeps, a.Name()+flattenedSuffix)
+ }
}
case zipApex:
if proptools.String(a.properties.Payload_type) == "zip" {
diff --git a/apex/apex_test.go b/apex/apex_test.go
index ee5d0f2..a5ccc1b 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -2457,6 +2457,29 @@
ensureContains(t, androidMk, "LOCAL_MODULE := myapex\n")
}
+func TestInstallExtraFlattenedApexes(t *testing.T) {
+ ctx, config := testApex(t, `
+ apex {
+ name: "myapex",
+ key: "myapex.key",
+ }
+ apex_key {
+ name: "myapex.key",
+ public_key: "testkey.avbpubkey",
+ private_key: "testkey.pem",
+ }
+ `, func(fs map[string][]byte, config android.Config) {
+ config.TestProductVariables.InstallExtraFlattenedApexes = proptools.BoolPtr(true)
+ })
+ ab := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle)
+ ensureListContains(t, ab.externalDeps, "myapex.flattened")
+ mk := android.AndroidMkDataForTest(t, config, "", ab)
+ var builder strings.Builder
+ mk.Custom(&builder, ab.Name(), "TARGET_", "", mk)
+ androidMk := builder.String()
+ ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES += myapex.flattened")
+}
+
func TestApexUsesOtherApex(t *testing.T) {
ctx, _ := testApex(t, `
apex {