public byte[] build(ClassDef classDef) { log.debug("Building input class: {}", classDef); ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS); visitClass(classDef, classWriter); visitFields(classDef.getFields(), classWriter, classDef.getAccessFlags()); if ((classDef.getAccessFlags() & Opcodes.ACC_ENUM) != 0) { visitEnumMethods(classDef, classDef.getFields(), classWriter); } else { visitMethods(classDef, classDef.getMethods(), classWriter); } classWriter.visitEnd(); return classWriter.toByteArray(); }
for (Field field : classDef.getFields()) { final BuilderField builderField = dexBuilder.internField( field.getDefiningClass(),
public Field read(String className,String member) throws Exception { if (reader == null){ return null; } classDef = (ClassDef) reader.read(className,null); Iterable<? extends Field> fields = classDef.getFields(); for (Field field:fields){ if (field.getName().equals(member)){ return field; } } return null; }
private static ClassDef reDexClass(@Nonnull ClassDef classDef) { return new ImmutableClassDef(classDef.getType(), classDef.getAccessFlags(), classDef.getSuperclass(), classDef.getInterfaces(), classDef.getSourceFile(), classDef.getAnnotations(), classDef.getFields(), reDexMethods(classDef)); }
Iterable<? extends Method> methods = classDef.getMethods(); LinkedHashSet<Method> newMethods = new LinkedHashSet<Method>(); Iterable<? extends Field> fields = classDef.getFields(); LinkedHashSet<Field>newFields = new LinkedHashSet<Field>(); Set<? extends Annotation> annotations = classDef.getAnnotations();
for (Field field : classDef.getFields()) { final BuilderField builderField = dexBuilder.internField( field.getDefiningClass(),
for (Field field: classDef.getFields()) { fields.put(field.getName(), field);
for (Field field: classDef.getFields()) { fields.put(field.getName(), field);
classDef.getSourceFile(), classDef.getAnnotations(), classDef.getFields(), methods));