diff options
| author | 2019-11-01 20:17:02 +0000 | |
|---|---|---|
| committer | 2019-11-01 20:17:02 +0000 | |
| commit | d4a9d9d2754e5ac7714037af93d380f4dcd1555a (patch) | |
| tree | efc6c5ebf380bf040d90fb0df7b124ff2ab2359d | |
| parent | 3d8a0ce48992c77b67e27f1fc079a3fdb648b9b3 (diff) | |
| parent | 0335f0916dd3473737a30904e2dfc86cbd4b7080 (diff) | |
Merge "Fix crash loop due to broken packages.xml around updated-package"
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 0460a80b1dc0..461743e9ba53 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -9334,6 +9334,16 @@ public class PackageManagerService extends IPackageManager.Stub pkgSetting = originalPkgSetting == null ? installedPkgSetting : originalPkgSetting; pkgAlreadyExists = pkgSetting != null; final String disabledPkgName = pkgAlreadyExists ? pkgSetting.name : pkg.packageName; + if (scanSystemPartition && !pkgAlreadyExists + && mSettings.getDisabledSystemPkgLPr(disabledPkgName) != null) { + // The updated-package data for /system apk remains inconsistently + // after the package data for /data apk is lost accidentally. + // To recover it, enable /system apk and install it as non-updated system app. + Slog.w(TAG, "Inconsistent package setting of updated system app for " + + disabledPkgName + ". To recover it, enable the system app" + + "and install it as non-updated system app."); + mSettings.removeDisabledSystemPackageLPw(disabledPkgName); + } disabledPkgSetting = mSettings.getDisabledSystemPkgLPr(disabledPkgName); isSystemPkgUpdated = disabledPkgSetting != null; |