Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +10 −4 Original line number Diff line number Diff line Loading @@ -1897,11 +1897,17 @@ final class InstallPackageHelper { } if (!oldSharedUid.equals(newSharedUid)) { if (!(oldSharedUid.equals("<nothing>") && ps.getPkg() == null && ps.isArchivedOnAnyUser(allUsers))) { // Only allow changing sharedUserId if unarchiving // TODO(b/361558423): remove this check after pre-archiving installs // accept a sharedUserId param in the API throw new PrepareFailure(INSTALL_FAILED_UID_CHANGED, "Package " + parsedPackage.getPackageName() + " shared user changed from " + oldSharedUid + " to " + newSharedUid); } } // APK should not re-join shared UID if (oldPackageState.isLeavingSharedUser() Loading services/core/java/com/android/server/pm/PackageSetting.java +12 −0 Original line number Diff line number Diff line Loading @@ -925,6 +925,18 @@ public class PackageSetting extends SettingBase implements PackageStateInternal return PackageArchiver.isArchived(readUserState(userId)); } /** * @return if the package is archived in any of the users */ boolean isArchivedOnAnyUser(int[] userIds) { for (int user : userIds) { if (isArchived(user)) { return true; } } return false; } int getInstallReason(int userId) { return readUserState(userId).getInstallReason(); } Loading Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +10 −4 Original line number Diff line number Diff line Loading @@ -1897,11 +1897,17 @@ final class InstallPackageHelper { } if (!oldSharedUid.equals(newSharedUid)) { if (!(oldSharedUid.equals("<nothing>") && ps.getPkg() == null && ps.isArchivedOnAnyUser(allUsers))) { // Only allow changing sharedUserId if unarchiving // TODO(b/361558423): remove this check after pre-archiving installs // accept a sharedUserId param in the API throw new PrepareFailure(INSTALL_FAILED_UID_CHANGED, "Package " + parsedPackage.getPackageName() + " shared user changed from " + oldSharedUid + " to " + newSharedUid); } } // APK should not re-join shared UID if (oldPackageState.isLeavingSharedUser() Loading
services/core/java/com/android/server/pm/PackageSetting.java +12 −0 Original line number Diff line number Diff line Loading @@ -925,6 +925,18 @@ public class PackageSetting extends SettingBase implements PackageStateInternal return PackageArchiver.isArchived(readUserState(userId)); } /** * @return if the package is archived in any of the users */ boolean isArchivedOnAnyUser(int[] userIds) { for (int user : userIds) { if (isArchived(user)) { return true; } } return false; } int getInstallReason(int userId) { return readUserState(userId).getInstallReason(); } Loading