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

Commit d29a2ccc authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Packages on IncrementalFS can't have oat dir.

Bug: b/154535403
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest
Change-Id: I7428f3c0a28cc300586ad083cc4ab12082d67e72
parent 785957d3
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -6855,9 +6855,9 @@ public class PackageParser {

        /** @hide */
        public boolean canHaveOatDir() {
            // The following app types CANNOT have oat directory
            // - non-updated system apps
            return !isSystem() || isUpdatedSystemApp();
            // Nobody should be calling this method ever, but we can't rely on this.
            // Thus no logic here and a reasonable return value.
            return true;
        }

        public boolean isMatch(int flags) {
+10 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.content.pm.parsing.component.ParsedActivity;
import android.content.pm.parsing.component.ParsedInstrumentation;
import android.content.pm.parsing.component.ParsedProvider;
import android.content.pm.parsing.component.ParsedService;
import android.os.incremental.IncrementalManager;
import android.text.TextUtils;

import com.android.internal.content.NativeLibraryHelper;
@@ -141,8 +142,15 @@ public class AndroidPackageUtils {

    public static boolean canHaveOatDir(AndroidPackage pkg, boolean isUpdatedSystemApp) {
        // The following app types CANNOT have oat directory
        // - non-updated system apps
        return !pkg.isSystem() || isUpdatedSystemApp;
        // - non-updated system apps,
        // - incrementally installed apps.
        if (pkg.isSystem() && !isUpdatedSystemApp) {
            return false;
        }
        if (IncrementalManager.isIncrementalPath(pkg.getCodePath())) {
            return false;
        }
        return true;
    }

    public static boolean hasComponentClassName(AndroidPackage pkg, String className) {