Move DexParser to util package

This commit is contained in:
Nullptr 2023-01-05 20:16:36 +08:00 committed by LoveSy
parent fd82805c39
commit 702c10eff4
5 changed files with 200 additions and 189 deletions

View File

@ -66,6 +66,7 @@ import de.robv.android.xposed.XposedInit;
import io.github.libxposed.XposedContext;
import io.github.libxposed.XposedModule;
import io.github.libxposed.XposedModuleInterface;
import io.github.libxposed.util.DexParser;
public class LSPosedContext extends XposedContext {

View File

@ -5,4 +5,3 @@ import android.content.Context;
public abstract class XposedContext extends Context implements XposedInterface {
}

View File

@ -11,6 +11,8 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.nio.ByteBuffer;
import io.github.libxposed.util.DexParser;
public class XposedContextWrapper extends ContextWrapper implements XposedInterface {
XposedContextWrapper(XposedContext base) {

View File

@ -10,6 +10,8 @@ import java.lang.reflect.Method;
import java.nio.ByteBuffer;
import java.util.ConcurrentModificationException;
import io.github.libxposed.util.DexParser;
public interface XposedInterface {
int API = 100;
@ -148,192 +150,4 @@ public interface XposedInterface {
@Nullable
DexParser parseDex(ByteBuffer dexData) throws IOException;
interface DexParser extends AutoCloseable {
interface ClassDef {
@NonNull
TypeId getType();
int getAccessFlags();
@Nullable
TypeId getSuperClass();
@Nullable
TypeList getInterfaces();
@Nullable
StringId getSourceFile();
@NonNull
EncodedField[] getStaticFields();
@NonNull
EncodedField[] getInstanceFields();
@NonNull
EncodedMethod[] getDirectMethods();
@NonNull
EncodedMethod[] getVirtualMethods();
@Nullable
FieldAnnotation[] getFieldAnnotations();
@Nullable
MethodAnnotation[] getMethodAnnotations();
@Nullable
ParameterAnnotation[] getParameterAnnotations();
}
interface FieldAnnotation {
@NonNull
FieldId getField();
@NonNull
AnnotationItem[] getAnnotations();
}
interface MethodAnnotation {
@NonNull
MethodId getMethod();
@NonNull
AnnotationItem[] getAnnotations();
}
interface ParameterAnnotation {
@NonNull
MethodId getMethod();
@NonNull
AnnotationList getAnnotations();
}
interface AnnotationList {
@NonNull
AnnotationItem[] getAnnotations();
}
interface AnnotationItem {
int getVisibility();
@NonNull
Annotation getAnnotation();
}
interface Annotation {
@NonNull
TypeId getType();
@Nullable
AnnotationElement[] getElements();
}
interface AnnotationElement {
int getType();
ByteBuffer value();
}
interface TypeList {
@NonNull
TypeId[] getTypes();
}
interface TypeId {
@NonNull
StringId getDescriptor();
}
interface EncodedField {
@NonNull
FieldId getField();
int getAccessFlags();
}
interface EncodedMethod {
@NonNull
MethodId getMethod();
int getAccessFlags();
@NonNull
MethodId[] getInvokedMethods();
@NonNull
FieldId[] getAccessedFields();
@NonNull
FieldId[] getAssignedFields();
@NonNull
int[] getOpcodes();
@NonNull
StringId getReferencedString();
}
interface Id {
int getIndex();
}
interface StringId extends Id {
@NonNull
String getString();
}
interface FieldId extends Id {
@NonNull
TypeId getType();
@NonNull
TypeId getDeclaringClass();
@NonNull
StringId getName();
}
interface MethodId extends Id {
@NonNull
TypeId getDeclaringClass();
@NonNull
ProtoId getProtoType();
@NonNull
StringId getName();
}
interface ProtoId extends Id {
@NonNull
StringId getShorty();
@NonNull
TypeId getReturnType();
}
@NonNull
ClassDef[] getClassDef();
@NonNull
StringId[] getStringId();
@NonNull
TypeId[] getTypeId();
@NonNull
FieldId[] getFieldId();
@NonNull
MethodId[] getMethodId();
@NonNull
ProtoId[] getProtoId();
@NonNull
TypeList[] getTypeList();
}
}

View File

@ -0,0 +1,195 @@
package io.github.libxposed.util;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.nio.ByteBuffer;
public interface DexParser extends AutoCloseable {
interface ClassDef {
@NonNull
TypeId getType();
int getAccessFlags();
@Nullable
TypeId getSuperClass();
@Nullable
TypeList getInterfaces();
@Nullable
StringId getSourceFile();
@NonNull
EncodedField[] getStaticFields();
@NonNull
EncodedField[] getInstanceFields();
@NonNull
EncodedMethod[] getDirectMethods();
@NonNull
EncodedMethod[] getVirtualMethods();
@Nullable
FieldAnnotation[] getFieldAnnotations();
@Nullable
MethodAnnotation[] getMethodAnnotations();
@Nullable
ParameterAnnotation[] getParameterAnnotations();
}
interface FieldAnnotation {
@NonNull
FieldId getField();
@NonNull
AnnotationItem[] getAnnotations();
}
interface MethodAnnotation {
@NonNull
MethodId getMethod();
@NonNull
AnnotationItem[] getAnnotations();
}
interface ParameterAnnotation {
@NonNull
MethodId getMethod();
@NonNull
AnnotationList getAnnotations();
}
interface AnnotationList {
@NonNull
AnnotationItem[] getAnnotations();
}
interface AnnotationItem {
int getVisibility();
@NonNull
Annotation getAnnotation();
}
interface Annotation {
@NonNull
TypeId getType();
@Nullable
AnnotationElement[] getElements();
}
interface AnnotationElement {
int getType();
ByteBuffer value();
}
interface TypeList {
@NonNull
TypeId[] getTypes();
}
interface TypeId {
@NonNull
StringId getDescriptor();
}
interface EncodedField {
@NonNull
FieldId getField();
int getAccessFlags();
}
interface EncodedMethod {
@NonNull
MethodId getMethod();
int getAccessFlags();
@NonNull
MethodId[] getInvokedMethods();
@NonNull
FieldId[] getAccessedFields();
@NonNull
FieldId[] getAssignedFields();
@NonNull
int[] getOpcodes();
@NonNull
StringId getReferencedString();
}
interface Id {
int getIndex();
}
interface StringId extends Id {
@NonNull
String getString();
}
interface FieldId extends Id {
@NonNull
TypeId getType();
@NonNull
TypeId getDeclaringClass();
@NonNull
StringId getName();
}
interface MethodId extends Id {
@NonNull
TypeId getDeclaringClass();
@NonNull
ProtoId getProtoType();
@NonNull
StringId getName();
}
interface ProtoId extends Id {
@NonNull
StringId getShorty();
@NonNull
TypeId getReturnType();
}
@NonNull
ClassDef[] getClassDef();
@NonNull
StringId[] getStringId();
@NonNull
TypeId[] getTypeId();
@NonNull
FieldId[] getFieldId();
@NonNull
MethodId[] getMethodId();
@NonNull
ProtoId[] getProtoId();
@NonNull
TypeList[] getTypeList();
}