am d20f2106: am bfc584df: Merge "Use app directory as apkPath for cluster installs" into mnc-dr-dev
* commit 'd20f21065036a50cf0ba8537746f68f713f20f8b': Use app directory as apkPath for cluster installs
This commit is contained in:
@@ -4520,6 +4520,17 @@ public class PackageParser {
|
||||
return applicationInfo.isUpdatedSystemApp();
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public boolean canHaveOatDir() {
|
||||
// The following app types CANNOT have oat directory
|
||||
// - non-updated system apps
|
||||
// - forward-locked apps or apps installed in ASEC containers
|
||||
return (!isSystemApp() || isUpdatedSystemApp())
|
||||
&& !isForwardLocked() && !applicationInfo.isExternalAsec();
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "Package{"
|
||||
+ Integer.toHexString(System.identityHashCode(this))
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user