diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index d0ad4acce050..0c6be32d3fe3 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -15493,6 +15493,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); |