DexFile dexFile = new DexBackedDexFile(org.jf.dexlib2.Opcodes.forApi(20), dex.getBytes()); boolean isCurrentDexHasChangedClass = false; for (org.jf.dexlib2.iface.ClassDef classDef : dexFile.getClasses()) { if (descOfChangedClassesInCurrDex.contains(classDef.getType())) { isCurrentDexHasChangedClass = true; for (org.jf.dexlib2.iface.ClassDef classDef : dexFile.getClasses()) { if (!descOfChangedClassesInCurrDex.contains(classDef.getType())) { continue;
public static ImmutableDexFile of(DexFile dexFile) { if (dexFile instanceof ImmutableDexFile) { return (ImmutableDexFile)dexFile; } return new ImmutableDexFile(dexFile.getOpcodes(), dexFile.getClasses()); }
@Nonnull @Override public Opcodes getOpcodes() { return dexFile.getOpcodes(); } }
@Nonnull @Override public Opcodes getOpcodes() { return dexFile.getOpcodes(); } }
public void addFile(@Nonnull DexFile dexFile) { classes.addAll(dexFile.getClasses()); if (files == null) { files = new ArrayList<>(); } files.add(dexFile); }
public static ImmutableDexFile of(DexFile dexFile) { if (dexFile instanceof ImmutableDexFile) { return (ImmutableDexFile)dexFile; } return new ImmutableDexFile(dexFile.getOpcodes(), dexFile.getClasses()); }
Iterable<? extends org.jf.dexlib2.iface.instruction.Instruction> deodex() { try { DexFileModule m = myClass.getContainer(); ClassPathResolver path = new ClassPathResolver(Collections.singletonList(m.getFile().getParent() + '/'), Collections.<String>emptyList(), m.getDexFile()); ClassPath cp = new ClassPath(path.getResolvedClassProviders(), false, m.getDexFile().getOpcodes().artVersion); MethodAnalyzer analyzer = new MethodAnalyzer(cp, eMethod, null, false); return analyzer.getInstructions(); } catch (Exception e) { assert false : e; return eMethod.getImplementation().getInstructions(); } }
public void reset() { if (additionalDexFiles != null) { for (DexFile dexFile : additionalDexFiles) { for (ClassDef classDef : dexFile.getClasses()) { availableClasses.remove(classDef.getType()); } } additionalDexFiles.clear(); } loadedClasses = CacheBuilder.newBuilder().build(classLoader); }
public static void writeTo(@Nonnull DexDataStore dataStore, @Nonnull org.jf.dexlib2.iface.DexFile input) throws IOException { DexPool dexPool = new DexPool(input.getOpcodes()); for (ClassDef classDef: input.getClasses()) { dexPool.internClass(classDef); } dexPool.writeTo(dataStore); }
Iterable<? extends org.jf.dexlib2.iface.instruction.Instruction> deodex() { try { DexFileModule m = myClass.getContainer(); ClassPathResolver path = new ClassPathResolver(Collections.singletonList(m.getFile().getParent() + '/'), Collections.<String>emptyList(), m.getDexFile()); ClassPath cp = new ClassPath(path.getResolvedClassProviders(), false, m.getDexFile().getOpcodes().artVersion); MethodAnalyzer analyzer = new MethodAnalyzer(cp, eMethod, null, false); return analyzer.getInstructions(); } catch (Exception e) { assert false : e; return eMethod.getImplementation().getInstructions(); } }
public DexClassProvider(DexFile dexFile) { this.dexFile = dexFile; for (ClassDef classDef: dexFile.getClasses()) { classMap.put(classDef.getType(), classDef); } }
public static void writeTo(@Nonnull String path, @Nonnull org.jf.dexlib2.iface.DexFile input) throws IOException { DexPool dexPool = new DexPool(input.getOpcodes()); for (ClassDef classDef: input.getClasses()) { dexPool.internClass(classDef); } dexPool.writeTo(new FileDataStore(new File(path))); }
throws IOException { this.classPathDirs = bootClassPathDirs; this.pathEntryLoader = new PathEntryLoader(dexFile.getOpcodes()); bootClassPathEntries = getDefaultBootClassPath(dexFile, dexFile.getOpcodes().api);
private static void reDexFile(@Nonnull DexFile dexFile) { for (ClassDef classDef : dexFile.getClasses()) { classes.add(reDexClass(classDef)); } }
public static void writeTo(@Nonnull String path, @Nonnull org.jf.dexlib2.iface.DexFile input) throws IOException { DexPool dexPool = new DexPool(input.getOpcodes()); for (ClassDef classDef: input.getClasses()) { dexPool.internClass(classDef); } dexPool.writeTo(new FileDataStore(new File(path))); }
throws IOException { this.classPathDirs = bootClassPathDirs; this.pathEntryLoader = new PathEntryLoader(dexFile.getOpcodes()); bootClassPathEntries = getDefaultBootClassPath(dexFile, dexFile.getOpcodes().api);
public DexClassProvider(DexFile dexFile) { this.dexFile = dexFile; for (ClassDef classDef: dexFile.getClasses()) { classMap.put(classDef.getType(), classDef); } }
public static void writeTo(@Nonnull DexDataStore dataStore, @Nonnull org.jf.dexlib2.iface.DexFile input) throws IOException { DexPool dexPool = new DexPool(input.getOpcodes()); for (ClassDef classDef: input.getClasses()) { dexPool.internClass(classDef); } dexPool.writeTo(dataStore); }
public static ImmutableDexFile of(DexFile dexFile) { if (dexFile instanceof ImmutableDexFile) { return (ImmutableDexFile)dexFile; } return new ImmutableDexFile(dexFile.getClasses()); }
DexFile f = DexFileFactory.loadDexFile(url.getFile(), Opcodes.getDefault()); SyntheticAccessorResolver sar = new SyntheticAccessorResolver(f.getOpcodes(), f.getClasses()); for (ClassDef classDef: f.getClasses()) { String className = classDef.getType();