aboutsummaryrefslogtreecommitdiff
path: root/dexlib2/src
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2015-09-05 16:10:26 -0700
committerBen Gruver <bgruv@google.com>2015-09-05 16:11:21 -0700
commit0c7e7b7ffcc11946a64b3c870c7d4b8c86bf06ca (patch)
treef3bd16036cbc2bcf61adbe359ebe0dbe85f302c0 /dexlib2/src
parent05221069a95beaa215465e5c65194082c4f13af9 (diff)
downloadsmali-0c7e7b7ffcc11946a64b3c870c7d4b8c86bf06ca.tar.gz
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
Diffstat (limited to 'dexlib2/src')
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java28
1 files changed, 28 insertions, 0 deletions
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<String> getMethodReferences() {
+ List<String> methodReferences = Lists.newArrayList();
+ for (Entry<? extends MethodRefKey, Integer> methodReference: methodSection.getItems()) {
+ methodReferences.add(ReferenceUtil.getMethodDescriptor(methodReference.getKey()));
+ }
+ return methodReferences;
+ }
+
+ @Nonnull
+ public List<String> getFieldReferences() {
+ List<String> fieldReferences = Lists.newArrayList();
+ for (Entry<? extends FieldRefKey, Integer> fieldReference: fieldSection.getItems()) {
+ fieldReferences.add(ReferenceUtil.getFieldDescriptor(fieldReference.getKey()));
+ }
+ return fieldReferences;
+ }
+
+ @Nonnull
+ public List<String> getTypeReferences() {
+ List<String> classReferences = Lists.newArrayList();
+ for (Entry<? extends TypeKey, Integer> typeReference: typeSection.getItems()) {
+ classReferences.add(typeReference.getKey().toString());
+ }
+ return classReferences;
+ }
+
public void writeTo(@Nonnull DexDataStore dest) throws IOException {
this.writeTo(dest, MemoryDeferredOutputStream.getFactory());
}