diff --git a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java index f363bc1b..82525bb9 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java @@ -41,6 +41,7 @@ import org.jf.dexlib2.Opcodes; import org.jf.dexlib2.dexbacked.DexBackedDexFile; import org.jf.dexlib2.dexbacked.DexBackedOdexFile; import org.jf.dexlib2.dexbacked.OatFile; +import org.jf.dexlib2.dexbacked.OatFile.OatDexFile; import org.jf.dexlib2.iface.DexFile; import org.jf.dexlib2.iface.MultiDexContainer; import org.jf.dexlib2.iface.MultiDexContainer.MultiDexFile; @@ -106,8 +107,7 @@ public class ClassPathResolver { } private ClassPathResolver(@Nonnull List bootClassPathDirs, @Nullable List bootClassPathEntries, - @Nonnull List extraClassPathEntries, - @Nonnull DexFile dexFile, int apiLevel) + @Nonnull List extraClassPathEntries, @Nonnull DexFile dexFile, int apiLevel) throws IOException { this.classPathDirs = bootClassPathDirs; opcodes = dexFile.getOpcodes(); @@ -116,7 +116,7 @@ public class ClassPathResolver { bootClassPathEntries = getDefaultBootClassPath(dexFile, apiLevel); } - for (String entry: bootClassPathEntries) { + for (String entry : bootClassPathEntries) { try { loadLocalOrDeviceBootClassPathEntry(entry); } catch (NoDexException ex) { @@ -311,6 +311,16 @@ public class ClassPathResolver { @Nonnull private static List getDefaultBootClassPath(@Nonnull DexFile dexFile, int apiLevel) { if (dexFile instanceof OatFile.OatDexFile) { + List bcp = ((OatDexFile)dexFile).getContainer().getBootClassPath(); + if (!bcp.isEmpty()) { + for (int i=0; i