Loading services/core/java/android/content/pm/PackageManagerInternal.java +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.server.pm.PackageSetting; import com.android.server.pm.dex.DynamicCodeLogger; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.pkg.AndroidPackageApi; import com.android.server.pm.pkg.PackageState; import com.android.server.pm.pkg.PackageStateInternal; import com.android.server.pm.pkg.SharedUserApi; import com.android.server.pm.pkg.component.ParsedMainComponent; Loading Loading @@ -689,6 +690,8 @@ public abstract class PackageManagerInternal { @Nullable public abstract PackageStateInternal getPackageStateInternal(@NonNull String packageName); public abstract @Nullable PackageState getPackageState(@NonNull String packageName); @NonNull public abstract ArrayMap<String, ? extends PackageStateInternal> getPackageStates(); Loading services/core/java/com/android/server/pm/ApkChecksums.java +0 −2 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.content.Context; import android.content.pm.ApkChecksum; import android.content.pm.Checksum; import android.content.pm.IOnChecksumsReadyListener; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.Signature; import android.content.pm.SigningDetails.SignatureSchemeVersion; Loading Loading @@ -63,7 +62,6 @@ import android.util.apk.VerityBuilder; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.security.VerityUtils; import com.android.server.LocalServices; import com.android.server.pm.parsing.pkg.AndroidPackage; import java.io.ByteArrayOutputStream; Loading services/core/java/com/android/server/pm/AppsFilter.java +4 −5 Original line number Diff line number Diff line Loading @@ -52,7 +52,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.function.QuadFunction; import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.compat.CompatChange; import com.android.server.om.OverlayReferenceMapper; import com.android.server.pm.parsing.pkg.AndroidPackage; Loading Loading @@ -487,12 +486,12 @@ public class AppsFilter implements Watchable, Snappable { } /** Builder method for an AppsFilter */ public static AppsFilter create(@NonNull PackageManagerServiceInjector injector, @NonNull PackageManagerInternal pmInt) { public static AppsFilter create( PackageManagerInternal pms, PackageManagerServiceInjector injector) { final boolean forceSystemAppsQueryable = injector.getContext().getResources() .getBoolean(R.bool.config_forceSystemPackagesQueryable); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pmInt, injector); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pms, injector); final String[] forcedQueryablePackageNames; if (forceSystemAppsQueryable) { // all system apps already queryable, no need to read and parse individual exceptions Loading @@ -513,7 +512,7 @@ public class AppsFilter implements Watchable, Snappable { }; AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig, forcedQueryablePackageNames, forceSystemAppsQueryable, null, injector.getBackgroundExecutor(), pmInt); injector.getBackgroundExecutor(), pms); featureConfig.setAppsFilter(appsFilter); return appsFilter; } Loading services/core/java/com/android/server/pm/BackgroundDexOptService.java +13 −16 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.pm; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.job.JobInfo; import android.app.job.JobParameters; Loading Loading @@ -270,7 +269,7 @@ public final class BackgroundDexOptService { PackageManagerService pm = mInjector.getPackageManagerService(); ArraySet<String> packagesToOptimize; if (packageNames == null) { packagesToOptimize = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); packagesToOptimize = mDexOptHelper.getOptimizablePackages(); } else { packagesToOptimize = new ArraySet<>(packageNames); } Loading Loading @@ -335,7 +334,7 @@ public final class BackgroundDexOptService { return false; } ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(); if (pkgs.isEmpty()) { Slog.i(TAG, "No packages to optimize"); markPostBootUpdateCompleted(params); Loading Loading @@ -557,8 +556,8 @@ public final class BackgroundDexOptService { } /** Gets the size of a package. */ private long getPackageSize(@NonNull Computer snapshot, String pkg) { PackageInfo info = snapshot.getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM); private long getPackageSize(PackageManagerService pm, String pkg) { PackageInfo info = pm.snapshotComputer().getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM); long size = 0; if (info != null && info.applicationInfo != null) { File path = Paths.get(info.applicationInfo.sourceDir).toFile(); Loading Loading @@ -606,9 +605,8 @@ public final class BackgroundDexOptService { Slog.d(TAG, "Should Downgrade " + shouldDowngrade); } if (shouldDowngrade) { final Computer snapshot = pm.snapshotComputer(); Set<String> unusedPackages = snapshot.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); pm.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); if (DEBUG) { Slog.d(TAG, "Unsused Packages " + String.join(",", unusedPackages)); } Loading @@ -620,7 +618,7 @@ public final class BackgroundDexOptService { // Should be aborted by the scheduler. return abortCode; } @DexOptResult int downgradeResult = downgradePackage(snapshot, pm, pkg, @DexOptResult int downgradeResult = downgradePackage(pm, pkg, /* isForPrimaryDex= */ true, isPostBootUpdate); if (downgradeResult == PackageDexOptimizer.DEX_OPT_PERFORMED) { updatedPackages.add(pkg); Loading @@ -631,7 +629,7 @@ public final class BackgroundDexOptService { return status; } if (supportSecondaryDex) { downgradeResult = downgradePackage(snapshot, pm, pkg, downgradeResult = downgradePackage(pm, pkg, /* isForPrimaryDex= */false, isPostBootUpdate); status = convertPackageDexOptimizerStatusToInternal(downgradeResult); if (status != STATUS_OK) { Loading Loading @@ -698,8 +696,8 @@ public final class BackgroundDexOptService { * @return PackageDexOptimizer.DEX_* */ @DexOptResult private int downgradePackage(@NonNull Computer snapshot, PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { private int downgradePackage(PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { if (DEBUG) { Slog.d(TAG, "Downgrading " + pkg); } Loading @@ -711,15 +709,15 @@ public final class BackgroundDexOptService { if (!isPostBootUpdate) { dexoptFlags |= DexoptOptions.DEXOPT_IDLE_BACKGROUND_JOB; } long package_size_before = getPackageSize(snapshot, pkg); long package_size_before = getPackageSize(pm, pkg); int result = PackageDexOptimizer.DEX_OPT_SKIPPED; if (isForPrimaryDex || PLATFORM_PACKAGE_NAME.equals(pkg)) { // This applies for system apps or if packages location is not a directory, i.e. // monolithic install. if (!pm.canHaveOatDir(snapshot, pkg)) { if (!pm.canHaveOatDir(pkg)) { // For apps that don't have the oat directory, instead of downgrading, // remove their compiler artifacts from dalvik cache. pm.deleteOatArtifactsOfPackage(snapshot, pkg); pm.deleteOatArtifactsOfPackage(pkg); } else { result = performDexOptPrimary(pkg, reason, dexoptFlags); } Loading @@ -728,9 +726,8 @@ public final class BackgroundDexOptService { } if (result == PackageDexOptimizer.DEX_OPT_PERFORMED) { final Computer newSnapshot = pm.snapshotComputer(); FrameworkStatsLog.write(FrameworkStatsLog.APP_DOWNGRADED, pkg, package_size_before, getPackageSize(newSnapshot, pkg), /*aggressive=*/ false); getPackageSize(pm, pkg), /*aggressive=*/ false); } return result; } Loading services/core/java/com/android/server/pm/Computer.java +178 −62 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
services/core/java/android/content/pm/PackageManagerInternal.java +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.server.pm.PackageSetting; import com.android.server.pm.dex.DynamicCodeLogger; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.pkg.AndroidPackageApi; import com.android.server.pm.pkg.PackageState; import com.android.server.pm.pkg.PackageStateInternal; import com.android.server.pm.pkg.SharedUserApi; import com.android.server.pm.pkg.component.ParsedMainComponent; Loading Loading @@ -689,6 +690,8 @@ public abstract class PackageManagerInternal { @Nullable public abstract PackageStateInternal getPackageStateInternal(@NonNull String packageName); public abstract @Nullable PackageState getPackageState(@NonNull String packageName); @NonNull public abstract ArrayMap<String, ? extends PackageStateInternal> getPackageStates(); Loading
services/core/java/com/android/server/pm/ApkChecksums.java +0 −2 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.content.Context; import android.content.pm.ApkChecksum; import android.content.pm.Checksum; import android.content.pm.IOnChecksumsReadyListener; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.Signature; import android.content.pm.SigningDetails.SignatureSchemeVersion; Loading Loading @@ -63,7 +62,6 @@ import android.util.apk.VerityBuilder; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.security.VerityUtils; import com.android.server.LocalServices; import com.android.server.pm.parsing.pkg.AndroidPackage; import java.io.ByteArrayOutputStream; Loading
services/core/java/com/android/server/pm/AppsFilter.java +4 −5 Original line number Diff line number Diff line Loading @@ -52,7 +52,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.function.QuadFunction; import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.compat.CompatChange; import com.android.server.om.OverlayReferenceMapper; import com.android.server.pm.parsing.pkg.AndroidPackage; Loading Loading @@ -487,12 +486,12 @@ public class AppsFilter implements Watchable, Snappable { } /** Builder method for an AppsFilter */ public static AppsFilter create(@NonNull PackageManagerServiceInjector injector, @NonNull PackageManagerInternal pmInt) { public static AppsFilter create( PackageManagerInternal pms, PackageManagerServiceInjector injector) { final boolean forceSystemAppsQueryable = injector.getContext().getResources() .getBoolean(R.bool.config_forceSystemPackagesQueryable); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pmInt, injector); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pms, injector); final String[] forcedQueryablePackageNames; if (forceSystemAppsQueryable) { // all system apps already queryable, no need to read and parse individual exceptions Loading @@ -513,7 +512,7 @@ public class AppsFilter implements Watchable, Snappable { }; AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig, forcedQueryablePackageNames, forceSystemAppsQueryable, null, injector.getBackgroundExecutor(), pmInt); injector.getBackgroundExecutor(), pms); featureConfig.setAppsFilter(appsFilter); return appsFilter; } Loading
services/core/java/com/android/server/pm/BackgroundDexOptService.java +13 −16 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.pm; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.job.JobInfo; import android.app.job.JobParameters; Loading Loading @@ -270,7 +269,7 @@ public final class BackgroundDexOptService { PackageManagerService pm = mInjector.getPackageManagerService(); ArraySet<String> packagesToOptimize; if (packageNames == null) { packagesToOptimize = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); packagesToOptimize = mDexOptHelper.getOptimizablePackages(); } else { packagesToOptimize = new ArraySet<>(packageNames); } Loading Loading @@ -335,7 +334,7 @@ public final class BackgroundDexOptService { return false; } ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(); if (pkgs.isEmpty()) { Slog.i(TAG, "No packages to optimize"); markPostBootUpdateCompleted(params); Loading Loading @@ -557,8 +556,8 @@ public final class BackgroundDexOptService { } /** Gets the size of a package. */ private long getPackageSize(@NonNull Computer snapshot, String pkg) { PackageInfo info = snapshot.getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM); private long getPackageSize(PackageManagerService pm, String pkg) { PackageInfo info = pm.snapshotComputer().getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM); long size = 0; if (info != null && info.applicationInfo != null) { File path = Paths.get(info.applicationInfo.sourceDir).toFile(); Loading Loading @@ -606,9 +605,8 @@ public final class BackgroundDexOptService { Slog.d(TAG, "Should Downgrade " + shouldDowngrade); } if (shouldDowngrade) { final Computer snapshot = pm.snapshotComputer(); Set<String> unusedPackages = snapshot.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); pm.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); if (DEBUG) { Slog.d(TAG, "Unsused Packages " + String.join(",", unusedPackages)); } Loading @@ -620,7 +618,7 @@ public final class BackgroundDexOptService { // Should be aborted by the scheduler. return abortCode; } @DexOptResult int downgradeResult = downgradePackage(snapshot, pm, pkg, @DexOptResult int downgradeResult = downgradePackage(pm, pkg, /* isForPrimaryDex= */ true, isPostBootUpdate); if (downgradeResult == PackageDexOptimizer.DEX_OPT_PERFORMED) { updatedPackages.add(pkg); Loading @@ -631,7 +629,7 @@ public final class BackgroundDexOptService { return status; } if (supportSecondaryDex) { downgradeResult = downgradePackage(snapshot, pm, pkg, downgradeResult = downgradePackage(pm, pkg, /* isForPrimaryDex= */false, isPostBootUpdate); status = convertPackageDexOptimizerStatusToInternal(downgradeResult); if (status != STATUS_OK) { Loading Loading @@ -698,8 +696,8 @@ public final class BackgroundDexOptService { * @return PackageDexOptimizer.DEX_* */ @DexOptResult private int downgradePackage(@NonNull Computer snapshot, PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { private int downgradePackage(PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { if (DEBUG) { Slog.d(TAG, "Downgrading " + pkg); } Loading @@ -711,15 +709,15 @@ public final class BackgroundDexOptService { if (!isPostBootUpdate) { dexoptFlags |= DexoptOptions.DEXOPT_IDLE_BACKGROUND_JOB; } long package_size_before = getPackageSize(snapshot, pkg); long package_size_before = getPackageSize(pm, pkg); int result = PackageDexOptimizer.DEX_OPT_SKIPPED; if (isForPrimaryDex || PLATFORM_PACKAGE_NAME.equals(pkg)) { // This applies for system apps or if packages location is not a directory, i.e. // monolithic install. if (!pm.canHaveOatDir(snapshot, pkg)) { if (!pm.canHaveOatDir(pkg)) { // For apps that don't have the oat directory, instead of downgrading, // remove their compiler artifacts from dalvik cache. pm.deleteOatArtifactsOfPackage(snapshot, pkg); pm.deleteOatArtifactsOfPackage(pkg); } else { result = performDexOptPrimary(pkg, reason, dexoptFlags); } Loading @@ -728,9 +726,8 @@ public final class BackgroundDexOptService { } if (result == PackageDexOptimizer.DEX_OPT_PERFORMED) { final Computer newSnapshot = pm.snapshotComputer(); FrameworkStatsLog.write(FrameworkStatsLog.APP_DOWNGRADED, pkg, package_size_before, getPackageSize(newSnapshot, pkg), /*aggressive=*/ false); getPackageSize(pm, pkg), /*aggressive=*/ false); } return result; } Loading
services/core/java/com/android/server/pm/Computer.java +178 −62 File changed.Preview size limit exceeded, changes collapsed. Show changes