Disallow pruning system shared static libraries
Shared libraries on the system image are assumed to always exist,
so do not prune them to free storage space.
Also fixes invalid uses of PackageSettingBase#getUserState
Bug: 128426859
Test: atest StaticSharedLibsHostTests
Test: atest EphemeralTest
Change-Id: I096749af6d7a5916ced433df60a33e2d5b8a7975
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 689f4f2..3b034db 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -4688,6 +4688,11 @@
if (ps == null || now - ps.lastUpdateTime < maxCachePeriod) {
continue;
}
+
+ if (ps.pkg.isSystem()) {
+ continue;
+ }
+
if (packagesToDelete == null) {
packagesToDelete = new ArrayList<>();
}
@@ -5137,7 +5142,7 @@
continue;
}
- if (!ps.getUserState().get(userId).isAvailable(flags)) {
+ if (!ps.readUserState(userId).isAvailable(flags)) {
continue;
}
@@ -6968,8 +6973,7 @@
}
final PackageSetting ps = mSettings.mPackages.get(mInstantAppInstallerActivity.packageName);
if (ps == null
- || ps.getUserState().get(userId) == null
- || !ps.getUserState().get(userId).isEnabled(mInstantAppInstallerActivity, 0)) {
+ || !ps.readUserState(userId).isEnabled(mInstantAppInstallerActivity, 0)) {
return result;
}
final ResolveInfo ephemeralInstaller = new ResolveInfo(mInstantAppInstallerInfo);