Add a shell command to force the background dexopt job am: f7edab63d9
am: 90ac28d618
Change-Id: I3fef4ed490036753841e09760ec929c24da0a198
This commit is contained in:
@@ -509,6 +509,11 @@ interface IPackageManager {
|
||||
|
||||
void forceDexOpt(String packageName);
|
||||
|
||||
/**
|
||||
* Execute the background dexopt job immediately.
|
||||
*/
|
||||
boolean runBackgroundDexoptJob();
|
||||
|
||||
/**
|
||||
* Reconcile the information we have about the secondary dex files belonging to
|
||||
* {@code packagName} and the actual dex files. For all dex files that were
|
||||
|
||||
@@ -280,6 +280,17 @@ public class BackgroundDexOptService extends JobService {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the idle optimizations immediately.
|
||||
*/
|
||||
public static boolean runIdleOptimizationsNow(PackageManagerService pm, Context context) {
|
||||
// Create a new object to make sure we don't interfere with the scheduled jobs.
|
||||
// Note that this may still run at the same time with the job scheduled by the
|
||||
// JobScheduler but the scheduler will not be able to cancel it.
|
||||
BackgroundDexOptService bdos = new BackgroundDexOptService();
|
||||
return bdos.idleOptimization(pm, pm.getOptimizablePackages(), context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onStartJob(JobParameters params) {
|
||||
if (DEBUG_DEXOPT) {
|
||||
|
||||
@@ -7559,6 +7559,14 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
mDexManager.reconcileSecondaryDexFiles(packageName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the background dexopt job immediately.
|
||||
*/
|
||||
@Override
|
||||
public boolean runBackgroundDexoptJob() {
|
||||
return BackgroundDexOptService.runIdleOptimizationsNow(this, mContext);
|
||||
}
|
||||
|
||||
Collection<PackageParser.Package> findSharedNonSystemLibraries(PackageParser.Package p) {
|
||||
if (p.usesLibraries != null || p.usesOptionalLibraries != null) {
|
||||
ArrayList<PackageParser.Package> retValue = new ArrayList<>();
|
||||
|
||||
@@ -112,6 +112,8 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
return runCompile();
|
||||
case "reconcile-secondary-dex-files":
|
||||
return runreconcileSecondaryDexFiles();
|
||||
case "bg-dexopt-job":
|
||||
return runDexoptJob();
|
||||
case "dump-profiles":
|
||||
return runDumpProfiles();
|
||||
case "list":
|
||||
@@ -431,6 +433,11 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int runDexoptJob() throws RemoteException {
|
||||
boolean result = mInterface.runBackgroundDexoptJob();
|
||||
return result ? 0 : -1;
|
||||
}
|
||||
|
||||
private int runDumpProfiles() throws RemoteException {
|
||||
String packageName = getNextArg();
|
||||
mInterface.dumpProfiles(packageName);
|
||||
@@ -1463,7 +1470,13 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
}
|
||||
pw.println(" --reset: restore package to its post-install state");
|
||||
pw.println(" --check-prof (true | false): look at profiles when doing dexopt?");
|
||||
pw.println(" --secondary-dex: copmile app secondary dex files");
|
||||
pw.println(" --secondary-dex: compile app secondary dex files");
|
||||
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");
|
||||
pw.println(" overlap with the actual job but the job scheduler will not be able to");
|
||||
pw.println(" cancel it. It will also run even if the device is not in the idle");
|
||||
pw.println(" maintenance mode.");
|
||||
pw.println(" list features");
|
||||
pw.println(" Prints all features of the system.");
|
||||
pw.println(" list instrumentation [-f] [TARGET-PACKAGE]");
|
||||
|
||||
Reference in New Issue
Block a user