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

Commit bbcb3312 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

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
parent a1123479
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -894,6 +894,7 @@ public class PackageParser {
            }

            pkg.volumeUuid = volumeUuid;
            pkg.applicationInfo.volumeUuid = volumeUuid;
            pkg.baseCodePath = apkPath;
            pkg.mSignatures = null;

+4 −4
Original line number Diff line number Diff line
@@ -7551,7 +7551,7 @@ 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) ||
        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());