From e19437e8f7e13407d8c89895bfc9d8d62a4c60d2 Mon Sep 17 00:00:00 2001 From: Daniel Norman Date: Thu, 28 Oct 2021 12:47:50 -0700 Subject: [PATCH] Adds multi_install_skip_symbol_files field (default false) to apex. Multi-installed APEXes share the same apex_name and are installed at the same time. Should be set to true for all multi-installed APEXes except the singular default version within the multi-installed group. Only the default version can install symbol files in $(PRODUCT_OUT}/apex, or else conflicting build rules may be created. Bug: 199290365 Test: see https://r.android.com/1872018 Change-Id: I0cd9d748d7be3a2de40ed14f13bad71912457ddc --- apex/androidmk.go | 5 +++++ apex/apex.go | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/apex/androidmk.go b/apex/androidmk.go index 80237fb5f..494cf2114 100644 --- a/apex/androidmk.go +++ b/apex/androidmk.go @@ -103,6 +103,11 @@ func (a *apexBundle) androidMkForFiles(w io.Writer, apexBundleName, apexName, mo return moduleNames } + // Avoid creating duplicate build rules for multi-installed APEXes. + if proptools.BoolDefault(a.properties.Multi_install_skip_symbol_files, false) { + return moduleNames + } + var postInstallCommands []string for _, fi := range a.filesInfo { if a.linkToSystemLib && fi.transitiveDep && fi.availableToPlatform() { diff --git a/apex/apex.go b/apex/apex.go index 33188cbcb..1021d4ebd 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -135,6 +135,16 @@ type apexBundleProperties struct { // Default: true. Installable *bool + // Whether this is multi-installed APEX should skip installing symbol files. + // Multi-installed APEXes share the same apex_name and are installed at the same time. + // Default is false. + // + // Should be set to true for all multi-installed APEXes except the singular + // default version within the multi-installed group. + // Only the default version can install symbol files in $(PRODUCT_OUT}/apex, + // or else conflicting build rules may be created. + Multi_install_skip_symbol_files *bool + // Whether this APEX can be compressed or not. Setting this property to false means this // APEX will never be compressed. When set to true, APEX will be compressed if other // conditions, e.g, target device needs to support APEX compression, are also fulfilled.