Loading services/core/java/com/android/server/pm/DeletePackageHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -725,6 +725,9 @@ final class DeletePackageHelper { Log.i(TAG, "Observer no longer exists."); } //end catch notifyPackageChangeObserversOnDelete(packageName, versionCode); // Prune unused static shared libraries which have been cached a period of time mPm.schedulePruneUnusedStaticSharedLibraries(true /* delay */); }); } Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -3183,6 +3183,9 @@ final class InstallPackageHelper { mPm.notifyInstallObserver(res, installObserver); } // Prune unused static shared libraries which have been cached a period of time mPm.schedulePruneUnusedStaticSharedLibraries(true /* delay */); // Log tracing if needed if (installArgs.mTraceMethod != null) { Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, installArgs.mTraceMethod, Loading services/core/java/com/android/server/pm/PackageHandler.java +17 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static com.android.server.pm.PackageManagerService.CHECK_PENDING_INTEGRITY_VERIFICATION; import static com.android.server.pm.PackageManagerService.CHECK_PENDING_VERIFICATION; import static com.android.server.pm.PackageManagerService.DEBUG_INSTALL; import static com.android.server.pm.PackageManagerService.DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD; import static com.android.server.pm.PackageManagerService.DEFAULT_VERIFICATION_RESPONSE; import static com.android.server.pm.PackageManagerService.DEFERRED_NO_KILL_INSTALL_OBSERVER; import static com.android.server.pm.PackageManagerService.DEFERRED_NO_KILL_POST_DELETE; Loading @@ -32,6 +33,7 @@ import static com.android.server.pm.PackageManagerService.INSTANT_APP_RESOLUTION import static com.android.server.pm.PackageManagerService.INTEGRITY_VERIFICATION_COMPLETE; import static com.android.server.pm.PackageManagerService.PACKAGE_VERIFIED; import static com.android.server.pm.PackageManagerService.POST_INSTALL; import static com.android.server.pm.PackageManagerService.PRUNE_UNUSED_STATIC_SHARED_LIBRARIES; import static com.android.server.pm.PackageManagerService.SEND_PENDING_BROADCAST; import static com.android.server.pm.PackageManagerService.SNAPSHOT_UNCORK; import static com.android.server.pm.PackageManagerService.TAG; Loading @@ -53,9 +55,12 @@ import android.os.Process; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.util.Log; import android.util.Slog; import java.io.IOException; /** * Part of PackageManagerService that handles events. */ Loading Loading @@ -376,6 +381,18 @@ final class PackageHandler extends Handler { } break; } case PRUNE_UNUSED_STATIC_SHARED_LIBRARIES: { try { mPm.pruneUnusedStaticSharedLibraries(Long.MAX_VALUE, Settings.Global.getLong(mPm.mContext.getContentResolver(), Settings.Global.UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD, DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD)); } catch (IOException e) { Log.w(TAG, "Failed to prune unused static shared libraries :" + e.getMessage()); } break; } } } Loading services/core/java/com/android/server/pm/PackageManagerService.java +20 −4 Original line number Diff line number Diff line Loading @@ -303,6 +303,7 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; Loading Loading @@ -918,6 +919,7 @@ public class PackageManagerService extends IPackageManager.Stub static final int CHECK_PENDING_INTEGRITY_VERIFICATION = 26; static final int DOMAIN_VERIFICATION = 27; static final int SNAPSHOT_UNCORK = 28; static final int PRUNE_UNUSED_STATIC_SHARED_LIBRARIES = 29; static final int DEFERRED_NO_KILL_POST_DELETE_DELAY_MS = 3 * 1000; private static final int DEFERRED_NO_KILL_INSTALL_OBSERVER_DELAY_MS = 500; Loading @@ -927,11 +929,16 @@ public class PackageManagerService extends IPackageManager.Stub private static final long BROADCAST_DELAY_DURING_STARTUP = 10 * 1000L; // 10 seconds (in millis) private static final long BROADCAST_DELAY = 1 * 1000L; // 1 second (in millis) private static final long PRUNE_UNUSED_STATIC_SHARED_LIBRARIES_DELAY = TimeUnit.MINUTES.toMillis(3); // 3 minutes // When the service constructor finished plus a delay (used for broadcast delay computation) private long mServiceStartWithDelay; private static final long DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = 2 * 60 * 60 * 1000L; /* two hours */ private static final long FREE_STORAGE_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = TimeUnit.HOURS.toMillis(2); /* two hours */ static final long DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = TimeUnit.DAYS.toMillis(7); /* 7 days */ final UserManagerService mUserManager; Loading Loading @@ -1255,6 +1262,12 @@ public class PackageManagerService extends IPackageManager.Stub mHandler.sendMessageDelayed(message, DEFERRED_NO_KILL_POST_DELETE_DELAY_MS); } void schedulePruneUnusedStaticSharedLibraries(boolean delay) { mHandler.removeMessages(PRUNE_UNUSED_STATIC_SHARED_LIBRARIES); mHandler.sendEmptyMessageDelayed(PRUNE_UNUSED_STATIC_SHARED_LIBRARIES, delay ? PRUNE_UNUSED_STATIC_SHARED_LIBRARIES_DELAY : 0); } @Override public void requestChecksums(@NonNull String packageName, boolean includeSplits, @Checksum.TypeMask int optional, Loading Loading @@ -2913,7 +2926,7 @@ public class PackageManagerService extends IPackageManager.Stub if (internalVolume && pruneUnusedStaticSharedLibraries(bytes, android.provider.Settings.Global.getLong(mContext.getContentResolver(), Global.UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD, DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD))) { FREE_STORAGE_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD))) { return; } Loading Loading @@ -2968,7 +2981,7 @@ public class PackageManagerService extends IPackageManager.Stub throw new IOException("Failed to free " + bytes + " on storage device at " + file); } private boolean pruneUnusedStaticSharedLibraries(long neededSpace, long maxCachePeriod) boolean pruneUnusedStaticSharedLibraries(long neededSpace, long maxCachePeriod) throws IOException { final StorageManager storage = mInjector.getSystemService(StorageManager.class); final File volume = storage.findPathForUuid(StorageManager.UUID_PRIVATE_INTERNAL); Loading Loading @@ -8464,6 +8477,9 @@ public class PackageManagerService extends IPackageManager.Stub }); mBackgroundDexOptService.systemReady(); // Prune unused static shared libraries which have been cached a period of time schedulePruneUnusedStaticSharedLibraries(false /* delay */); } /** Loading Loading
services/core/java/com/android/server/pm/DeletePackageHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -725,6 +725,9 @@ final class DeletePackageHelper { Log.i(TAG, "Observer no longer exists."); } //end catch notifyPackageChangeObserversOnDelete(packageName, versionCode); // Prune unused static shared libraries which have been cached a period of time mPm.schedulePruneUnusedStaticSharedLibraries(true /* delay */); }); } Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -3183,6 +3183,9 @@ final class InstallPackageHelper { mPm.notifyInstallObserver(res, installObserver); } // Prune unused static shared libraries which have been cached a period of time mPm.schedulePruneUnusedStaticSharedLibraries(true /* delay */); // Log tracing if needed if (installArgs.mTraceMethod != null) { Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, installArgs.mTraceMethod, Loading
services/core/java/com/android/server/pm/PackageHandler.java +17 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static com.android.server.pm.PackageManagerService.CHECK_PENDING_INTEGRITY_VERIFICATION; import static com.android.server.pm.PackageManagerService.CHECK_PENDING_VERIFICATION; import static com.android.server.pm.PackageManagerService.DEBUG_INSTALL; import static com.android.server.pm.PackageManagerService.DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD; import static com.android.server.pm.PackageManagerService.DEFAULT_VERIFICATION_RESPONSE; import static com.android.server.pm.PackageManagerService.DEFERRED_NO_KILL_INSTALL_OBSERVER; import static com.android.server.pm.PackageManagerService.DEFERRED_NO_KILL_POST_DELETE; Loading @@ -32,6 +33,7 @@ import static com.android.server.pm.PackageManagerService.INSTANT_APP_RESOLUTION import static com.android.server.pm.PackageManagerService.INTEGRITY_VERIFICATION_COMPLETE; import static com.android.server.pm.PackageManagerService.PACKAGE_VERIFIED; import static com.android.server.pm.PackageManagerService.POST_INSTALL; import static com.android.server.pm.PackageManagerService.PRUNE_UNUSED_STATIC_SHARED_LIBRARIES; import static com.android.server.pm.PackageManagerService.SEND_PENDING_BROADCAST; import static com.android.server.pm.PackageManagerService.SNAPSHOT_UNCORK; import static com.android.server.pm.PackageManagerService.TAG; Loading @@ -53,9 +55,12 @@ import android.os.Process; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.util.Log; import android.util.Slog; import java.io.IOException; /** * Part of PackageManagerService that handles events. */ Loading Loading @@ -376,6 +381,18 @@ final class PackageHandler extends Handler { } break; } case PRUNE_UNUSED_STATIC_SHARED_LIBRARIES: { try { mPm.pruneUnusedStaticSharedLibraries(Long.MAX_VALUE, Settings.Global.getLong(mPm.mContext.getContentResolver(), Settings.Global.UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD, DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD)); } catch (IOException e) { Log.w(TAG, "Failed to prune unused static shared libraries :" + e.getMessage()); } break; } } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +20 −4 Original line number Diff line number Diff line Loading @@ -303,6 +303,7 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; Loading Loading @@ -918,6 +919,7 @@ public class PackageManagerService extends IPackageManager.Stub static final int CHECK_PENDING_INTEGRITY_VERIFICATION = 26; static final int DOMAIN_VERIFICATION = 27; static final int SNAPSHOT_UNCORK = 28; static final int PRUNE_UNUSED_STATIC_SHARED_LIBRARIES = 29; static final int DEFERRED_NO_KILL_POST_DELETE_DELAY_MS = 3 * 1000; private static final int DEFERRED_NO_KILL_INSTALL_OBSERVER_DELAY_MS = 500; Loading @@ -927,11 +929,16 @@ public class PackageManagerService extends IPackageManager.Stub private static final long BROADCAST_DELAY_DURING_STARTUP = 10 * 1000L; // 10 seconds (in millis) private static final long BROADCAST_DELAY = 1 * 1000L; // 1 second (in millis) private static final long PRUNE_UNUSED_STATIC_SHARED_LIBRARIES_DELAY = TimeUnit.MINUTES.toMillis(3); // 3 minutes // When the service constructor finished plus a delay (used for broadcast delay computation) private long mServiceStartWithDelay; private static final long DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = 2 * 60 * 60 * 1000L; /* two hours */ private static final long FREE_STORAGE_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = TimeUnit.HOURS.toMillis(2); /* two hours */ static final long DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = TimeUnit.DAYS.toMillis(7); /* 7 days */ final UserManagerService mUserManager; Loading Loading @@ -1255,6 +1262,12 @@ public class PackageManagerService extends IPackageManager.Stub mHandler.sendMessageDelayed(message, DEFERRED_NO_KILL_POST_DELETE_DELAY_MS); } void schedulePruneUnusedStaticSharedLibraries(boolean delay) { mHandler.removeMessages(PRUNE_UNUSED_STATIC_SHARED_LIBRARIES); mHandler.sendEmptyMessageDelayed(PRUNE_UNUSED_STATIC_SHARED_LIBRARIES, delay ? PRUNE_UNUSED_STATIC_SHARED_LIBRARIES_DELAY : 0); } @Override public void requestChecksums(@NonNull String packageName, boolean includeSplits, @Checksum.TypeMask int optional, Loading Loading @@ -2913,7 +2926,7 @@ public class PackageManagerService extends IPackageManager.Stub if (internalVolume && pruneUnusedStaticSharedLibraries(bytes, android.provider.Settings.Global.getLong(mContext.getContentResolver(), Global.UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD, DEFAULT_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD))) { FREE_STORAGE_UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD))) { return; } Loading Loading @@ -2968,7 +2981,7 @@ public class PackageManagerService extends IPackageManager.Stub throw new IOException("Failed to free " + bytes + " on storage device at " + file); } private boolean pruneUnusedStaticSharedLibraries(long neededSpace, long maxCachePeriod) boolean pruneUnusedStaticSharedLibraries(long neededSpace, long maxCachePeriod) throws IOException { final StorageManager storage = mInjector.getSystemService(StorageManager.class); final File volume = storage.findPathForUuid(StorageManager.UUID_PRIVATE_INTERNAL); Loading Loading @@ -8464,6 +8477,9 @@ public class PackageManagerService extends IPackageManager.Stub }); mBackgroundDexOptService.systemReady(); // Prune unused static shared libraries which have been cached a period of time schedulePruneUnusedStaticSharedLibraries(false /* delay */); } /** Loading