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

Commit 982d4f65 authored by Chun-Wei Wang's avatar Chun-Wei Wang Committed by Android (Google) Code Review
Browse files

Merge changes Ibfc3c7f4,I87482f87

* changes:
  Always install APEX packages
  Skip APEX when doing dexopt
parents f79a709f 7287feb1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -3252,7 +3252,8 @@ public class ComputerEngine implements Computer {

                for (PackageStateInternal pkgSetting : pkgSettings) {
                    final AndroidPackage pkg = pkgSetting.getPkg();
                    if (pkg == null) {
                    if (pkg == null || pkg.isApex()) {
                        // Skip APEX which is not dex-optimized
                        continue;
                    }
                    final String pkgName = pkg.getPackageName();
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static com.android.server.pm.PackageManagerService.STUB_SUFFIX;
import static com.android.server.pm.PackageManagerService.TAG;
import static com.android.server.pm.PackageManagerServiceCompilerMapping.getCompilerFilterForReason;
import static com.android.server.pm.PackageManagerServiceCompilerMapping.getDefaultCompilerFilter;
import static com.android.server.pm.PackageManagerServiceUtils.REMOVE_IF_APEX_PKG;
import static com.android.server.pm.PackageManagerServiceUtils.REMOVE_IF_NULL_PKG;

import android.Manifest;
@@ -572,6 +573,7 @@ final class DexOptHelper {

        // First, remove all settings without available packages
        remainingPkgSettings.removeIf(REMOVE_IF_NULL_PKG);
        remainingPkgSettings.removeIf(REMOVE_IF_APEX_PKG);

        ArrayList<PackageStateInternal> sortTemp = new ArrayList<>(remainingPkgSettings.size());

+1 −0
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
        others = new ArrayList<>(allPackageStates);
        others.removeAll(important);
        others.removeIf(PackageManagerServiceUtils.REMOVE_IF_NULL_PKG);
        others.removeIf(PackageManagerServiceUtils.REMOVE_IF_APEX_PKG);
        others.removeIf(isPlatformPackage);

        // Pre-size the array list by over-allocating by a factor of 1.5.
+4 −1
Original line number Diff line number Diff line
@@ -136,7 +136,10 @@ public class PackageManagerServiceUtils {

    private static final boolean DEBUG = Build.IS_DEBUGGABLE;

    public final static Predicate<PackageStateInternal> REMOVE_IF_NULL_PKG =
    // Skip APEX which doesn't have a valid UID
    public static final Predicate<PackageStateInternal> REMOVE_IF_APEX_PKG =
            pkgSetting -> pkgSetting.getPkg().isApex();
    public static final Predicate<PackageStateInternal> REMOVE_IF_NULL_PKG =
            pkgSetting -> pkgSetting.getPkg() == null;

    /**
+3 −2
Original line number Diff line number Diff line
@@ -398,7 +398,7 @@ class UserSystemPackageInstaller {
        final String logMessageFmt = "System package %s is not whitelisted using "
                + "'install-in-user-type' in SystemConfig for any user types!";
        pmInt.forEachPackage(pkg -> {
            if (!pkg.isSystem()) return;
            if (!pkg.isSystem() || pkg.isApex()) return;
            final String pkgName = pkg.getManifestPackageName();
            if (!allWhitelistedPackages.contains(pkgName)
                    && !shouldUseOverlayTargetName(pmInt.getPackage(pkgName))) {
@@ -574,7 +574,8 @@ class UserSystemPackageInstaller {
        final String pkgName = shouldUseOverlayTargetName(sysPkg) ?
                sysPkg.getOverlayTarget() : sysPkg.getManifestPackageName();
        return (implicitlyWhitelist && !userTypeWhitelist.containsKey(pkgName))
                || userWhitelist.contains(pkgName);
                || userWhitelist.contains(pkgName)
                || sysPkg.isApex();
    }

    /**