diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b462db285df96..6dcc0895ca714 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -17731,6 +17731,15 @@ public class PackageManagerService extends IPackageManager.Stub return; } + // check if the new package supports all of the abis which the old package supports + boolean oldPkgSupportMultiArch = oldPackage.applicationInfo.secondaryCpuAbi != null; + boolean newPkgSupportMultiArch = pkg.applicationInfo.secondaryCpuAbi != null; + if (isSystemApp(oldPackage) && oldPkgSupportMultiArch && !newPkgSupportMultiArch) { + res.setError(INSTALL_FAILED_UPDATE_INCOMPATIBLE, + "Update to package " + pkgName + " doesn't support multi arch"); + return; + } + // In case of rollback, remember per-user/profile install state allUsers = sUserManager.getUserIds(); installedUsers = ps.queryInstalledUsers(allUsers, true);