Skip to content

Commit

Permalink
fix: additionally show smali code of all inner classes (recursively) …
Browse files Browse the repository at this point in the history
…(PR #849, #848)
  • Loading branch information
jpstotz committed Feb 10, 2020
1 parent c24a3ed commit bd0d248
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -451,6 +452,18 @@ public List<ClassNode> getInnerClasses() {
return innerClasses;
}

/**
* Get all inner classes recursively
*
* @param innerClassesColl all identified inner classes are added to this collection
*/
public void getInnerClassesRecursive(Collection<ClassNode> innerClassesColl) {
for (ClassNode innerClass : innerClasses) {
innerClassesColl.add(innerClass);
innerClass.getInnerClassesRecursive(innerClassesColl);
}
}

public void addInnerClass(ClassNode cls) {
if (innerClasses.isEmpty()) {
innerClasses = new ArrayList<>(5);
Expand Down Expand Up @@ -537,7 +550,9 @@ public String getSmali() {
StringWriter stringWriter = new StringWriter(4096);
getSmali(this, stringWriter);
stringWriter.append(System.lineSeparator());
for (ClassNode innerClass : innerClasses) {
List<ClassNode> allInnerClasses = new ArrayList<>();
getInnerClassesRecursive(allInnerClasses);
for (ClassNode innerClass : allInnerClasses) {
getSmali(innerClass, stringWriter);
stringWriter.append(System.lineSeparator());
}
Expand Down

0 comments on commit bd0d248

Please sign in to comment.