From c480bdafdb984f024bb13a8f0de9b6e1efd34bcd Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Thu, 9 Mar 2017 18:41:10 -0800 Subject: Compile secondary dex files according to REASON_BACKGROUND_DEXOPT Test: adb shell cmd package bg-dexopt-job works for sercondary dex files Bug: 32871170 Bug: 26719109 (cherry picked from commit a70b1b120365976f5eeb7cb3f577f5f6ff7ad18e) Merged-In: Iaee8071449c83e774b2fe331aaccfc5433856f4f Change-Id: I2334e4d73a5acdd1106e913c59ddf642782f1eee --- .../java/com/android/server/pm/BackgroundDexOptService.java | 4 ++-- .../java/com/android/server/pm/PackageManagerService.java | 5 +++++ services/core/java/com/android/server/pm/dex/DexManager.java | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java index d8900c0546fd..d364d17fa764 100644 --- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java +++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java @@ -290,8 +290,8 @@ public class BackgroundDexOptService extends JobService { PackageManagerService.REASON_BACKGROUND_DEXOPT, /* force */ false) : pm.performDexOptSecondary(pkg, - PackageManagerServiceCompilerMapping.getFullCompilerFilter(), - /* force */ true); + PackageManagerService.REASON_BACKGROUND_DEXOPT, + /* force */ false); if (success) { // Dexopt succeeded, remove package from the list of failing ones. synchronized (failedPackageNames) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5945ed04e321..2b7e9b9617b1 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7516,6 +7516,11 @@ public class PackageManagerService extends IPackageManager.Stub { return mDexManager.dexoptSecondaryDex(packageName, compilerFilter, force); } + public boolean performDexOptSecondary(String packageName, int compileReason, + boolean force) { + return mDexManager.dexoptSecondaryDex(packageName, compileReason, force); + } + /** * 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 diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java index 83dd392988bf..a904d178b03d 100644 --- a/services/core/java/com/android/server/pm/dex/DexManager.java +++ b/services/core/java/com/android/server/pm/dex/DexManager.java @@ -274,6 +274,17 @@ public class DexManager { return mPackageDexUsage.getPackageUseInfo(packageName); } + /** + * Perform dexopt on the package {@code packageName} secondary dex files. + * @return true if all secondary dex files were processed successfully (compiled or skipped + * because they don't need to be compiled).. + */ + public boolean dexoptSecondaryDex(String packageName, int compilerReason, boolean force) { + return dexoptSecondaryDex(packageName, + PackageManagerServiceCompilerMapping.getCompilerFilterForReason(compilerReason), + force); + } + /** * Perform dexopt on the package {@code packageName} secondary dex files. * @return true if all secondary dex files were processed successfully (compiled or skipped -- cgit v1.2.3-59-g8ed1b