Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a96ecf78 authored by Narayan Kamath's avatar Narayan Kamath
Browse files

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 b9048634.

bug: 21144503

(cherry picked from commit c52ae280)

Change-Id: I47b8762449714162fcd5c16eba6fcc146b93120b
parent 3178e9f6
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -5531,12 +5531,14 @@ public class PackageManagerService extends IPackageManager.Stub {
                // to scan the package again.
                // to scan the package again.
                deriveNonSystemPackageAbi(pkg, scanFile, cpuAbiOverride, false /* extract libs */);
                deriveNonSystemPackageAbi(pkg, scanFile, cpuAbiOverride, false /* extract libs */);
                if (!TextUtils.equals(oldPrimaryCpuAbi, pkg.applicationInfo.primaryCpuAbi)) {
                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);
                            + oldPrimaryCpuAbi + "-> " + pkg.applicationInfo.primaryCpuAbi);
                }
                }
                if (!TextUtils.equals(oldSecondaryCpuAbi, pkg.applicationInfo.secondaryCpuAbi)) {
                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);
                            + oldSecondaryCpuAbi + "-> " + pkg.applicationInfo.secondaryCpuAbi);
                }
                }
            }
            }
@@ -10479,7 +10481,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                        true /* extract libs */);
                        true /* extract libs */);
            } catch (PackageManagerException pme) {
            } catch (PackageManagerException pme) {
                Slog.e(TAG, "Error deriving application ABI", 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;
                return;
            }
            }