diff options
| author | 2019-12-10 18:30:03 +0000 | |
|---|---|---|
| committer | 2019-12-10 18:30:03 +0000 | |
| commit | 2d9c3071d97b9cea510eb5bb53f292350e929146 (patch) | |
| tree | f9a10ffc9b446f09394eaf225328cb099e163349 | |
| parent | 87630910190dee7ad03750130e35170fe564655c (diff) | |
| parent | 2227b5ae102309ce85501b16e82cb51094dadcd8 (diff) | |
Merge "Do not clean up ART profiles during OTAs"
| -rw-r--r-- | services/core/java/com/android/server/pm/Installer.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 10 |
2 files changed, 10 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java index adcd19e9bb5a..b3b0029326d5 100644 --- a/services/core/java/com/android/server/pm/Installer.java +++ b/services/core/java/com/android/server/pm/Installer.java @@ -85,6 +85,9 @@ public class Installer extends SystemService { public static final int FLAG_USE_QUOTA = IInstalld.FLAG_USE_QUOTA; public static final int FLAG_FORCE = IInstalld.FLAG_FORCE; + public static final int FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES = + IInstalld.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES; + private final boolean mIsolated; private volatile IInstalld mInstalld; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index cec5c6d75014..9791ff3e02ba 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3136,7 +3136,8 @@ public class PackageManagerService extends IPackageManager.Stub // No apps are running this early, so no need to freeze clearAppDataLIF(ps.pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL - | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); + | Installer.FLAG_CLEAR_CODE_CACHE_ONLY + | Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES); } } ver.fingerprint = Build.FINGERPRINT; @@ -10222,7 +10223,9 @@ public class PackageManagerService extends IPackageManager.Stub clearAppDataLeafLIF(pkg.childPackages.get(i), userId, flags); } - clearAppProfilesLIF(pkg, UserHandle.USER_ALL); + if ((flags & Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES) == 0) { + clearAppProfilesLIF(pkg, UserHandle.USER_ALL); + } } private void clearAppDataLeafLIF(PackageParser.Package pkg, int userId, int flags) { @@ -22047,7 +22050,8 @@ public class PackageManagerService extends IPackageManager.Stub if (!Build.FINGERPRINT.equals(ver.fingerprint)) { clearAppDataLIF(ps.pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE - | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); + | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY + | Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES); } } } |