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 aae35767b6)

Change-Id: I7f3c6743e749316ee02e8586a525ad28ae1ef765

Merged-In: If0628aeb4e3f5717604bfc4a87a4b1d438e5fa65
This commit is contained in:
Calin Juravle
2017-02-14 17:53:13 -08:00
parent ad014af09a
commit f8afcdc7b7
2 changed files with 5 additions and 5 deletions

View File

@@ -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;

View File

@@ -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);