diff options
| author | 2022-01-18 20:09:21 +0000 | |
|---|---|---|
| committer | 2022-01-18 20:09:21 +0000 | |
| commit | 87c13a545d7d8e5feabb13ca2c396969f0c21369 (patch) | |
| tree | e32a208604211631a465b245f6e89009a6e8c9a5 | |
| parent | bcf56a541a638e00009a1c2e882c8488528ee46b (diff) | |
| parent | 08bb56af61017f352ce2e2b46d4f2630640f5c84 (diff) | |
Merge "Revert "[pm] remove circular dependency in init helper""
| -rw-r--r-- | services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java (renamed from services/core/java/com/android/server/pm/InitAppsHelper.java) | 203 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/InstallPackageHelper.java | 30 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 18 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/StorageEventHelper.java | 2 |
5 files changed, 107 insertions, 148 deletions
diff --git a/services/core/java/com/android/server/pm/InitAppsHelper.java b/services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java index a5e6d6f0536d..dfa6c6655c45 100644 --- a/services/core/java/com/android/server/pm/InitAppsHelper.java +++ b/services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java @@ -31,7 +31,6 @@ import static com.android.server.pm.PackageManagerService.SCAN_REQUIRE_KNOWN; import static com.android.server.pm.PackageManagerService.SYSTEM_PARTITIONS; import static com.android.server.pm.PackageManagerService.TAG; -import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.parsing.ParsingPackageUtils; import android.os.Environment; @@ -60,25 +59,14 @@ import java.util.concurrent.ExecutorService; * further cleanup and eventually all the installation/scanning related logic will go to another * class. */ -final class InitAppsHelper { +final class InitAndSystemPackageHelper { private final PackageManagerService mPm; + private final List<ScanPartition> mDirsToScanAsSystem; private final int mScanFlags; private final int mSystemParseFlags; private final int mSystemScanFlags; private final InstallPackageHelper mInstallPackageHelper; - private final ApexManager mApexManager; - private final PackageParser2 mPackageParser; - private final ExecutorService mExecutorService; - /* Tracks how long system scan took */ - private long mSystemScanTime; - /* Track of the number of cached system apps */ - private int mCachedSystemApps; - /* Track of the number of system apps */ - private int mSystemPackagesCount; - private final boolean mIsDeviceUpgrading; - private final boolean mIsOnlyCoreApps; - private final List<ScanPartition> mSystemPartitions; /** * Tracks new system packages [received in an OTA] that we expect to @@ -86,39 +74,26 @@ final class InitAppsHelper { * are package location. */ private final ArrayMap<String, File> mExpectingBetter = new ArrayMap<>(); - /* Tracks of any system packages that no longer exist that needs to be pruned. */ - private final List<String> mPossiblyDeletedUpdatedSystemApps = new ArrayList<>(); - // Tracks of stub packages that must either be replaced with full versions in the /data - // partition or be disabled. - private final List<String> mStubSystemApps = new ArrayList<>(); // TODO(b/198166813): remove PMS dependency - InitAppsHelper(PackageManagerService pm, ApexManager apexManager, - InstallPackageHelper installPackageHelper, PackageParser2 packageParser, - List<ScanPartition> systemPartitions) { + InitAndSystemPackageHelper(PackageManagerService pm) { mPm = pm; - mApexManager = apexManager; - mInstallPackageHelper = installPackageHelper; - mPackageParser = packageParser; - mSystemPartitions = systemPartitions; + mInstallPackageHelper = new InstallPackageHelper(pm); mDirsToScanAsSystem = getSystemScanPartitions(); - mIsDeviceUpgrading = mPm.isDeviceUpgrading(); - mIsOnlyCoreApps = mPm.isOnlyCoreApps(); // Set flag to monitor and not change apk file paths when scanning install directories. int scanFlags = SCAN_BOOTING | SCAN_INITIAL; - if (mIsDeviceUpgrading || mPm.isFirstBoot()) { + if (mPm.isDeviceUpgrading() || mPm.isFirstBoot()) { mScanFlags = scanFlags | SCAN_FIRST_BOOT_OR_UPGRADE; } else { mScanFlags = scanFlags; } mSystemParseFlags = mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_IS_SYSTEM_DIR; mSystemScanFlags = scanFlags | SCAN_AS_SYSTEM; - mExecutorService = ParallelPackageParser.makeExecutorService(); } private List<ScanPartition> getSystemScanPartitions() { final List<ScanPartition> scanPartitions = new ArrayList<>(); - scanPartitions.addAll(mSystemPartitions); + scanPartitions.addAll(mPm.mInjector.getSystemPartitions()); scanPartitions.addAll(getApexScanPartitions()); Slog.d(TAG, "Directories scanned as system partitions: " + scanPartitions); return scanPartitions; @@ -126,7 +101,8 @@ final class InitAppsHelper { private List<ScanPartition> getApexScanPartitions() { final List<ScanPartition> scanPartitions = new ArrayList<>(); - final List<ApexManager.ActiveApexInfo> activeApexInfos = mApexManager.getActiveApexInfos(); + final List<ApexManager.ActiveApexInfo> activeApexInfos = + mPm.mApexManager.getActiveApexInfos(); for (int i = 0; i < activeApexInfos.size(); i++) { final ScanPartition scanPartition = resolveApexToScanPartition(activeApexInfos.get(i)); if (scanPartition != null) { @@ -143,133 +119,116 @@ final class InitAppsHelper { if (apexInfo.preInstalledApexPath.getAbsolutePath().equals( sp.getFolder().getAbsolutePath()) || apexInfo.preInstalledApexPath.getAbsolutePath().startsWith( - sp.getFolder().getAbsolutePath() + File.separator)) { + sp.getFolder().getAbsolutePath() + File.separator)) { return new ScanPartition(apexInfo.apexDirectory, sp, SCAN_AS_APK_IN_APEX); } } return null; } - /** - * Install apps from system dirs. - */ - @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) - public OverlayConfig initSystemApps(WatchedArrayMap<String, PackageSetting> packageSettings, - int[] userIds, long startTime) { + public OverlayConfig initPackages( + WatchedArrayMap<String, PackageSetting> packageSettings, int[] userIds, + long startTime) { + PackageParser2 packageParser = mPm.mInjector.getScanningCachingPackageParser(); + + ExecutorService executorService = ParallelPackageParser.makeExecutorService(); // Prepare apex package info before scanning APKs, this information is needed when // scanning apk in apex. - mApexManager.scanApexPackagesTraced(mPackageParser, mExecutorService); + mPm.mApexManager.scanApexPackagesTraced(packageParser, executorService); - scanSystemDirs(mPackageParser, mExecutorService); + scanSystemDirs(packageParser, executorService); // Parse overlay configuration files to set default enable state, mutability, and // priority of system overlays. final ArrayMap<String, File> apkInApexPreInstalledPaths = new ArrayMap<>(); - for (ApexManager.ActiveApexInfo apexInfo : mApexManager.getActiveApexInfos()) { - for (String packageName : mApexManager.getApksInApex(apexInfo.apexModuleName)) { + for (ApexManager.ActiveApexInfo apexInfo : mPm.mApexManager.getActiveApexInfos()) { + for (String packageName : mPm.mApexManager.getApksInApex(apexInfo.apexModuleName)) { apkInApexPreInstalledPaths.put(packageName, apexInfo.preInstalledApexPath); } } - final OverlayConfig overlayConfig = OverlayConfig.initializeSystemInstance( + OverlayConfig overlayConfig = OverlayConfig.initializeSystemInstance( consumer -> mPm.forEachPackage( pkg -> consumer.accept(pkg, pkg.isSystem(), - apkInApexPreInstalledPaths.get(pkg.getPackageName())))); - - if (!mIsOnlyCoreApps) { + apkInApexPreInstalledPaths.get(pkg.getPackageName())))); + // Prune any system packages that no longer exist. + final List<String> possiblyDeletedUpdatedSystemApps = new ArrayList<>(); + // Stub packages must either be replaced with full versions in the /data + // partition or be disabled. + final List<String> stubSystemApps = new ArrayList<>(); + + if (!mPm.isOnlyCoreApps()) { // do this first before mucking with mPackages for the "expecting better" case - updateStubSystemAppsList(mStubSystemApps); + updateStubSystemAppsList(stubSystemApps); mInstallPackageHelper.prepareSystemPackageCleanUp(packageSettings, - mPossiblyDeletedUpdatedSystemApps, mExpectingBetter, userIds); + possiblyDeletedUpdatedSystemApps, mExpectingBetter, userIds); } - logSystemAppsScanningTime(startTime); - return overlayConfig; - } - - @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) - private void logSystemAppsScanningTime(long startTime) { - mCachedSystemApps = PackageCacher.sCachedPackageReadCount.get(); + final int cachedSystemApps = PackageCacher.sCachedPackageReadCount.get(); // Remove any shared userIDs that have no associated packages mPm.mSettings.pruneSharedUsersLPw(); - mSystemScanTime = SystemClock.uptimeMillis() - startTime; - mSystemPackagesCount = mPm.mPackages.size(); - Slog.i(TAG, "Finished scanning system apps. Time: " + mSystemScanTime - + " ms, packageCount: " + mSystemPackagesCount + final long systemScanTime = SystemClock.uptimeMillis() - startTime; + final int systemPackagesCount = mPm.mPackages.size(); + Slog.i(TAG, "Finished scanning system apps. Time: " + systemScanTime + + " ms, packageCount: " + systemPackagesCount + " , timePerPackage: " - + (mSystemPackagesCount == 0 ? 0 : mSystemScanTime / mSystemPackagesCount) - + " , cached: " + mCachedSystemApps); - if (mIsDeviceUpgrading && mSystemPackagesCount > 0) { + + (systemPackagesCount == 0 ? 0 : systemScanTime / systemPackagesCount) + + " , cached: " + cachedSystemApps); + if (mPm.isDeviceUpgrading() && systemPackagesCount > 0) { //CHECKSTYLE:OFF IndentationCheck FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED, BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_SYSTEM_APP_AVG_SCAN_TIME, - mSystemScanTime / mSystemPackagesCount); + systemScanTime / systemPackagesCount); //CHECKSTYLE:ON IndentationCheck } - } - /** - * Install apps/updates from data dir and fix system apps that are affected. - */ - @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) - public void initNonSystemApps(@NonNull int[] userIds, long startTime) { - if (!mIsOnlyCoreApps) { + if (!mPm.isOnlyCoreApps()) { EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_DATA_SCAN_START, SystemClock.uptimeMillis()); - scanDirTracedLI(mPm.getAppInstallDir(), 0, mScanFlags | SCAN_REQUIRE_KNOWN, - mPackageParser, mExecutorService); + scanDirTracedLI(mPm.getAppInstallDir(), 0, mScanFlags | SCAN_REQUIRE_KNOWN, 0, + packageParser, executorService); } - List<Runnable> unfinishedTasks = mExecutorService.shutdownNow(); + List<Runnable> unfinishedTasks = executorService.shutdownNow(); if (!unfinishedTasks.isEmpty()) { throw new IllegalStateException("Not all tasks finished before calling close: " + unfinishedTasks); } - if (!mIsOnlyCoreApps) { - fixSystemPackages(userIds); - logNonSystemAppScanningTime(startTime); + + if (!mPm.isOnlyCoreApps()) { + mInstallPackageHelper.cleanupDisabledPackageSettings(possiblyDeletedUpdatedSystemApps, + userIds, mScanFlags); + mInstallPackageHelper.checkExistingBetterPackages(mExpectingBetter, + stubSystemApps, mSystemScanFlags, mSystemParseFlags); + + // Uncompress and install any stubbed system applications. + // This must be done last to ensure all stubs are replaced or disabled. + mInstallPackageHelper.installSystemStubPackages(stubSystemApps, mScanFlags); + + final int cachedNonSystemApps = PackageCacher.sCachedPackageReadCount.get() + - cachedSystemApps; + + final long dataScanTime = SystemClock.uptimeMillis() - systemScanTime - startTime; + final int dataPackagesCount = mPm.mPackages.size() - systemPackagesCount; + Slog.i(TAG, "Finished scanning non-system apps. Time: " + dataScanTime + + " ms, packageCount: " + dataPackagesCount + + " , timePerPackage: " + + (dataPackagesCount == 0 ? 0 : dataScanTime / dataPackagesCount) + + " , cached: " + cachedNonSystemApps); + if (mPm.isDeviceUpgrading() && dataPackagesCount > 0) { + //CHECKSTYLE:OFF IndentationCheck + FrameworkStatsLog.write( + FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED, + BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_DATA_APP_AVG_SCAN_TIME, + dataScanTime / dataPackagesCount); + //CHECKSTYLE:OFF IndentationCheck + } } mExpectingBetter.clear(); - mPm.mSettings.pruneRenamedPackagesLPw(); - mPackageParser.close(); - } - - /** - * Clean up system packages now that some system package updates have been installed from - * the data dir. Also install system stub packages as the last step. - */ - @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) - private void fixSystemPackages(@NonNull int[] userIds) { - mInstallPackageHelper.cleanupDisabledPackageSettings(mPossiblyDeletedUpdatedSystemApps, - userIds, mScanFlags); - mInstallPackageHelper.checkExistingBetterPackages(mExpectingBetter, - mStubSystemApps, mSystemScanFlags, mSystemParseFlags); - - // Uncompress and install any stubbed system applications. - // This must be done last to ensure all stubs are replaced or disabled. - mInstallPackageHelper.installSystemStubPackages(mStubSystemApps, mScanFlags); - } - @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) - private void logNonSystemAppScanningTime(long startTime) { - final int cachedNonSystemApps = PackageCacher.sCachedPackageReadCount.get() - - mCachedSystemApps; - - final long dataScanTime = SystemClock.uptimeMillis() - mSystemScanTime - startTime; - final int dataPackagesCount = mPm.mPackages.size() - mSystemPackagesCount; - Slog.i(TAG, "Finished scanning non-system apps. Time: " + dataScanTime - + " ms, packageCount: " + dataPackagesCount - + " , timePerPackage: " - + (dataPackagesCount == 0 ? 0 : dataScanTime / dataPackagesCount) - + " , cached: " + cachedNonSystemApps); - if (mIsDeviceUpgrading && dataPackagesCount > 0) { - //CHECKSTYLE:OFF IndentationCheck - FrameworkStatsLog.write( - FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED, - BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_DATA_APP_AVG_SCAN_TIME, - dataScanTime / dataPackagesCount); - //CHECKSTYLE:OFF IndentationCheck - } + mPm.mSettings.pruneRenamedPackagesLPw(); + packageParser.close(); + return overlayConfig; } /** @@ -289,12 +248,12 @@ final class InitAppsHelper { continue; } scanDirTracedLI(partition.getOverlayFolder(), mSystemParseFlags, - mSystemScanFlags | partition.scanFlag, + mSystemScanFlags | partition.scanFlag, 0, packageParser, executorService); } scanDirTracedLI(frameworkDir, mSystemParseFlags, - mSystemScanFlags | SCAN_NO_DEX | SCAN_AS_PRIVILEGED, + mSystemScanFlags | SCAN_NO_DEX | SCAN_AS_PRIVILEGED, 0, packageParser, executorService); if (!mPm.mPackages.containsKey("android")) { throw new IllegalStateException( @@ -305,11 +264,11 @@ final class InitAppsHelper { final ScanPartition partition = mDirsToScanAsSystem.get(i); if (partition.getPrivAppFolder() != null) { scanDirTracedLI(partition.getPrivAppFolder(), mSystemParseFlags, - mSystemScanFlags | SCAN_AS_PRIVILEGED | partition.scanFlag, + mSystemScanFlags | SCAN_AS_PRIVILEGED | partition.scanFlag, 0, packageParser, executorService); } scanDirTracedLI(partition.getAppFolder(), mSystemParseFlags, - mSystemScanFlags | partition.scanFlag, + mSystemScanFlags | partition.scanFlag, 0, packageParser, executorService); } } @@ -327,11 +286,11 @@ final class InitAppsHelper { @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) private void scanDirTracedLI(File scanDir, final int parseFlags, int scanFlags, - PackageParser2 packageParser, ExecutorService executorService) { + long currentTime, PackageParser2 packageParser, ExecutorService executorService) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "scanDir [" + scanDir.getAbsolutePath() + "]"); try { mInstallPackageHelper.installPackagesFromDir(scanDir, parseFlags, scanFlags, - packageParser, executorService); + currentTime, packageParser, executorService); } finally { Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index d002c2649de0..f696b3f7ba17 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -3054,7 +3054,7 @@ final class InstallPackageHelper { final RemovePackageHelper removePackageHelper = new RemovePackageHelper(mPm); removePackageHelper.removePackageLI(stubPkg, true /*chatty*/); try { - return scanSystemPackageTracedLI(scanFile, parseFlags, scanFlags, null); + return scanSystemPackageTracedLI(scanFile, parseFlags, scanFlags, 0, null); } catch (PackageManagerException e) { Slog.w(TAG, "Failed to install compressed system package:" + stubPkg.getPackageName(), e); @@ -3187,7 +3187,7 @@ final class InstallPackageHelper { | ParsingPackageUtils.PARSE_IS_SYSTEM_DIR; @PackageManagerService.ScanFlags int scanFlags = mPm.getSystemPackageScanFlags(codePath); final AndroidPackage pkg = scanSystemPackageTracedLI( - codePath, parseFlags, scanFlags, null); + codePath, parseFlags, scanFlags, 0 /*currentTime*/, null); PackageSetting pkgSetting = mPm.mSettings.getPackageLPr(pkg.getPackageName()); @@ -3362,7 +3362,7 @@ final class InstallPackageHelper { mRemovePackageHelper.removePackageLI(pkg, true); try { final File codePath = new File(pkg.getPath()); - scanSystemPackageTracedLI(codePath, 0, scanFlags, null); + scanSystemPackageTracedLI(codePath, 0, scanFlags, 0, null); } catch (PackageManagerException e) { Slog.e(TAG, "Failed to parse updated, ex-system package: " + e.getMessage()); @@ -3383,7 +3383,7 @@ final class InstallPackageHelper { @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) public void installPackagesFromDir(File scanDir, int parseFlags, int scanFlags, - PackageParser2 packageParser, ExecutorService executorService) { + long currentTime, PackageParser2 packageParser, ExecutorService executorService) { final File[] files = scanDir.listFiles(); if (ArrayUtils.isEmpty(files)) { Log.d(TAG, "No files in app dir " + scanDir); @@ -3425,7 +3425,7 @@ final class InstallPackageHelper { parseResult.parsedPackage); } try { - addForInitLI(parseResult.parsedPackage, parseFlags, scanFlags, + addForInitLI(parseResult.parsedPackage, parseFlags, scanFlags, currentTime, null); } catch (PackageManagerException e) { errorCode = e.error; @@ -3488,7 +3488,7 @@ final class InstallPackageHelper { try { final AndroidPackage newPkg = scanSystemPackageTracedLI( - scanFile, reparseFlags, rescanFlags, null); + scanFile, reparseFlags, rescanFlags, 0, null); // We rescanned a stub, add it to the list of stubbed system packages if (newPkg.isStub()) { stubSystemApps.add(packageName); @@ -3502,14 +3502,14 @@ final class InstallPackageHelper { /** * Traces a package scan. - * @see #scanSystemPackageLI(File, int, int, UserHandle) + * @see #scanSystemPackageLI(File, int, int, long, UserHandle) */ @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) public AndroidPackage scanSystemPackageTracedLI(File scanFile, final int parseFlags, - int scanFlags, UserHandle user) throws PackageManagerException { + int scanFlags, long currentTime, UserHandle user) throws PackageManagerException { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "scanPackage [" + scanFile.toString() + "]"); try { - return scanSystemPackageLI(scanFile, parseFlags, scanFlags, user); + return scanSystemPackageLI(scanFile, parseFlags, scanFlags, currentTime, user); } finally { Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } @@ -3521,7 +3521,7 @@ final class InstallPackageHelper { */ @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) private AndroidPackage scanSystemPackageLI(File scanFile, int parseFlags, int scanFlags, - UserHandle user) throws PackageManagerException { + long currentTime, UserHandle user) throws PackageManagerException { if (DEBUG_INSTALL) Slog.d(TAG, "Parsing: " + scanFile); Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "parsePackage"); @@ -3537,7 +3537,7 @@ final class InstallPackageHelper { PackageManagerService.renameStaticSharedLibraryPackage(parsedPackage); } - return addForInitLI(parsedPackage, parseFlags, scanFlags, user); + return addForInitLI(parsedPackage, parseFlags, scanFlags, currentTime, user); } /** @@ -3556,11 +3556,11 @@ final class InstallPackageHelper { @GuardedBy({"mPm.mLock", "mPm.mInstallLock"}) private AndroidPackage addForInitLI(ParsedPackage parsedPackage, @ParsingPackageUtils.ParseFlags int parseFlags, - @PackageManagerService.ScanFlags int scanFlags, + @PackageManagerService.ScanFlags int scanFlags, long currentTime, @Nullable UserHandle user) throws PackageManagerException { final Pair<ScanResult, Boolean> scanResultPair = scanSystemPackageLI( - parsedPackage, parseFlags, scanFlags, user); + parsedPackage, parseFlags, scanFlags, currentTime, user); final ScanResult scanResult = scanResultPair.first; boolean shouldHideSystemApp = scanResultPair.second; if (scanResult.mSuccess) { @@ -3738,7 +3738,7 @@ final class InstallPackageHelper { private Pair<ScanResult, Boolean> scanSystemPackageLI(ParsedPackage parsedPackage, @ParsingPackageUtils.ParseFlags int parseFlags, - @PackageManagerService.ScanFlags int scanFlags, + @PackageManagerService.ScanFlags int scanFlags, long currentTime, @Nullable UserHandle user) throws PackageManagerException { final boolean scanSystemPartition = (parseFlags & ParsingPackageUtils.PARSE_IS_SYSTEM_DIR) != 0; @@ -3925,7 +3925,7 @@ final class InstallPackageHelper { } final ScanResult scanResult = scanPackageNewLI(parsedPackage, parseFlags, - scanFlags | SCAN_UPDATE_SIGNATURE, 0 /* currentTime */, user, null); + scanFlags | SCAN_UPDATE_SIGNATURE, currentTime, user, null); return new Pair<>(scanResult, shouldHideSystemApp); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 548eb580ad5d..248944e476ad 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -241,6 +241,7 @@ import com.android.server.pm.pkg.PackageUserStateInternal; import com.android.server.pm.pkg.SuspendParams; import com.android.server.pm.pkg.mutate.PackageStateMutator; import com.android.server.pm.pkg.mutate.PackageStateWrite; +import com.android.server.pm.pkg.mutate.PackageUserStateWrite; import com.android.server.pm.verify.domain.DomainVerificationManagerInternal; import com.android.server.pm.verify.domain.DomainVerificationService; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxy; @@ -964,7 +965,7 @@ public class PackageManagerService extends IPackageManager.Stub private final BroadcastHelper mBroadcastHelper; private final RemovePackageHelper mRemovePackageHelper; private final DeletePackageHelper mDeletePackageHelper; - private final InitAppsHelper mInitAppsHelper; + private final InitAndSystemPackageHelper mInitAndSystemPackageHelper; private final AppDataHelper mAppDataHelper; private final InstallPackageHelper mInstallPackageHelper; private final PreferredActivityHelper mPreferredActivityHelper; @@ -1700,7 +1701,7 @@ public class PackageManagerService extends IPackageManager.Stub mAppDataHelper = testParams.appDataHelper; mInstallPackageHelper = testParams.installPackageHelper; mRemovePackageHelper = testParams.removePackageHelper; - mInitAppsHelper = testParams.initAndSystemPackageHelper; + mInitAndSystemPackageHelper = testParams.initAndSystemPackageHelper; mDeletePackageHelper = testParams.deletePackageHelper; mPreferredActivityHelper = testParams.preferredActivityHelper; mResolveIntentHelper = testParams.resolveIntentHelper; @@ -1844,8 +1845,7 @@ public class PackageManagerService extends IPackageManager.Stub mAppDataHelper = new AppDataHelper(this); mInstallPackageHelper = new InstallPackageHelper(this, mAppDataHelper); mRemovePackageHelper = new RemovePackageHelper(this, mAppDataHelper); - mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper, - mInjector.getScanningPackageParser(), mInjector.getSystemPartitions()); + mInitAndSystemPackageHelper = new InitAndSystemPackageHelper(this); mDeletePackageHelper = new DeletePackageHelper(this, mRemovePackageHelper, mAppDataHelper); mSharedLibraries.setDeletePackageHelper(mDeletePackageHelper); @@ -1977,8 +1977,8 @@ public class PackageManagerService extends IPackageManager.Stub mIsEngBuild, mIsUserDebugBuild, mIncrementalVersion); final int[] userIds = mUserManager.getUserIds(); - mOverlayConfig = mInitAppsHelper.initSystemApps(packageSettings, userIds, startTime); - mInitAppsHelper.initNonSystemApps(userIds, startTime); + mOverlayConfig = mInitAndSystemPackageHelper.initPackages(packageSettings, + userIds, startTime); // Resolve the storage manager. mStorageManagerPackage = getStorageManagerPackageName(); @@ -9147,7 +9147,7 @@ public class PackageManagerService extends IPackageManager.Stub } boolean isExpectingBetter(String packageName) { - return mInitAppsHelper.isExpectingBetter(packageName); + return mInitAndSystemPackageHelper.isExpectingBetter(packageName); } int getDefParseFlags() { @@ -9256,7 +9256,7 @@ public class PackageManagerService extends IPackageManager.Stub @ScanFlags int getSystemPackageScanFlags(File codePath) { List<ScanPartition> dirsToScanAsSystem = - mInitAppsHelper.getDirsToScanAsSystem(); + mInitAndSystemPackageHelper.getDirsToScanAsSystem(); @PackageManagerService.ScanFlags int scanFlags = SCAN_AS_SYSTEM; for (int i = dirsToScanAsSystem.size() - 1; i >= 0; i--) { ScanPartition partition = dirsToScanAsSystem.get(i); @@ -9274,7 +9274,7 @@ public class PackageManagerService extends IPackageManager.Stub Pair<Integer, Integer> getSystemPackageRescanFlagsAndReparseFlags(File scanFile, int systemScanFlags, int systemParseFlags) { List<ScanPartition> dirsToScanAsSystem = - mInitAppsHelper.getDirsToScanAsSystem(); + mInitAndSystemPackageHelper.getDirsToScanAsSystem(); @ParsingPackageUtils.ParseFlags int reparseFlags = 0; @PackageManagerService.ScanFlags int rescanFlags = 0; for (int i1 = dirsToScanAsSystem.size() - 1; i1 >= 0; i1--) { diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java b/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java index 168401a30828..a1acc388146e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java +++ b/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java @@ -106,7 +106,7 @@ public final class PackageManagerServiceTestParams { public AppDataHelper appDataHelper; public InstallPackageHelper installPackageHelper; public RemovePackageHelper removePackageHelper; - public InitAppsHelper initAndSystemPackageHelper; + public InitAndSystemPackageHelper initAndSystemPackageHelper; public DeletePackageHelper deletePackageHelper; public PreferredActivityHelper preferredActivityHelper; public ResolveIntentHelper resolveIntentHelper; diff --git a/services/core/java/com/android/server/pm/StorageEventHelper.java b/services/core/java/com/android/server/pm/StorageEventHelper.java index de6440536202..1433abd1b6c9 100644 --- a/services/core/java/com/android/server/pm/StorageEventHelper.java +++ b/services/core/java/com/android/server/pm/StorageEventHelper.java @@ -150,7 +150,7 @@ public final class StorageEventHelper extends StorageEventListener { final AndroidPackage pkg; try { pkg = installPackageHelper.scanSystemPackageTracedLI( - ps.getPath(), parseFlags, SCAN_INITIAL, null); + ps.getPath(), parseFlags, SCAN_INITIAL, 0, null); loaded.add(pkg); } catch (PackageManagerException e) { |