Loading services/core/java/android/content/pm/PackageManagerInternal.java +0 −3 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ 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 @@ -690,8 +689,6 @@ 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 +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ 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 @@ -62,6 +63,7 @@ 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 +5 −4 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ 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 @@ -486,12 +487,12 @@ public class AppsFilter implements Watchable, Snappable { } /** Builder method for an AppsFilter */ public static AppsFilter create( PackageManagerInternal pms, PackageManagerServiceInjector injector) { public static AppsFilter create(@NonNull PackageManagerServiceInjector injector, @NonNull PackageManagerInternal pmInt) { final boolean forceSystemAppsQueryable = injector.getContext().getResources() .getBoolean(R.bool.config_forceSystemPackagesQueryable); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pms, injector); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pmInt, injector); final String[] forcedQueryablePackageNames; if (forceSystemAppsQueryable) { // all system apps already queryable, no need to read and parse individual exceptions Loading @@ -512,7 +513,7 @@ public class AppsFilter implements Watchable, Snappable { }; AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig, forcedQueryablePackageNames, forceSystemAppsQueryable, null, injector.getBackgroundExecutor(), pms); injector.getBackgroundExecutor(), pmInt); featureConfig.setAppsFilter(appsFilter); return appsFilter; } Loading services/core/java/com/android/server/pm/BackgroundDexOptService.java +16 −13 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ 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 @@ -269,7 +270,7 @@ public final class BackgroundDexOptService { PackageManagerService pm = mInjector.getPackageManagerService(); ArraySet<String> packagesToOptimize; if (packageNames == null) { packagesToOptimize = mDexOptHelper.getOptimizablePackages(); packagesToOptimize = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); } else { packagesToOptimize = new ArraySet<>(packageNames); } Loading Loading @@ -334,7 +335,7 @@ public final class BackgroundDexOptService { return false; } ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(); ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); if (pkgs.isEmpty()) { Slog.i(TAG, "No packages to optimize"); markPostBootUpdateCompleted(params); Loading Loading @@ -556,8 +557,8 @@ public final class BackgroundDexOptService { } /** Gets the size of a package. */ private long getPackageSize(PackageManagerService pm, String pkg) { PackageInfo info = pm.snapshotComputer().getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM); private long getPackageSize(@NonNull Computer snapshot, String pkg) { PackageInfo info = snapshot.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 @@ -605,8 +606,9 @@ public final class BackgroundDexOptService { Slog.d(TAG, "Should Downgrade " + shouldDowngrade); } if (shouldDowngrade) { final Computer snapshot = pm.snapshotComputer(); Set<String> unusedPackages = pm.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); snapshot.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); if (DEBUG) { Slog.d(TAG, "Unsused Packages " + String.join(",", unusedPackages)); } Loading @@ -618,7 +620,7 @@ public final class BackgroundDexOptService { // Should be aborted by the scheduler. return abortCode; } @DexOptResult int downgradeResult = downgradePackage(pm, pkg, @DexOptResult int downgradeResult = downgradePackage(snapshot, pm, pkg, /* isForPrimaryDex= */ true, isPostBootUpdate); if (downgradeResult == PackageDexOptimizer.DEX_OPT_PERFORMED) { updatedPackages.add(pkg); Loading @@ -629,7 +631,7 @@ public final class BackgroundDexOptService { return status; } if (supportSecondaryDex) { downgradeResult = downgradePackage(pm, pkg, downgradeResult = downgradePackage(snapshot, pm, pkg, /* isForPrimaryDex= */false, isPostBootUpdate); status = convertPackageDexOptimizerStatusToInternal(downgradeResult); if (status != STATUS_OK) { Loading Loading @@ -696,8 +698,8 @@ public final class BackgroundDexOptService { * @return PackageDexOptimizer.DEX_* */ @DexOptResult private int downgradePackage(PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { private int downgradePackage(@NonNull Computer snapshot, PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { if (DEBUG) { Slog.d(TAG, "Downgrading " + pkg); } Loading @@ -709,15 +711,15 @@ public final class BackgroundDexOptService { if (!isPostBootUpdate) { dexoptFlags |= DexoptOptions.DEXOPT_IDLE_BACKGROUND_JOB; } long package_size_before = getPackageSize(pm, pkg); long package_size_before = getPackageSize(snapshot, 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(pkg)) { if (!pm.canHaveOatDir(snapshot, pkg)) { // For apps that don't have the oat directory, instead of downgrading, // remove their compiler artifacts from dalvik cache. pm.deleteOatArtifactsOfPackage(pkg); pm.deleteOatArtifactsOfPackage(snapshot, pkg); } else { result = performDexOptPrimary(pkg, reason, dexoptFlags); } Loading @@ -726,8 +728,9 @@ 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(pm, pkg), /*aggressive=*/ false); getPackageSize(newSnapshot, pkg), /*aggressive=*/ false); } return result; } Loading services/core/java/com/android/server/pm/Computer.java +62 −178 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
services/core/java/android/content/pm/PackageManagerInternal.java +0 −3 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ 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 @@ -690,8 +689,6 @@ 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 +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ 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 @@ -62,6 +63,7 @@ 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 +5 −4 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ 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 @@ -486,12 +487,12 @@ public class AppsFilter implements Watchable, Snappable { } /** Builder method for an AppsFilter */ public static AppsFilter create( PackageManagerInternal pms, PackageManagerServiceInjector injector) { public static AppsFilter create(@NonNull PackageManagerServiceInjector injector, @NonNull PackageManagerInternal pmInt) { final boolean forceSystemAppsQueryable = injector.getContext().getResources() .getBoolean(R.bool.config_forceSystemPackagesQueryable); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pms, injector); final FeatureConfigImpl featureConfig = new FeatureConfigImpl(pmInt, injector); final String[] forcedQueryablePackageNames; if (forceSystemAppsQueryable) { // all system apps already queryable, no need to read and parse individual exceptions Loading @@ -512,7 +513,7 @@ public class AppsFilter implements Watchable, Snappable { }; AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig, forcedQueryablePackageNames, forceSystemAppsQueryable, null, injector.getBackgroundExecutor(), pms); injector.getBackgroundExecutor(), pmInt); featureConfig.setAppsFilter(appsFilter); return appsFilter; } Loading
services/core/java/com/android/server/pm/BackgroundDexOptService.java +16 −13 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ 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 @@ -269,7 +270,7 @@ public final class BackgroundDexOptService { PackageManagerService pm = mInjector.getPackageManagerService(); ArraySet<String> packagesToOptimize; if (packageNames == null) { packagesToOptimize = mDexOptHelper.getOptimizablePackages(); packagesToOptimize = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); } else { packagesToOptimize = new ArraySet<>(packageNames); } Loading Loading @@ -334,7 +335,7 @@ public final class BackgroundDexOptService { return false; } ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(); ArraySet<String> pkgs = mDexOptHelper.getOptimizablePackages(pm.snapshotComputer()); if (pkgs.isEmpty()) { Slog.i(TAG, "No packages to optimize"); markPostBootUpdateCompleted(params); Loading Loading @@ -556,8 +557,8 @@ public final class BackgroundDexOptService { } /** Gets the size of a package. */ private long getPackageSize(PackageManagerService pm, String pkg) { PackageInfo info = pm.snapshotComputer().getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM); private long getPackageSize(@NonNull Computer snapshot, String pkg) { PackageInfo info = snapshot.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 @@ -605,8 +606,9 @@ public final class BackgroundDexOptService { Slog.d(TAG, "Should Downgrade " + shouldDowngrade); } if (shouldDowngrade) { final Computer snapshot = pm.snapshotComputer(); Set<String> unusedPackages = pm.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); snapshot.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis); if (DEBUG) { Slog.d(TAG, "Unsused Packages " + String.join(",", unusedPackages)); } Loading @@ -618,7 +620,7 @@ public final class BackgroundDexOptService { // Should be aborted by the scheduler. return abortCode; } @DexOptResult int downgradeResult = downgradePackage(pm, pkg, @DexOptResult int downgradeResult = downgradePackage(snapshot, pm, pkg, /* isForPrimaryDex= */ true, isPostBootUpdate); if (downgradeResult == PackageDexOptimizer.DEX_OPT_PERFORMED) { updatedPackages.add(pkg); Loading @@ -629,7 +631,7 @@ public final class BackgroundDexOptService { return status; } if (supportSecondaryDex) { downgradeResult = downgradePackage(pm, pkg, downgradeResult = downgradePackage(snapshot, pm, pkg, /* isForPrimaryDex= */false, isPostBootUpdate); status = convertPackageDexOptimizerStatusToInternal(downgradeResult); if (status != STATUS_OK) { Loading Loading @@ -696,8 +698,8 @@ public final class BackgroundDexOptService { * @return PackageDexOptimizer.DEX_* */ @DexOptResult private int downgradePackage(PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { private int downgradePackage(@NonNull Computer snapshot, PackageManagerService pm, String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) { if (DEBUG) { Slog.d(TAG, "Downgrading " + pkg); } Loading @@ -709,15 +711,15 @@ public final class BackgroundDexOptService { if (!isPostBootUpdate) { dexoptFlags |= DexoptOptions.DEXOPT_IDLE_BACKGROUND_JOB; } long package_size_before = getPackageSize(pm, pkg); long package_size_before = getPackageSize(snapshot, 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(pkg)) { if (!pm.canHaveOatDir(snapshot, pkg)) { // For apps that don't have the oat directory, instead of downgrading, // remove their compiler artifacts from dalvik cache. pm.deleteOatArtifactsOfPackage(pkg); pm.deleteOatArtifactsOfPackage(snapshot, pkg); } else { result = performDexOptPrimary(pkg, reason, dexoptFlags); } Loading @@ -726,8 +728,9 @@ 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(pm, pkg), /*aggressive=*/ false); getPackageSize(newSnapshot, pkg), /*aggressive=*/ false); } return result; } Loading
services/core/java/com/android/server/pm/Computer.java +62 −178 File changed.Preview size limit exceeded, changes collapsed. Show changes