Merge "Removing an extra installd call."
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user