Throw a checked exception on inconsistent installs.
Allows us to proceed without crashing the system process. Also,
complete an incomplete error message. Follow up comments from
change b904863476991d8540d37d5.
bug: 21144503
(cherry picked from commit c52ae28006605fb2da38b305b60b9bb419aa2f80)
Change-Id: I47b8762449714162fcd5c16eba6fcc146b93120b
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 1925e2e..fa8184d 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -5531,12 +5531,14 @@
// to scan the package again.
deriveNonSystemPackageAbi(pkg, scanFile, cpuAbiOverride, false /* extract libs */);
if (!TextUtils.equals(oldPrimaryCpuAbi, pkg.applicationInfo.primaryCpuAbi)) {
- throw new IllegalStateException("unexpected abi change for " + pkg.packageName + " ("
+ throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR,
+ "unexpected abi change for " + pkg.packageName + " ("
+ oldPrimaryCpuAbi + "-> " + pkg.applicationInfo.primaryCpuAbi);
}
if (!TextUtils.equals(oldSecondaryCpuAbi, pkg.applicationInfo.secondaryCpuAbi)) {
- throw new IllegalStateException("unexpected abi change for " + pkg.packageName + " ("
+ throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR,
+ "unexpected abi change for " + pkg.packageName + " ("
+ oldSecondaryCpuAbi + "-> " + pkg.applicationInfo.secondaryCpuAbi);
}
}
@@ -10479,7 +10481,7 @@
true /* extract libs */);
} catch (PackageManagerException pme) {
Slog.e(TAG, "Error deriving application ABI", pme);
- res.setError(INSTALL_FAILED_INTERNAL_ERROR, "Error ");
+ res.setError(INSTALL_FAILED_INTERNAL_ERROR, "Error deriving application ABI");
return;
}