From 40cda8ef7c2e91fe1557a8cc35e01b91acf1def8 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 20 Jul 2015 13:40:18 -0700 Subject: [PATCH] Inherit ABI when moving existing install. Previously installed apps are moved between volumes as an complete package, including any previously unpacked native libraries. This means we need to inherit any previously derived ABI when moving. Bug: 22093837 Change-Id: I7656e338affa44e7f997fe4aa95bb297c0acc165 --- .../android/server/pm/PackageManagerService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index cbc350c391c7a..279918d26279a 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -12271,6 +12271,20 @@ public class PackageManagerService extends IPackageManager.Stub { // We did an in-place move, so dex is ready to roll scanFlags |= SCAN_NO_DEX; scanFlags |= SCAN_MOVE; + + synchronized (mPackages) { + final PackageSetting ps = mSettings.mPackages.get(pkgName); + if (ps == null) { + res.setError(INSTALL_FAILED_INTERNAL_ERROR, + "Missing settings for moved package " + pkgName); + } + + // We moved the entire application as-is, so bring over the + // previously derived ABI information. + pkg.applicationInfo.primaryCpuAbi = ps.primaryCpuAbiString; + pkg.applicationInfo.secondaryCpuAbi = ps.secondaryCpuAbiString; + } + } else if (!forwardLocked && !pkg.applicationInfo.isExternalAsec()) { // Enable SCAN_NO_DEX flag to skip dexopt at a later stage scanFlags |= SCAN_NO_DEX;