Loading services/core/java/com/android/server/pm/InitAppsHelper.java→services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java +81 −122 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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; Loading @@ -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) { Loading @@ -150,119 +126,96 @@ final class InitAppsHelper { 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())))); // 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 (!mIsOnlyCoreApps) { 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); } logSystemAppsScanningTime(startTime); return overlayConfig; possiblyDeletedUpdatedSystemApps, mExpectingBetter, userIds); } @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); } 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, if (!mPm.isOnlyCoreApps()) { mInstallPackageHelper.cleanupDisabledPackageSettings(possiblyDeletedUpdatedSystemApps, userIds, mScanFlags); mInstallPackageHelper.checkExistingBetterPackages(mExpectingBetter, mStubSystemApps, mSystemScanFlags, mSystemParseFlags); 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(mStubSystemApps, mScanFlags); } mInstallPackageHelper.installSystemStubPackages(stubSystemApps, mScanFlags); @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) private void logNonSystemAppScanningTime(long startTime) { final int cachedNonSystemApps = PackageCacher.sCachedPackageReadCount.get() - mCachedSystemApps; - cachedSystemApps; final long dataScanTime = SystemClock.uptimeMillis() - mSystemScanTime - startTime; final int dataPackagesCount = mPm.mPackages.size() - mSystemPackagesCount; 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 (mIsDeviceUpgrading && dataPackagesCount > 0) { if (mPm.isDeviceUpgrading() && dataPackagesCount > 0) { //CHECKSTYLE:OFF IndentationCheck FrameworkStatsLog.write( FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED, Loading @@ -271,6 +224,12 @@ final class InitAppsHelper { //CHECKSTYLE:OFF IndentationCheck } } mExpectingBetter.clear(); mPm.mSettings.pruneRenamedPackagesLPw(); packageParser.close(); return overlayConfig; } /** * First part of init dir scanning Loading @@ -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( Loading @@ -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); } } Loading @@ -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); } Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +15 −15 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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()); Loading Loading @@ -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()); Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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); Loading @@ -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); } Loading @@ -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"); Loading @@ -3537,7 +3537,7 @@ final class InstallPackageHelper { PackageManagerService.renameStaticSharedLibraryPackage(parsedPackage); } return addForInitLI(parsedPackage, parseFlags, scanFlags, user); return addForInitLI(parsedPackage, parseFlags, scanFlags, currentTime, user); } /** Loading @@ -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) { Loading Loading @@ -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; Loading Loading @@ -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); } Loading services/core/java/com/android/server/pm/PackageManagerService.java +9 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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(); Loading Loading @@ -9147,7 +9147,7 @@ public class PackageManagerService extends IPackageManager.Stub } boolean isExpectingBetter(String packageName) { return mInitAppsHelper.isExpectingBetter(packageName); return mInitAndSystemPackageHelper.isExpectingBetter(packageName); } int getDefParseFlags() { Loading Loading @@ -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); Loading @@ -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--) { Loading services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading services/core/java/com/android/server/pm/StorageEventHelper.java +1 −1 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
services/core/java/com/android/server/pm/InitAppsHelper.java→services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java +81 −122 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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; Loading @@ -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) { Loading @@ -150,119 +126,96 @@ final class InitAppsHelper { 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())))); // 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 (!mIsOnlyCoreApps) { 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); } logSystemAppsScanningTime(startTime); return overlayConfig; possiblyDeletedUpdatedSystemApps, mExpectingBetter, userIds); } @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); } 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, if (!mPm.isOnlyCoreApps()) { mInstallPackageHelper.cleanupDisabledPackageSettings(possiblyDeletedUpdatedSystemApps, userIds, mScanFlags); mInstallPackageHelper.checkExistingBetterPackages(mExpectingBetter, mStubSystemApps, mSystemScanFlags, mSystemParseFlags); 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(mStubSystemApps, mScanFlags); } mInstallPackageHelper.installSystemStubPackages(stubSystemApps, mScanFlags); @GuardedBy({"mPm.mInstallLock", "mPm.mLock"}) private void logNonSystemAppScanningTime(long startTime) { final int cachedNonSystemApps = PackageCacher.sCachedPackageReadCount.get() - mCachedSystemApps; - cachedSystemApps; final long dataScanTime = SystemClock.uptimeMillis() - mSystemScanTime - startTime; final int dataPackagesCount = mPm.mPackages.size() - mSystemPackagesCount; 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 (mIsDeviceUpgrading && dataPackagesCount > 0) { if (mPm.isDeviceUpgrading() && dataPackagesCount > 0) { //CHECKSTYLE:OFF IndentationCheck FrameworkStatsLog.write( FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED, Loading @@ -271,6 +224,12 @@ final class InitAppsHelper { //CHECKSTYLE:OFF IndentationCheck } } mExpectingBetter.clear(); mPm.mSettings.pruneRenamedPackagesLPw(); packageParser.close(); return overlayConfig; } /** * First part of init dir scanning Loading @@ -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( Loading @@ -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); } } Loading @@ -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); } Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +15 −15 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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()); Loading Loading @@ -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()); Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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); Loading @@ -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); } Loading @@ -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"); Loading @@ -3537,7 +3537,7 @@ final class InstallPackageHelper { PackageManagerService.renameStaticSharedLibraryPackage(parsedPackage); } return addForInitLI(parsedPackage, parseFlags, scanFlags, user); return addForInitLI(parsedPackage, parseFlags, scanFlags, currentTime, user); } /** Loading @@ -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) { Loading Loading @@ -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; Loading Loading @@ -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); } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +9 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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(); Loading Loading @@ -9147,7 +9147,7 @@ public class PackageManagerService extends IPackageManager.Stub } boolean isExpectingBetter(String packageName) { return mInitAppsHelper.isExpectingBetter(packageName); return mInitAndSystemPackageHelper.isExpectingBetter(packageName); } int getDefParseFlags() { Loading Loading @@ -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); Loading @@ -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--) { Loading
services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
services/core/java/com/android/server/pm/StorageEventHelper.java +1 −1 File changed.Preview size limit exceeded, changes collapsed. Show changes