From b703e1c6534f85afcf86cea089c3820bd44c7b93 Mon Sep 17 00:00:00 2001 From: Patrick Baumann Date: Tue, 16 Apr 2019 10:22:48 -0700 Subject: [PATCH] Recovers on boot when scan of data app fails Prior to this change, system apps that had updated versions installed that could not be scanned on boot, did not have a fallback mechanism to restore the system app. With this change, we prepare for such a scenario and restore the system app using the existing "expecting better" mechanism. Test: manual; muck with an APK in /data/app and reboot. Bug: 117471712 Change-Id: Ic50880cc04e92003c2a20869cf38835af7ce3ccb --- .../java/com/android/server/pm/PackageManagerService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 6c5abe49fe137..ca022ed97c664 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2684,6 +2684,11 @@ public class PackageManagerService extends IPackageManager.Stub if (disabledPs.codePath == null || !disabledPs.codePath.exists() || disabledPs.pkg == null) { possiblyDeletedUpdatedSystemApps.add(ps.name); + } else { + // We're expecting that the system app should remain disabled, but add + // it to expecting better to recover in case the data version cannot + // be scanned. + mExpectingBetter.put(disabledPs.name, disabledPs.codePath); } } }