diff options
| author | 2014-05-01 14:39:16 +0000 | |
|---|---|---|
| committer | 2014-05-01 14:39:16 +0000 | |
| commit | d6809b35aff02fdccf7ac433005aba2d06bbc3ff (patch) | |
| tree | 0081104a611fd7589064c782e2a34e2685616ee2 | |
| parent | fbd80b58db2aa8f650acf26305e8cbed24a5755b (diff) | |
| parent | c1f81f9086037dde6e082b8a80c84277cb727726 (diff) | |
am c1f81f90: am 27f2bfc4: Merge "Fix dex file pruning logic."
* commit 'c1f81f9086037dde6e082b8a80c84277cb727726':
Fix dex file pruning logic.
| -rwxr-xr-x | services/core/java/com/android/server/pm/PackageManagerService.java | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index eda30c3a0506..707b3be81aa3 100755 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1296,24 +1296,7 @@ public class PackageManagerService extends IPackageManager.Stub { } if (didDexOpt) { - File dalvikCacheDir = new File(dataDir, "dalvik-cache"); - - // If we had to do a dexopt of one of the previous - // things, then something on the system has changed. - // Consider this significant, and wipe away all other - // existing dexopt files to ensure we don't leave any - // dangling around. - String[] files = dalvikCacheDir.list(); - if (files != null) { - for (int i=0; i<files.length; i++) { - String fn = files[i]; - if (fn.startsWith("data@app@") - || fn.startsWith("data@app-private@")) { - Slog.i(TAG, "Pruning dalvik file: " + fn); - (new File(dalvikCacheDir, fn)).delete(); - } - } - } + pruneDexFiles(new File(dataDir, "dalvik-cache")); } // Collect vendor overlay packages. @@ -1535,6 +1518,37 @@ public class PackageManagerService extends IPackageManager.Stub { } // synchronized (mInstallLock) } + private static void pruneDexFiles(File cacheDir) { + // If we had to do a dexopt of one of the previous + // things, then something on the system has changed. + // Consider this significant, and wipe away all other + // existing dexopt files to ensure we don't leave any + // dangling around. + // + // Additionally, delete all dex files from the root directory + // since there shouldn't be any there anyway. + File[] files = cacheDir.listFiles(); + if (files != null) { + for (File file : files) { + if (!file.isDirectory()) { + Slog.i(TAG, "Pruning dalvik file: " + file.getAbsolutePath()); + file.delete(); + } else { + File[] subDirList = file.listFiles(); + if (subDirList != null) { + for (File subDirFile : subDirList) { + final String fn = subDirFile.getName(); + if (fn.startsWith("data@app@") || fn.startsWith("data@app-private@")) { + Slog.i(TAG, "Pruning dalvik file: " + fn); + subDirFile.delete(); + } + } + } + } + } + } + } + public boolean isFirstBoot() { return !mRestoredSettings; } |