diff --git a/android/config.go b/android/config.go index 89467d8db..89964a6bb 100644 --- a/android/config.go +++ b/android/config.go @@ -1272,6 +1272,10 @@ func (c *config) FlattenApex() bool { return Bool(c.productVariables.Flatten_apex) } +func (c *config) ForceApexSymlinkOptimization() bool { + return Bool(c.productVariables.ForceApexSymlinkOptimization) +} + func (c *config) CompressedApex() bool { return Bool(c.productVariables.CompressedApex) } diff --git a/android/variable.go b/android/variable.go index 753ddd7f7..3310e5fd2 100644 --- a/android/variable.go +++ b/android/variable.go @@ -320,9 +320,10 @@ type productVariables struct { Ndk_abis *bool `json:",omitempty"` Exclude_draft_ndk_apis *bool `json:",omitempty"` - Flatten_apex *bool `json:",omitempty"` - CompressedApex *bool `json:",omitempty"` - Aml_abis *bool `json:",omitempty"` + Flatten_apex *bool `json:",omitempty"` + ForceApexSymlinkOptimization *bool `json:",omitempty"` + CompressedApex *bool `json:",omitempty"` + Aml_abis *bool `json:",omitempty"` DexpreoptGlobalConfig *string `json:",omitempty"` diff --git a/apex/apex.go b/apex/apex.go index 9fb616d36..21820696e 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1913,9 +1913,11 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.linkToSystemLib = false } + forced := ctx.Config().ForceApexSymlinkOptimization() + // We don't need the optimization for updatable APEXes, as it might give false signal - // to the system health when the APEXes are still bundled (b/149805758) - if a.Updatable() && a.properties.ApexType == imageApex { + // to the system health when the APEXes are still bundled (b/149805758). + if !forced && a.Updatable() && a.properties.ApexType == imageApex { a.linkToSystemLib = false }