LoadedApk: Avoid unnecessary work when mIncludeCode == false.
We don't need to set up JIT profiles and register usage etc when the package context we're trying to construct doesn't request code. This will correct accounting for packages which are only used for resources. bug: 28519185 Change-Id: I849675efa76c8100ae937de478b52254babe384c
This commit is contained in:
@@ -450,9 +450,6 @@ public final class LoadedApk {
|
||||
}
|
||||
}
|
||||
|
||||
final List<String> zipPaths = new ArrayList<>();
|
||||
final List<String> libPaths = new ArrayList<>();
|
||||
|
||||
if (mRegisterPackage) {
|
||||
try {
|
||||
ActivityManagerNative.getDefault().addPackageDependency(mPackageName);
|
||||
@@ -461,8 +458,10 @@ public final class LoadedApk {
|
||||
}
|
||||
}
|
||||
|
||||
final List<String> zipPaths = new ArrayList<>();
|
||||
final List<String> libPaths = new ArrayList<>();
|
||||
makePaths(mActivityThread, mApplicationInfo, zipPaths, libPaths);
|
||||
final String zip = mIncludeCode ? TextUtils.join(File.pathSeparator, zipPaths) : "";
|
||||
|
||||
final boolean isBundledApp = mApplicationInfo.isSystemApp()
|
||||
&& !mApplicationInfo.isUpdatedSystemApp();
|
||||
|
||||
@@ -476,10 +475,28 @@ public final class LoadedApk {
|
||||
|
||||
final String librarySearchPath = TextUtils.join(File.pathSeparator, libPaths);
|
||||
|
||||
// If we're not asked to include code, we construct a classloader that has
|
||||
// no code path included. We still need to set up the library search paths
|
||||
// and permitted path because NativeActivity relies on it (it attempts to
|
||||
// call System.loadLibrary() on a classloader from a LoadedApk with
|
||||
// mIncludeCode == false).
|
||||
if (!mIncludeCode) {
|
||||
if (mClassLoader == null) {
|
||||
StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
|
||||
mClassLoader = ApplicationLoaders.getDefault().getClassLoader(
|
||||
"" /* codePath */, mApplicationInfo.targetSdkVersion, isBundledApp,
|
||||
librarySearchPath, libraryPermittedPath, mBaseClassLoader);
|
||||
StrictMode.setThreadPolicy(oldPolicy);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* With all the combination done (if necessary, actually
|
||||
* create the class loader.
|
||||
* With all the combination done (if necessary, actually create the java class
|
||||
* loader and set up JIT profiling support if necessary.
|
||||
*/
|
||||
final String zip = TextUtils.join(File.pathSeparator, zipPaths);
|
||||
|
||||
if (ActivityThread.localLOGV)
|
||||
Slog.v(ActivityThread.TAG, "Class path: " + zip +
|
||||
|
||||
Reference in New Issue
Block a user