From bbcb3312050dc89385e70e96fee7d88fbcb4e794 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 20 Oct 2015 17:32:01 -0700 Subject: Correctly derive ABI for apps on adopted media. There was a bug causing PackageManager to think apps on adopted media were actually in an ASEC, causing it to skip ABI derivation. This change fixes the issue by copying the volume UUID into place early in the scanning process. Also fixes two places where we had incorrectly been including apps on adopted media; switched them to check only for ASECs. Bug: 24583803 Change-Id: If66d1bce02824a4d8e22f741b04a2abda0378cfb --- core/java/android/content/pm/PackageParser.java | 1 + .../core/java/com/android/server/pm/PackageManagerService.java | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 7032c9a861cf..99bd39035358 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -894,6 +894,7 @@ public class PackageParser { } pkg.volumeUuid = volumeUuid; + pkg.applicationInfo.volumeUuid = volumeUuid; pkg.baseCodePath = apkPath; pkg.mSignatures = null; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 313972bd0210..26a1f921948d 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7551,8 +7551,8 @@ public class PackageManagerService extends IPackageManager.Stub { // We would never need to extract libs for forward-locked and external packages, // since the container service will do it for us. We shouldn't attempt to // extract libs from system app when it was not updated. - if (pkg.isForwardLocked() || isExternal(pkg) || - (isSystemApp(pkg) && !pkg.isUpdatedSystemApp()) ) { + if (pkg.isForwardLocked() || pkg.applicationInfo.isExternalAsec() || + (isSystemApp(pkg) && !pkg.isUpdatedSystemApp())) { extractLibs = false; } @@ -7829,7 +7829,7 @@ public class PackageManagerService extends IPackageManager.Stub { final String codePath = pkg.codePath; final File codeFile = new File(codePath); final boolean bundledApp = info.isSystemApp() && !info.isUpdatedSystemApp(); - final boolean asecApp = info.isForwardLocked() || isExternal(info); + final boolean asecApp = info.isForwardLocked() || info.isExternalAsec(); info.nativeLibraryRootDir = null; info.nativeLibraryRootRequiresIsa = false; @@ -13647,7 +13647,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (ps != null) { libDirRoot = ps.legacyNativeLibraryPathString; } - if (p != null && (isExternal(p) || p.isForwardLocked())) { + if (p != null && (p.isForwardLocked() || p.applicationInfo.isExternalAsec())) { final long token = Binder.clearCallingIdentity(); try { String secureContainerId = cidFromCodePath(p.applicationInfo.getBaseCodePath()); -- cgit v1.2.3-59-g8ed1b