@Override public int getFieldAccessFlags(@Nonnull Field field) { return field.getAccessFlags(); }
.filter(f -> (f.getAccessFlags() & Opcodes.ACC_ENUM) != 0).map(Field::getName) .collect(Collectors.toList()); fieldNames.add("$shadow_instance"); int fieldFlags = field.getAccessFlags(); if ((fieldFlags & Opcodes.ACC_SYNTHETIC) != 0 && (fieldFlags & Opcodes.ACC_PRIVATE) != 0 && (fieldFlags & Opcodes.ACC_STATIC) != 0 && (fieldFlags & Opcodes.ACC_FINAL) != 0 && field.getType().charAt(0) == '[') { valuesFieldName = field.getName();
private void visitFields(Iterable<? extends Field> fields, ClassWriter classWriter, int classAccessFlags) { for (Field field : fields) { /* * It's possible to declare a Smali interface with private fields. Android doesn't seem to mind, but * the Java class loader will complain. To get around this, just set them public, which is what they * should be anyway. */ int fieldAccessFlags = field.getAccessFlags(); if ((classAccessFlags & Opcodes.ACC_INTERFACE) != 0) { if ((fieldAccessFlags & Opcodes.ACC_PRIVATE) != 0) { fieldAccessFlags &= ~Opcodes.ACC_PRIVATE; fieldAccessFlags |= Opcodes.ACC_PUBLIC; } } String name = field.getName(); String desc = field.getType(); String signature = null; Object value = null; classWriter.visitField(fieldAccessFlags, name, desc, signature, value); } }
/** * * @return the Soot equivalent of a field */ public static SootField makeSootField(Field f) { String name = f.getName(); Type type = DexType.toSoot(f.getType()); int flags = f.getAccessFlags(); SootField sf = Scene.v().makeSootField(name, type, flags); DexField.addConstantTag(sf, f); return sf; } }
field.getName(), field.getType(), field.getAccessFlags(), field.getInitialValue(), field.getAnnotations()
public int getAccessFlags() { return field.getAccessFlags(); }
@Override public boolean isPublic() { return (eField.getAccessFlags() & PUBLIC.getValue()) != 0; }
@Override public boolean isFinal() { return (eField.getAccessFlags() & FINAL.getValue()) != 0; }
@Override public boolean isStatic() { return (eField.getAccessFlags() & STATIC.getValue()) != 0; }
@Override public boolean isFinal() { return (eField.getAccessFlags() & FINAL.getValue()) != 0; }
@Override public boolean isVolatile() { return (eField.getAccessFlags() & VOLATILE.getValue()) != 0; }
@Override public boolean isPrivate() { return (eField.getAccessFlags() & PRIVATE.getValue()) != 0; }
@Override public boolean isPrivate() { return (eField.getAccessFlags() & PRIVATE.getValue()) != 0; }
@Override public boolean isProtected() { return (eField.getAccessFlags() & PROTECTED.getValue()) != 0; }
@Override public boolean isPublic() { return (eField.getAccessFlags() & PUBLIC.getValue()) != 0; }
@Override public boolean isVolatile() { return (eField.getAccessFlags() & VOLATILE.getValue()) != 0; }
@Override public boolean isProtected() { return (eField.getAccessFlags() & PROTECTED.getValue()) != 0; }
public static ImmutableField of(Field field) { if (field instanceof ImmutableField) { return (ImmutableField)field; } return new ImmutableField( field.getDefiningClass(), field.getName(), field.getType(), field.getAccessFlags(), field.getInitialValue(), field.getAnnotations()); }
public static ImmutableField of(Field field) { if (field instanceof ImmutableField) { return (ImmutableField)field; } return new ImmutableField( field.getDefiningClass(), field.getName(), field.getType(), field.getAccessFlags(), field.getInitialValue(), field.getAnnotations()); }
public static ImmutableField of(Field field) { if (field instanceof ImmutableField) { return (ImmutableField)field; } return new ImmutableField( field.getDefiningClass(), field.getName(), field.getType(), field.getAccessFlags(), field.getInitialValue(), field.getAnnotations()); }