Sdklib can be uninstalled even if there is an app depends on this sdk
Bug: 295827951
Test: PackageManagerShellCommandInstallTest#testUninstallSdkWhileAppUsing
Change-Id: I8fca9a1fe4948d4a656b8dc7c7b1e9a74b3c3b5c
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java
index 8e767e7..8bf903a 100644
--- a/services/core/java/com/android/server/pm/DeletePackageHelper.java
+++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java
@@ -18,6 +18,7 @@
import static android.Manifest.permission.CONTROL_KEYGUARD;
import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS;
+import static android.content.pm.Flags.sdkLibIndependence;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import static android.content.pm.PackageManager.DELETE_KEEP_DATA;
@@ -187,7 +188,9 @@
List<VersionedPackage> libClientPackages =
computer.getPackagesUsingSharedLibrary(libraryInfo,
MATCH_KNOWN_PACKAGES, Process.SYSTEM_UID, currUserId);
- if (!ArrayUtils.isEmpty(libClientPackages)) {
+ boolean allowSdkLibIndependence =
+ (pkg.getSdkLibraryName() != null) && sdkLibIndependence();
+ if (!ArrayUtils.isEmpty(libClientPackages) && !allowSdkLibIndependence) {
Slog.w(TAG, "Not removing package " + pkg.getManifestPackageName()
+ " hosting lib " + libraryInfo.getName() + " version "
+ libraryInfo.getLongVersion() + " used by " + libClientPackages