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

Commit 9c1aeb8d authored by Patrick Baumann's avatar Patrick Baumann Committed by Martijn Coenen
Browse files

Enable default stopped state for system apps

This change adds a few additional exceptions for system apps to start in
the default stopped state and turns the feature on.

Bug: 269129704
Test: inspect output of pm list packages --show-stopped
Change-Id: Ia07877356c3522a449c611e12eba787018a3d35f
parent 8dfb7017
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6360,7 +6360,7 @@
        Packages can be added by OEMs in an allowlist, to prevent them from being scanned as
        "stopped" during initial boot of a device, or after an OTA update. Stopped state of
        an app is not changed during subsequent reboots.  -->
    <bool name="config_stopSystemPackagesByDefault">false</bool>
    <bool name="config_stopSystemPackagesByDefault">true</bool>

    <!-- Whether to show weather on the lock screen by default. -->
    <bool name="config_lockscreenWeatherEnabledByDefault">false</bool>
+14 −4
Original line number Diff line number Diff line
@@ -4312,12 +4312,22 @@ final class InstallPackageHelper {

        // A new application appeared on /system, and we are seeing it for the first time.
        // Its also not updated as we don't have a copy of it on /data. So, scan it in a
        // STOPPED state. Ignore if it's an APEX package since stopped state does not affect them.
        // STOPPED state.
        // We'll skip this step under the following conditions:
        //   - It's "android"
        //   - It's an APEX or overlay package since stopped state does not affect them.
        //   - It is enumerated with a <initial-package-state> tag having the stopped attribute
        //     set to false
        final boolean isApexPkg = (scanFlags & SCAN_AS_APEX) != 0;
        if (mPm.mShouldStopSystemPackagesByDefault && scanSystemPartition
                && !pkgAlreadyExists && !isApexPkg) {
        if (mPm.mShouldStopSystemPackagesByDefault
                && scanSystemPartition
                && !pkgAlreadyExists
                && !isApexPkg
                && !parsedPackage.isOverlayIsStatic()
        ) {
            String packageName = parsedPackage.getPackageName();
            if (!mPm.mInitialNonStoppedSystemPackages.contains(packageName)) {
            if (!mPm.mInitialNonStoppedSystemPackages.contains(packageName)
                    && !"android".contentEquals(packageName)) {
                scanFlags |= SCAN_AS_STOPPED_SYSTEM_APP;
            }
        }