From f8afcdc7b7b39ddc7161b1be01eebf763e68c793 Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Tue, 14 Feb 2017 17:53:13 -0800 Subject: [PATCH] Skip class path checking for secondary dex files Pass '&' marker to dex2oat classpath when compiling secondary dex files. This will skip class path checking when loading the oat files. Test: adb shell cmd package compile -m speed -f --secondary-dex com.google.android.gms oatdump --header-only --oat- file=/data/user/0/com.google.android.gms/app_chimera/m/00000006/oat/arm64/DynamiteModulesC_GmsCore_prodmnc_alldpi_release check that the class path contains the special '&' marker Bug: 32871170 (cherry picked from commit aae35767b6bca6f872c906a0fd38d7adb61217bd) Change-Id: I7f3c6743e749316ee02e8586a525ad28ae1ef765 Merged-In: If0628aeb4e3f5717604bfc4a87a4b1d438e5fa65 --- .../core/java/com/android/server/pm/PackageDexOptimizer.java | 5 ++++- .../java/com/android/server/pm/PackageManagerService.java | 5 +---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index db712aeba0cd3..b589057ada3e6 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -66,6 +66,9 @@ public class PackageDexOptimizer { public static final int DEX_OPT_PERFORMED = 1; public static final int DEX_OPT_FAILED = -1; + /** Special library name that skips shared libraries check during compilation. */ + public static final String SKIP_SHARED_LIBRARY_CHECK = "&"; + private final Installer mInstaller; private final Object mInstallLock; @@ -274,7 +277,7 @@ public class PackageDexOptimizer { // TODO(calin): maybe add a separate call. mInstaller.dexopt(path, info.uid, info.packageName, isa, /*dexoptNeeded*/ 0, /*oatDir*/ null, dexoptFlags, - compilerFilter, info.volumeUuid, /*sharedLibrariesPath*/ null); + compilerFilter, info.volumeUuid, SKIP_SHARED_LIBRARY_CHECK); } return DEX_OPT_PERFORMED; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 8ab76a78ed7d7..2b90a715574d3 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -524,9 +524,6 @@ public class PackageManagerService extends IPackageManager.Stub { public static final int REASON_LAST = REASON_CORE_APP; - /** Special library name that skips shared libraries check during compilation. */ - private static final String SKIP_SHARED_LIBRARY_CHECK = "&"; - final ServiceThread mHandlerThread; final PackageHandler mHandler; @@ -2260,7 +2257,7 @@ public class PackageManagerService extends IPackageManager.Stub { DEXOPT_PUBLIC, getCompilerFilterForReason(REASON_SHARED_APK), StorageManager.UUID_PRIVATE_INTERNAL, - SKIP_SHARED_LIBRARY_CHECK); + PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK); } } catch (FileNotFoundException e) { Slog.w(TAG, "Library not found: " + lib);