diff options
author | Fyodor Kupolov <fkupolov@google.com> | 2015-09-09 15:56:45 -0700 |
---|---|---|
committer | Fyodor Kupolov <fkupolov@google.com> | 2015-09-10 10:44:49 -0700 |
commit | ebcac16cb1405bf7d0b570e11a287df078edfc1c (patch) | |
tree | 8d54dc963ba05a170a268c3f281c1d658979d72a /services | |
parent | 0018323c07d119fde7260d66f60dd9987c7b74ea (diff) | |
download | frameworks_base-ebcac16cb1405bf7d0b570e11a287df078edfc1c.zip frameworks_base-ebcac16cb1405bf7d0b570e11a287df078edfc1c.tar.gz frameworks_base-ebcac16cb1405bf7d0b570e11a287df078edfc1c.tar.bz2 |
Use app directory as apkPath for cluster installs
Previously, size of of oat directory was not counted by the getsize command,
because base APK location was passed as apkpath argument.
Bug: 23896047
Change-Id: Ic7b6b725785ff2e2a0cf3887ba68c162b23b1212
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/pm/PackageDexOptimizer.java | 3 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 16 |
2 files changed, 16 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index 7024ec8..8c23648 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -217,8 +217,7 @@ final class PackageDexOptimizer { @Nullable private String createOatDirIfSupported(PackageParser.Package pkg, String dexInstructionSet) throws IOException { - if ((pkg.isSystemApp() && !pkg.isUpdatedSystemApp()) || pkg.isForwardLocked() - || pkg.applicationInfo.isExternalAsec()) { + if (!pkg.canHaveOatDir()) { return null; } File codePath = new File(pkg.codePath); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 96c5460..3330a50 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -13628,7 +13628,21 @@ public class PackageManagerService extends IPackageManager.Stub { // TODO(multiArch): Extend getSizeInfo to look at *all* instruction sets, not // just the primary. String[] dexCodeInstructionSets = getDexCodeInstructionSets(getAppDexInstructionSets(ps)); - int res = mInstaller.getSizeInfo(p.volumeUuid, packageName, userHandle, p.baseCodePath, + + String apkPath; + File packageDir = new File(p.codePath); + + if (packageDir.isDirectory() && p.canHaveOatDir()) { + apkPath = packageDir.getAbsolutePath(); + // If libDirRoot is inside a package dir, set it to null to avoid it being counted twice + if (libDirRoot != null && libDirRoot.startsWith(apkPath)) { + libDirRoot = null; + } + } else { + apkPath = p.baseCodePath; + } + + int res = mInstaller.getSizeInfo(p.volumeUuid, packageName, userHandle, apkPath, libDirRoot, publicSrcDir, asecPath, dexCodeInstructionSets, pStats); if (res < 0) { return false; |