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