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
This commit is contained in:
Patrick Baumann
2023-03-17 14:50:04 +00:00
committed by Martijn Coenen
parent 8dfb7017df
commit 9c1aeb8dad
2 changed files with 15 additions and 5 deletions

View File

@@ -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>

View File

@@ -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;
}
}