DexAccessFlags

Constants and helpers for raw DEX access_flags values.

Use these with the accessFlags result property or matcher condition for exact DEX semantics. The separate modifiers property and condition follow Android Java reflection, including hidden Java bits such as BRIDGE, VARARGS, and SYNTHETIC. Use java.lang.reflect.Modifier for reflection conditions.

CONSTRUCTOR and DECLARED_SYNCHRONIZED are DEX-only bits: inspect them through accessFlags. The helpers only test bits and never normalize them. In raw DEX, SYNCHRONIZED is only valid for native methods; reflection maps DECLARED_SYNCHRONIZED to SYNCHRONIZED instead.

Several bit positions depend on the target: SYNCHRONIZED and SUPER are both 0x20, VOLATILE and BRIDGE are both 0x40, and TRANSIENT and VARARGS are both 0x80. SUPER mirrors slicer's complete kAcc set but is not used by a DEX class_def_item. See DEX access_flags.

Java can access constants and helpers directly, for example:

DexAccessFlags.isConstructor(methodData.getAccessFlags())
DexAccessFlags.isBridge(methodData.getAccessFlags())

原始 DEX access_flags 常量及辅助方法。

精确 DEX 语义请使用结果属性或匹配条件 accessFlags;独立的 modifiers 属性和条件遵循 Android Java 反射语义,保留 BRIDGEVARARGSSYNTHETIC 等隐藏 Java 标志位。 反射条件使用 java.lang.reflect.Modifier

CONSTRUCTORDECLARED_SYNCHRONIZED 是 DEX 专有标志,应通过 accessFlags 读取。 本工具类只判断位值,不做归一化。原始 DEX 的 SYNCHRONIZED 仅适用于 native 方法; 反射语义则把 DECLARED_SYNCHRONIZED 转换为 SYNCHRONIZED

部分位值按目标类型复用:SYNCHRONIZEDSUPER 均为 0x20VOLATILEBRIDGE 均为 0x40TRANSIENTVARARGS 均为 0x80。请选择适用于类、字段或方法的常量。 SUPER 仅用于对齐 slicer 的完整 kAcc 集合,不用于 DEX class_def_item

Properties

Link copied to clipboard
const val ABSTRACT: Int = 1024

ACC_ABSTRACT: abstract class, method, or InnerClass.

Link copied to clipboard
const val ANNOTATION: Int = 8192

ACC_ANNOTATION: annotation class or InnerClass.

Link copied to clipboard
const val BRIDGE: Int = 64

ACC_BRIDGE: compiler-generated bridge method.

Link copied to clipboard
const val CONSTRUCTOR: Int = 65536

ACC_CONSTRUCTOR: DEX-only class or instance initializer method.

Link copied to clipboard
const val DECLARED_SYNCHRONIZED: Int = 131072

ACC_DECLARED_SYNCHRONIZED: DEX-only declared synchronized method.

Link copied to clipboard
const val ENUM: Int = 16384

ACC_ENUM: enum class, enum field, or InnerClass.

Link copied to clipboard
const val FINAL: Int = 16

ACC_FINAL: class, field, method, or InnerClass.

Link copied to clipboard
const val INTERFACE: Int = 512

ACC_INTERFACE: interface class or InnerClass.

Link copied to clipboard
const val NATIVE: Int = 256

ACC_NATIVE: native method.

Link copied to clipboard
const val PRIVATE: Int = 2

ACC_PRIVATE: field, method, or InnerClass.

Link copied to clipboard
const val PROTECTED: Int = 4

ACC_PROTECTED: field, method, or InnerClass.

Link copied to clipboard
const val PUBLIC: Int = 1

ACC_PUBLIC: class, field, method, or InnerClass.

Link copied to clipboard
const val STATIC: Int = 8

ACC_STATIC: field, method, or InnerClass.

Link copied to clipboard
const val STRICT: Int = 2048

ACC_STRICT: strict floating-point method.

Link copied to clipboard
const val SUPER: Int = 32

ACC_SUPER: class-file flag; not used by a DEX class_def_item.

Link copied to clipboard
const val SYNCHRONIZED: Int = 32

ACC_SYNCHRONIZED: synchronized native method.

Link copied to clipboard
const val SYNTHETIC: Int = 4096

ACC_SYNTHETIC: compiler-generated class, field, method, or InnerClass.

Link copied to clipboard
const val TRANSIENT: Int = 128

ACC_TRANSIENT: transient field.

Link copied to clipboard
const val VARARGS: Int = 128

ACC_VARARGS: variable-arity method.

Link copied to clipboard
const val VOLATILE: Int = 64

ACC_VOLATILE: volatile field.

Functions

Link copied to clipboard
fun isAbstract(accessFlags: Int): Boolean

Returns whether accessFlags contains ABSTRACT.

Link copied to clipboard
fun isAnnotation(accessFlags: Int): Boolean

Returns whether accessFlags contains ANNOTATION.

Link copied to clipboard
fun isBridge(accessFlags: Int): Boolean

Returns whether accessFlags contains BRIDGE.

Link copied to clipboard
fun isConstructor(accessFlags: Int): Boolean

Returns whether accessFlags contains CONSTRUCTOR.

Link copied to clipboard

Returns whether accessFlags contains DECLARED_SYNCHRONIZED.

Link copied to clipboard
fun isEnum(accessFlags: Int): Boolean

Returns whether accessFlags contains ENUM.

Link copied to clipboard
fun isFinal(accessFlags: Int): Boolean

Returns whether accessFlags contains FINAL.

Link copied to clipboard
fun isInterface(accessFlags: Int): Boolean

Returns whether accessFlags contains INTERFACE.

Link copied to clipboard
fun isNative(accessFlags: Int): Boolean

Returns whether accessFlags contains NATIVE.

Link copied to clipboard
fun isPrivate(accessFlags: Int): Boolean

Returns whether accessFlags contains PRIVATE.

Link copied to clipboard
fun isProtected(accessFlags: Int): Boolean

Returns whether accessFlags contains PROTECTED.

Link copied to clipboard
fun isPublic(accessFlags: Int): Boolean

Returns whether accessFlags contains PUBLIC.

Link copied to clipboard
fun isStatic(accessFlags: Int): Boolean

Returns whether accessFlags contains STATIC.

Link copied to clipboard
fun isStrict(accessFlags: Int): Boolean

Returns whether accessFlags contains STRICT.

Link copied to clipboard
fun isSuper(accessFlags: Int): Boolean

Returns whether accessFlags contains SUPER.

Link copied to clipboard
fun isSynchronized(accessFlags: Int): Boolean

Returns whether accessFlags contains SYNCHRONIZED.

Link copied to clipboard
fun isSynthetic(accessFlags: Int): Boolean

Returns whether accessFlags contains SYNTHETIC.

Link copied to clipboard
fun isTransient(accessFlags: Int): Boolean

Returns whether accessFlags contains TRANSIENT.

Link copied to clipboard
fun isVarArgs(accessFlags: Int): Boolean

Returns whether accessFlags contains VARARGS.

Link copied to clipboard
fun isVolatile(accessFlags: Int): Boolean

Returns whether accessFlags contains VOLATILE.

Link copied to clipboard
fun toClassString(accessFlags: Int): String

Returns a context-aware string for class access flags.

Link copied to clipboard
fun toFieldString(accessFlags: Int): String

Returns a context-aware string for field access flags.

Link copied to clipboard
fun toMethodString(accessFlags: Int): String

Returns a context-aware string for method access flags.