From 919a5b3e6258d08f21d71e4ba880abf2103578a9 Mon Sep 17 00:00:00 2001 From: Nikita Ioffe Date: Mon, 6 May 2019 19:07:45 +0100 Subject: [PATCH] Do not check for APEX and APK package name collisions during normal boot * Check only on installs/OTA first time boots as this is the only places collisions might occur. Bug: 131611765 Test: atest CtsStagedInstallHostTestCases Change-Id: I5cfb6192656b08cb913f84230baf42a8f3325980 --- .../core/java/com/android/server/pm/PackageManagerService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a64ae9c5fe85..bf85a68f888a 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -11726,7 +11726,12 @@ public class PackageManagerService extends IPackageManager.Stub "Code and resource paths haven't been set correctly"); } - if (mApexManager.isApexPackage(pkg.packageName)) { + // Check that there is an APEX package with the same name only during install/first boot + // after OTA. + final boolean isUserInstall = (scanFlags & SCAN_BOOTING) == 0; + final boolean isFirstBootOrUpgrade = (scanFlags & SCAN_FIRST_BOOT_OR_UPGRADE) != 0; + if ((isUserInstall || isFirstBootOrUpgrade) + && mApexManager.isApexPackage(pkg.packageName)) { throw new PackageManagerException(INSTALL_FAILED_DUPLICATE_PACKAGE, pkg.packageName + " is an APEX package and can't be installed as an APK."); } -- 2.11.0