diff --git a/apex/androidmk.go b/apex/androidmk.go index 0b114f83b..44082836f 100644 --- a/apex/androidmk.go +++ b/apex/androidmk.go @@ -126,8 +126,18 @@ func (a *apexBundle) androidMkForFiles(w io.Writer, apexBundleName, apexName, mo moduleName := a.fullModuleName(apexBundleName, &fi) - if !android.InList(moduleName, moduleNames) { - moduleNames = append(moduleNames, moduleName) + // This name will be added to LOCAL_REQUIRED_MODULES of the APEX. We need to be + // arch-specific otherwise we will end up installing both ABIs even when only + // either of the ABI is requested. + aName := moduleName + switch fi.multilib { + case "lib32": + aName = aName + ":32" + case "lib64": + aName = aName + ":64" + } + if !android.InList(aName, moduleNames) { + moduleNames = append(moduleNames, aName) } if linkToSystemLib { diff --git a/apex/apex.go b/apex/apex.go index 04d20f634..507d3ed0e 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -441,6 +441,8 @@ type apexFile struct { transitiveDep bool isJniLib bool + multilib string + // TODO(jiyong): remove this module android.Module } @@ -460,6 +462,7 @@ func newApexFile(ctx android.BaseModuleContext, builtFile android.Path, androidM ret.requiredModuleNames = module.RequiredModuleNames() ret.targetRequiredModuleNames = module.TargetRequiredModuleNames() ret.hostRequiredModuleNames = module.HostRequiredModuleNames() + ret.multilib = module.Target().Arch.ArchType.Multilib } return ret } diff --git a/apex/apex_test.go b/apex/apex_test.go index aa4b9c8c6..d2884145f 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -5680,7 +5680,7 @@ func TestSymlinksFromApexToSystemRequiredModuleNames(t *testing.T) { ensureNotContains(t, androidMk, "LOCAL_MODULE := prebuilt_myotherlib.myapex\n") ensureNotContains(t, androidMk, "LOCAL_MODULE := myotherlib.myapex\n") // `myapex` should have `myotherlib` in its required line, not `prebuilt_myotherlib` - ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES += mylib.myapex myotherlib apex_manifest.pb.myapex apex_pubkey.myapex\n") + ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES += mylib.myapex:64 myotherlib:64 apex_manifest.pb.myapex apex_pubkey.myapex\n") } func TestApexWithJniLibs(t *testing.T) {