From 27151d93b6425ba2e9260e41193458e2d3ec22d9 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Mon, 16 Dec 2019 17:45:32 +0900 Subject: [PATCH] Override package name for VNDK APEX com.android.vndk.v is overridden with com.google.android.vndk.v. Test: m com.android.vndk.current && aapt2 dump badging ../system/apex/com.android.vndk.current.apex Change-Id: I623d7a144418d7198f0bbf09c5dc983ed1a631c6 Merged-In: I623d7a144418d7198f0bbf09c5dc983ed1a631c6 (cherry picked from commit 0ed1b1b1695b0f8ad75bd2493aef9f2801407f1c) --- apex/apex.go | 8 +++++++- apex/builder.go | 22 ++++++++++++++++++++-- apex/vndk.go | 3 ++- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index 488d3d32f..bf3f66f49 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -724,7 +724,13 @@ func (a *apexBundle) DepIsInSameApex(ctx android.BaseModuleContext, dep android. } func (a *apexBundle) getCertString(ctx android.BaseModuleContext) string { - certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(ctx.ModuleName()) + moduleName := ctx.ModuleName() + // VNDK APEXes share the same certificate. To avoid adding a new VNDK version to the OVERRIDE_* list, + // we check with the pseudo module name to see if its certificate is overridden. + if a.vndkApex { + moduleName = vndkApexName + } + certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(moduleName) if overridden { return ":" + certificate } diff --git a/apex/builder.go b/apex/builder.go index a90918d18..5322d85ca 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -350,8 +350,8 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) { implicitInputs = append(implicitInputs, cannedFsConfig, a.fileContexts, a.private_key_file, a.public_key_file) optFlags = append(optFlags, "--pubkey "+a.public_key_file.String()) - manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(a.Name()) - if overridden { + manifestPackageName := a.getOverrideManifestPackageName(ctx) + if manifestPackageName != "" { optFlags = append(optFlags, "--override_apk_package_name "+manifestPackageName) } @@ -534,3 +534,21 @@ func (a *apexBundle) buildFilesInfo(ctx android.ModuleContext) { } } } + +func (a *apexBundle) getOverrideManifestPackageName(ctx android.ModuleContext) string { + // For VNDK APEXes, check "com.android.vndk" in PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES + // to see if it should be overridden because their is dynamically generated + // according to its VNDK version. + if a.vndkApex { + overrideName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(vndkApexName) + if overridden { + return strings.Replace(*a.properties.Apex_name, vndkApexName, overrideName, 1) + } + return "" + } + manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(a.Name()) + if overridden { + return manifestPackageName + } + return "" +} diff --git a/apex/vndk.go b/apex/vndk.go index 15f7f87fe..43fcfcde0 100644 --- a/apex/vndk.go +++ b/apex/vndk.go @@ -26,7 +26,8 @@ import ( ) const ( - vndkApexNamePrefix = "com.android.vndk.v" + vndkApexName = "com.android.vndk" + vndkApexNamePrefix = vndkApexName + ".v" ) // apex_vndk creates a special variant of apex modules which contains only VNDK libraries.