From d827ef2d65b4c4077d374b36c818546f7104802d Mon Sep 17 00:00:00 2001 From: Sebastian Achim Date: Fri, 8 Jul 2022 13:48:32 +0200 Subject: [PATCH] Set scan flags correctly for preloaded applications Folowing scenario was observed: 1. Application build and installed without any native library built inside it 2. In the next SW update the same application is built with a native library bundled inside the apk. When upgrading the SW, because SW update was not detected, primaryCpuAbi was not set. This resulted in the system not looking into the path derived from the ABI for native libraries. This happens becase of two reasons: 1. SCAN_FIRST_BOOT_OR_UPGRADE is not set because PackageManagerService does not detect correctly update scenario. 2. SCAN_FIRST_BOOT_OR_UPGRADE is not added to mSystemScanFlags Bug: 239073616 Test: will add ota test Change-Id: I2ba73fcfcc46d7ddf14c2fb4dbf877f3252e7a50 --- services/core/java/com/android/server/pm/InitAppsHelper.java | 2 +- .../java/com/android/server/pm/PackageManagerService.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/InitAppsHelper.java b/services/core/java/com/android/server/pm/InitAppsHelper.java index b142ba6822d94..122ab10f43d91 100644 --- a/services/core/java/com/android/server/pm/InitAppsHelper.java +++ b/services/core/java/com/android/server/pm/InitAppsHelper.java @@ -116,7 +116,7 @@ final class InitAppsHelper { mScanFlags = scanFlags; } mSystemParseFlags = mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_IS_SYSTEM_DIR; - mSystemScanFlags = scanFlags | SCAN_AS_SYSTEM; + mSystemScanFlags = mScanFlags | SCAN_AS_SYSTEM; mExecutorService = ParallelPackageParser.makeExecutorService(); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 3f052c039f9c1..2bdf62bdd707f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1829,8 +1829,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService mAppDataHelper = new AppDataHelper(this); mInstallPackageHelper = new InstallPackageHelper(this, mAppDataHelper); mRemovePackageHelper = new RemovePackageHelper(this, mAppDataHelper); - mInitAppsHelper = new InitAppsHelper(this, mApexManager, mApexPackageInfo, - mInstallPackageHelper, mInjector.getSystemPartitions()); mDeletePackageHelper = new DeletePackageHelper(this, mRemovePackageHelper, mAppDataHelper); mSharedLibraries.setDeletePackageHelper(mDeletePackageHelper); @@ -1951,6 +1949,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT); } + mInitAppsHelper = new InitAppsHelper(this, mApexManager, mApexPackageInfo, + mInstallPackageHelper, mInjector.getSystemPartitions()); + // when upgrading from pre-M, promote system app permissions from install to runtime mPromoteSystemApps = mIsUpgrade && ver.sdkVersion <= Build.VERSION_CODES.LOLLIPOP_MR1;