diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 87ba59abdebe8..50aec835cc31b 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -6415,7 +6415,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. --> - false + true false diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index a267e8afa78d9..5932929a69c4c 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -4360,12 +4360,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 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; } }