Merge "Removing an extra installd call."

This commit is contained in:
Treehugger Robot
2019-06-27 19:23:01 +00:00
committed by Gerrit Code Review

View File

@@ -271,10 +271,7 @@ public class PackageDexOptimizer {
return DEX_OPT_SKIPPED; return DEX_OPT_SKIPPED;
} }
// TODO(calin): there's no need to try to create the oat dir over and over again, String oatDir = getPackageOatDirIfSupported(pkg);
// 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);
Log.i(TAG, "Running dexopt (dexoptNeeded=" + dexoptNeeded + ") on: " + path Log.i(TAG, "Running dexopt (dexoptNeeded=" + dexoptNeeded + ") on: " + path
+ " pkg=" + pkg.applicationInfo.packageName + " isa=" + isa + " 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 * In certain cases oat directory
* <strong>cannot</strong> be created: * <strong>cannot</strong> be created:
* <ul> * <ul>
@@ -647,29 +644,19 @@ public class PackageDexOptimizer {
* <li>Package location is not a directory, i.e. monolithic install.</li> * <li>Package location is not a directory, i.e. monolithic install.</li>
* </ul> * </ul>
* *
* @return Absolute path to the oat directory or null, if oat directory * @return Absolute path to the oat directory or null, if oat directories
* cannot be created. * not needed or unsupported for the package.
*/ */
@Nullable @Nullable
private String createOatDirIfSupported(PackageParser.Package pkg, String dexInstructionSet) { private String getPackageOatDirIfSupported(PackageParser.Package pkg) {
if (!pkg.canHaveOatDir()) { if (!pkg.canHaveOatDir()) {
return null; return null;
} }
File codePath = new File(pkg.codePath); File codePath = new File(pkg.codePath);
if (codePath.isDirectory()) { 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 null;
} }
return oatDir.getAbsolutePath(); return getOatDir(codePath).getAbsolutePath();
}
return null;
} }
static File getOatDir(File codePath) { static File getOatDir(File codePath) {