diff options
| author | 2019-06-20 16:30:20 -0700 | |
|---|---|---|
| committer | 2019-06-26 13:08:00 -0700 | |
| commit | 54bc47ad388f8dee8310e4e4a84cca115a8907cf (patch) | |
| tree | 44fa77ce290925eb5e30cbc3fc8e08eac200f9b3 | |
| parent | b6ae55b169c484576b11bf572108a8bb9a5c1564 (diff) | |
Removing an extra installd call.
There's no need to try to create the oat dir over and over again, especially since it involve an extra installd call. Creating it (if supported) on the fly during the dexopt call.
Change-Id: Id87165e5daaa4b0f1df8d6e985edb52fedc7db47
Test: refactoring CL. Existing unit tests still pass.
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageDexOptimizer.java | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index 6ae05ff50455..efd658a0e866 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -271,10 +271,7 @@ public class PackageDexOptimizer { return DEX_OPT_SKIPPED; } - // TODO(calin): there's no need to try to create the oat dir over and over again, - // especially since it involve an extra installd call. We should create - // if (if supported) on the fly during the dexopt call. - String oatDir = createOatDirIfSupported(pkg, isa); + String oatDir = getPackageOatDirIfSupported(pkg); Log.i(TAG, "Running dexopt (dexoptNeeded=" + dexoptNeeded + ") on: " + path + " pkg=" + pkg.applicationInfo.packageName + " isa=" + isa @@ -639,7 +636,7 @@ public class PackageDexOptimizer { } /** - * Creates oat dir for the specified package if needed and supported. + * Gets oat dir for the specified package if needed and supported. * In certain cases oat directory * <strong>cannot</strong> be created: * <ul> @@ -647,29 +644,19 @@ public class PackageDexOptimizer { * <li>Package location is not a directory, i.e. monolithic install.</li> * </ul> * - * @return Absolute path to the oat directory or null, if oat directory - * cannot be created. + * @return Absolute path to the oat directory or null, if oat directories + * not needed or unsupported for the package. */ @Nullable - private String createOatDirIfSupported(PackageParser.Package pkg, String dexInstructionSet) { + private String getPackageOatDirIfSupported(PackageParser.Package pkg) { if (!pkg.canHaveOatDir()) { return null; } File codePath = new File(pkg.codePath); - if (codePath.isDirectory()) { - // TODO(calin): why do we create this only if the codePath is a directory? (i.e for - // cluster packages). It seems that the logic for the folder creation is - // split between installd and here. - File oatDir = getOatDir(codePath); - try { - mInstaller.createOatDir(oatDir.getAbsolutePath(), dexInstructionSet); - } catch (InstallerException e) { - Slog.w(TAG, "Failed to create oat dir", e); - return null; - } - return oatDir.getAbsolutePath(); + if (!codePath.isDirectory()) { + return null; } - return null; + return getOatDir(codePath).getAbsolutePath(); } static File getOatDir(File codePath) { |