pm: add delete-dexopt command

- Use to clean up dex optimization of specific package for
  dexopt related tests

Bug: 214247875
Test: adb shell pm delete-dexopt PACKAGE and confirm that status are
      updated from adb shell dumpsys package dexopt for the package

Change-Id: Id534c276d9b23e59ed76ee2b079ad4a8a984fb39
This commit is contained in:
Keun young Park
2022-01-12 10:21:25 -08:00
committed by Keun-young Park
parent d80c67c952
commit 9544bf7db6

View File

@@ -230,6 +230,8 @@ class PackageManagerShellCommand extends ShellCommand {
return runDexoptJob();
case "cancel-bg-dexopt-job":
return cancelBgDexOptJob();
case "delete-dexopt":
return runDeleteDexOpt();
case "dump-profiles":
return runDumpProfiles();
case "snapshot-profile":
@@ -1917,6 +1919,24 @@ class PackageManagerShellCommand extends ShellCommand {
return 0;
}
private int runDeleteDexOpt() throws RemoteException {
PrintWriter pw = getOutPrintWriter();
String packageName = getNextArg();
if (TextUtils.isEmpty(packageName)) {
pw.println("Error: no package name");
return 1;
}
long freedBytes = LocalServices.getService(
PackageManagerInternal.class).deleteOatArtifactsOfPackage(packageName);
if (freedBytes < 0) {
pw.println("Error: delete failed");
return 1;
}
pw.println("Success: freed " + freedBytes + " bytes");
Slog.i(TAG, "delete-dexopt " + packageName + " ,freed " + freedBytes + " bytes");
return 0;
}
private int runDumpProfiles() throws RemoteException {
String packageName = getNextArg();
mInterface.dumpProfiles(packageName);
@@ -4000,6 +4020,9 @@ class PackageManagerShellCommand extends ShellCommand {
pw.println(" force-dex-opt PACKAGE");
pw.println(" Force immediate execution of dex opt for the given PACKAGE.");
pw.println("");
pw.println(" delete-dexopt PACKAGE");
pw.println(" Delete dex optimization results for the given PACKAGE.");
pw.println("");
pw.println(" bg-dexopt-job");
pw.println(" Execute the background optimizations immediately.");
pw.println(" Note that the command only runs the background optimizer logic. It may");