Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1f81f90 authored by Narayan Kamath's avatar Narayan Kamath Committed by Android Git Automerger
Browse files

am 27f2bfc4: Merge "Fix dex file pruning logic."

* commit '27f2bfc4':
  Fix dex file pruning logic.
parents 51f4367c 27f2bfc4
Loading
Loading
Loading
Loading
+32 −18
Original line number Diff line number Diff line
@@ -1289,24 +1289,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.
@@ -1528,6 +1511,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;
    }