From 0c7e7b7ffcc11946a64b3c870c7d4b8c86bf06ca Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Sat, 5 Sep 2015 16:10:26 -0700 Subject: Add ability to list methods/fields/types when assembling with smali This can be useful in analyzing why you are going over the 64k method/field/type limit --- .../main/java/org/jf/dexlib2/writer/DexWriter.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'dexlib2') diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java index 0650ab3c..916147ec 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java @@ -58,6 +58,7 @@ import org.jf.dexlib2.iface.reference.StringReference; import org.jf.dexlib2.iface.reference.TypeReference; import org.jf.dexlib2.util.InstructionUtil; import org.jf.dexlib2.util.MethodUtil; +import org.jf.dexlib2.util.ReferenceUtil; import org.jf.dexlib2.writer.io.DeferredOutputStream; import org.jf.dexlib2.writer.io.DeferredOutputStreamFactory; import org.jf.dexlib2.writer.io.DexDataStore; @@ -196,6 +197,33 @@ public abstract class DexWriter< classSection.getItems().size() * ClassDefItem.ITEM_SIZE; } + @Nonnull + public List getMethodReferences() { + List methodReferences = Lists.newArrayList(); + for (Entry methodReference: methodSection.getItems()) { + methodReferences.add(ReferenceUtil.getMethodDescriptor(methodReference.getKey())); + } + return methodReferences; + } + + @Nonnull + public List getFieldReferences() { + List fieldReferences = Lists.newArrayList(); + for (Entry fieldReference: fieldSection.getItems()) { + fieldReferences.add(ReferenceUtil.getFieldDescriptor(fieldReference.getKey())); + } + return fieldReferences; + } + + @Nonnull + public List getTypeReferences() { + List classReferences = Lists.newArrayList(); + for (Entry typeReference: typeSection.getItems()) { + classReferences.add(typeReference.getKey().toString()); + } + return classReferences; + } + public void writeTo(@Nonnull DexDataStore dest) throws IOException { this.writeTo(dest, MemoryDeferredOutputStream.getFactory()); } -- cgit v1.2.3