public void visitSource(String file) { if (visitor == null) { return; } visitor.visitSource(file); }
public void accept(DexClassVisitor dcv) { if (anns != null) { for (DexAnnotationNode ann : anns) { ann.accept(dcv); } } if (methods != null) { for (DexMethodNode m : methods) { m.accept(dcv); } } if (fields != null) { for (DexFieldNode f : fields) { f.accept(dcv); } } if (source != null) { dcv.visitSource(source); } }
public static void acceptFile(SmaliParser.SFileContext ctx, DexFileVisitor dexFileVisitor) { DexClassVisitor dexClassVisitor; String className = Utils.unEscapeId(ctx.className.getText()); int access = collectAccess(ctx.sAccList()); List<SmaliParser.SSuperContext> superContexts = ctx.sSuper(); String superClass = null; if (superContexts.size() > 0) { superClass = Utils.unEscapeId(superContexts.get(superContexts.size() - 1).name.getText()); } List<SmaliParser.SInterfaceContext> itfs = ctx.sInterface(); String[] interfaceNames = null; if (itfs.size() > 0) { interfaceNames = new String[itfs.size()]; for (int i = 0; i < itfs.size(); i++) { interfaceNames[i] = Utils.unEscapeId(itfs.get(i).name.getText()); } } dexClassVisitor = dexFileVisitor.visit(access, className, superClass, interfaceNames); List<SmaliParser.SSourceContext> sources = ctx.sSource(); if (sources.size() > 0) { dexClassVisitor.visitSource( Utils.unescapeStr(sources.get(sources.size() - 1).src.getText()) ); } acceptAnnotations(ctx.sAnnotation(), dexClassVisitor); acceptField(ctx.sField(), className, dexClassVisitor); acceptMethod(ctx.sMethod(), className, dexClassVisitor); dexClassVisitor.visitEnd(); }
dcv.visitSource(this.getString(source_file_idx));
@Test public void test3() { DexFileWriter w = new DexFileWriter(); DexClassVisitor cv = w.visit(0x1, "La/c;", null, new String[]{"Ljava/lang/Comparable;"}); cv.visitSource("c.java"); cv.visitAnnotation("LAnn;", Visibility.SYSTEM).visitEnd(); DexFieldVisitor fv = cv.visitField(ACC_PUBLIC | ACC_STATIC, new Field("La/c;", "a", "I"), 55); fv.visitAnnotation("LE;", Visibility.RUNTIME).visitEnd(); fv.visitEnd(); DexMethodVisitor mv = cv.visitMethod(ACC_STATIC, new Method("La/c;", "bb", new String[]{"I"}, "V")); mv.visitAnnotation("Laaa;", Visibility.RUNTIME).visitEnd(); DexAnnotationVisitor dav = mv.visitParameterAnnotation(0).visitAnnotation("Laaa;", Visibility.RUNTIME); dav.visit("abc", true); DexAnnotationVisitor dav2 = dav.visitArray("efg"); dav2.visit("", "123"); dav2.visit("", "456"); dav2.visitEnd(); dav.visitEnd(); DexCodeVisitor code = mv.visitCode(); code.visitRegister(2); code.visitStmt0R(Op.RETURN_VOID); code.visitEnd(); mv.visitEnd(); cv.visitEnd(); w.visitEnd(); w.toByteArray(); }
public void visitSource(String file) { if (visitor == null) { return; } visitor.visitSource(file); }
public void accept(DexClassVisitor dcv) { if (anns != null) { for (DexAnnotationNode ann : anns) { ann.accept(dcv); } } if (methods != null) { for (DexMethodNode m : methods) { m.accept(dcv); } } if (fields != null) { for (DexFieldNode f : fields) { f.accept(dcv); } } if (source != null) { dcv.visitSource(source); } }
dcv.visitSource(this.getString(source_file_idx));
cw.visitSource(classItem.sourceFile.stringData.string);