From 132eeaedf7d0980397fbdac41e1a7aebff01adbf Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Tue, 5 Mar 2013 23:53:14 -0800 Subject: [PATCH] Add back various methods removed during the refactoring --- .../dexlib2/dexbacked/DexBackedDexFile.java | 2 ++ .../dexlib2/dexbacked/raw/ClassDefItem.java | 22 +++++++++++++++++++ .../jf/dexlib2/dexbacked/raw/FieldIdItem.java | 14 ++++++++++++ .../jf/dexlib2/dexbacked/raw/HeaderItem.java | 13 ++++++++--- .../dexlib2/dexbacked/raw/MethodIdItem.java | 14 ++++++++++++ .../jf/dexlib2/dexbacked/raw/ProtoIdItem.java | 14 ++++++++++++ .../jf/dexlib2/dexbacked/raw/RawDexFile.java | 5 +++++ .../dexlib2/dexbacked/raw/StringIdItem.java | 14 ++++++++++++ .../jf/dexlib2/dexbacked/raw/TypeIdItem.java | 14 ++++++++++++ 9 files changed, 109 insertions(+), 3 deletions(-) diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java index 5ebceef8..54b5be9a 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java @@ -54,6 +54,7 @@ public abstract class DexBackedDexFile extends BaseDexBuffer implements DexFile public abstract int getMethodIdItemOffset(int methodIndex); public abstract int getProtoIdItemOffset(int protoIndex); public abstract int getFieldIdItemOffset(int fieldIndex); + public abstract int getClassDefItemOffset(int classIndex); @Override @Nonnull public abstract DexReader readerAt(int offset); @@ -178,6 +179,7 @@ public abstract class DexBackedDexFile extends BaseDexBuffer implements DexFile return protoStartOffset + protoIndex*ProtoIdItem.ITEM_SIZE; } + @Override public int getClassDefItemOffset(int classIndex) { if (classIndex < 0 || classIndex >= classCount) { throw new ExceptionWithContext("Class index out of bounds: %d", classIndex); diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ClassDefItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ClassDefItem.java index 06fa2053..08981ff5 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ClassDefItem.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ClassDefItem.java @@ -33,6 +33,7 @@ package org.jf.dexlib2.dexbacked.raw; import com.google.common.base.Joiner; import org.jf.dexlib2.AccessFlags; +import org.jf.dexlib2.dexbacked.DexBackedDexFile; import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator; import org.jf.dexlib2.util.AnnotatedBytes; @@ -115,4 +116,25 @@ public class ClassDefItem { } }; } + + @Nonnull + public static String asString(@Nonnull DexBackedDexFile dexFile, int classIndex) { + int offset = dexFile.getClassDefItemOffset(classIndex); + int typeIndex = dexFile.readSmallUint(offset + CLASS_OFFSET); + return dexFile.getType(typeIndex); + } + + public static String[] getClasses(@Nonnull RawDexFile dexFile) { + MapItem mapItem = dexFile.getMapItemForSection(ItemType.CLASS_DEF_ITEM); + if (mapItem == null) { + return new String[0]; + } + + int classCount = mapItem.getItemCount(); + String[] ret = new String[classCount]; + for (int i=0; i