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

Commit d20f2106 authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by Android Git Automerger
Browse files

am bfc584df: Merge "Use app directory as apkPath for cluster installs" into mnc-dr-dev

* commit 'bfc584df':
  Use app directory as apkPath for cluster installs
parents 717e39df bfc584df
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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))
+1 −2
Original line number Diff line number Diff line
@@ -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);
+15 −1
Original line number Diff line number Diff line
@@ -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;