From 7c3a3a8f32bd4f283bc9521d399db143ba41d644 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Mon, 14 Feb 2022 21:40:24 -0800 Subject: [PATCH] Cleanup app data folder for the user as part of reconcile. Bug: 162757029 Fixes: 162757029 Test: presubmit Change-Id: If3f10117cef28afe1dcf28424254515c5c7c48b8 --- .../java/com/android/server/pm/AppDataHelper.java | 6 ++++++ .../core/java/com/android/server/pm/Installer.java | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/services/core/java/com/android/server/pm/AppDataHelper.java b/services/core/java/com/android/server/pm/AppDataHelper.java index d745a2325b229..0b0d1458c8de7 100644 --- a/services/core/java/com/android/server/pm/AppDataHelper.java +++ b/services/core/java/com/android/server/pm/AppDataHelper.java @@ -377,6 +377,12 @@ final class AppDataHelper { + Integer.toHexString(flags) + " migrateAppData=" + migrateAppData); List result = onlyCoreApps ? new ArrayList<>() : null; + try { + mInstaller.cleanupInvalidPackageDirs(volumeUuid, userId, flags); + } catch (Installer.InstallerException e) { + logCriticalInfo(Log.WARN, "Failed to cleanup deleted dirs: " + e); + } + final File ceDir = Environment.getDataUserCeDirectory(volumeUuid, userId); final File deDir = Environment.getDataUserDeDirectory(volumeUuid, userId); diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java index c4389a741857f..742cc0237ceca 100644 --- a/services/core/java/com/android/server/pm/Installer.java +++ b/services/core/java/com/android/server/pm/Installer.java @@ -357,6 +357,20 @@ public class Installer extends SystemService { } } + /** + * Remove all invalid dirs under app data folder. + * All dirs are supposed to be valid file and package names. + */ + public void cleanupInvalidPackageDirs(String uuid, int userId, int flags) + throws InstallerException { + if (!checkBeforeRemote()) return; + try { + mInstalld.cleanupInvalidPackageDirs(uuid, userId, flags); + } catch (Exception e) { + throw InstallerException.from(e); + } + } + public void moveCompleteApp(String fromUuid, String toUuid, String packageName, int appId, String seInfo, int targetSdkVersion, String fromCodePath) throws InstallerException {