[Soot-list] Generating Android APK CallFlowGraph
Monika Mashalkar
monikamashalkar at gmail.com
Wed Feb 25 07:51:01 EST 2015
Hi Steven,
Thanks for your quick reply. I am able to run the code now. But I am
getting the warnings as follow :
Warning: java.lang.ref.Finalizer is a phantom class!
Warning: android.graphics.pdf.PdfDocument$Page is a phantom class!
Warning: android.graphics.pdf.PdfDocument$PageInfo is a phantom class!
Warning: android.graphics.pdf.PdfDocument is a phantom class!
Warning: android.media.RemoteControlClient$OnGetPlaybackPositionListener is
a phantom class!
Warning: android.media.RemoteControlClient$OnPlaybackPositionUpdateListener
is a phantom class!
Warning: android.print.PageRange is a phantom class!
Warning: android.print.PrintAttributes$Builder is a phantom class!
Warning: android.print.PrintAttributes$MediaSize is a phantom class!
Warning: android.print.PrintAttributes is a phantom class!
Warning: android.print.PrintDocumentAdapter$LayoutResultCallback is a
phantom class!
Warning: android.print.PrintDocumentAdapter$WriteResultCallback is a
phantom class!
Warning: android.print.PrintDocumentAdapter is a phantom class!
Warning: android.print.PrintDocumentInfo$Builder is a phantom class!
Warning: android.print.PrintDocumentInfo is a phantom class!
Warning: android.print.PrintJob is a phantom class!
Warning: android.print.PrintManager is a phantom class!
Warning: android.print.pdf.PrintedPdfDocument is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowAttachListener is a phantom
class!
Warning: android.view.ViewTreeObserver$OnWindowFocusChangeListener is a
phantom class!
May I know the reason, why I am getting these warnings ?
The command that I am using to run the program is :
monika at monika-OptiPlex-990:~$ java -cp
.:soot-trunk.jar:soot-infoflow.jar:soot-infoflow-android.jar:slf4j-api-1.7.5.jar:slf4j-simple-1.7.5.jar:axml-2.0.jar:/usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar
CFG
I am attaching the output file with this mail. Please, tell me I am getting
it correct or not.
Thanks and regards,
Monika
On Wed, Feb 25, 2015 at 3:51 PM, Steven Arzt <Steven.Arzt at cased.de> wrote:
> Hi Monika,
>
>
>
> The CFG class is not part of Soot. It was just written as an example. You
> need to compile it on your own.
>
>
>
> Best regards,
>
> Steven
>
>
>
>
>
> M.Sc. M.Sc. Steven Arzt
>
> Secure Software Engineering Group (SSE)
>
> European Center for Security and Privacy by Design (EC SPRIDE)
>
> Rheinstraße 75
>
> D-64293 Darmstadt
>
> Phone: +49 61 51 869-336
>
> Fax: +49 61 51 16-72118
>
> eMail: steven.arzt at ec-spride.de
>
> Web: http://sse.ec-spride.de
>
>
>
>
>
>
>
> *Von:* Monika Mashalkar [mailto:monikamashalkar at gmail.com]
> *Gesendet:* Mittwoch, 25. Februar 2015 05:30
> *An:* soot-list at googlegroups.com
> *Cc:* soot-list at sable.mcgill.ca; soot-list at cs.mcgill.ca;
> Steven.Arzt at cased.de
> *Betreff:* Re: [Soot-list] Generating Android APK CallFlowGraph
>
>
>
> Hi Lokesh,
>
>
>
> I am very new to the SOOT Framework and Flow-droid. I want to find the
> flow graph from android apk in my project and I am trying to run the code
> posted in this thread to do the same. I am trying to run the following
> command on Ubuntu
>
> Command : java -cp
> soot-trunk.jar:soot-infoflow.jar:soot-infoflow-android.jar:slf4j-api-1.7.5.jar:slf4j-simple-1.7.5.jar:axml-2.0.jar
> -cp .:/usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar CFG
>
>
>
> but I am getting Error as : Error: Could not find or load main class CFG
>
>
>
> Could you please tell me the command to execute the CFG program.
>
>
>
> Thank you,
>
> Monika
>
>
> On Monday, 21 July 2014 13:46:37 UTC+5:30, LOKESH JAIN wrote:
>
> Hi all,
>
>
>
> I resolved the issue and finally i am getting the call graph. Thank you
> all of you for your time and help. :)
>
>
>
> 1. But Stevan I am still curious to know how to work with QueueReader
> Object for generating dot format.
>
> 2. And why the size of call graph for RV2013.apk is 54. And is there any
> way to remove unnecessary size.
>
>
>
> Thanks&Regards
>
> Lokesh
>
>
>
> On Mon, Jul 21, 2014 at 11:38 AM, LOKESH JAIN <lokesh... at gmail.com> wrote:
>
> Hi all,
>
> Steven I still couldn't figure it out how to work with queuereader object
> for generating dot format.
>
>
>
> I have used dot graph class manually as suggested to me by Stefan but,
>
> I am getting NullPointerException. I don't know why. I have pasted the
> complete code.
>
> Please help me out.
>
>
>
> Exception in thread "main" java.lang.NullPointerException
>
> at DotGraph.getNode(DotGraph.java:53)
>
> at DotGraph.drawNode(DotGraph.java:61)
>
> at CFG.visit(CFG.java:114)
>
> at CFG.main(CFG.java:94)
>
>
>
>
>
> CFG.java
>
>
>
> import java.io.BufferedOutputStream;
>
> import java.io.FileOutputStream;
>
> import java.io.IOException;
>
> import java.io.OutputStream;
>
> import java.util.Collections;
>
> import java.util.HashMap;
>
> import java.util.HashSet;
>
> import java.util.Iterator;
>
> import java.util.LinkedList;
>
> import java.util.List;
>
>
>
> import org.xmlpull.v1.XmlPullParserException;
>
>
>
> import soot.MethodOrMethodContext;
>
> import soot.PackManager;
>
> import soot.Scene;
>
> import soot.SootMethod;
>
> import soot.jimple.infoflow.android.SetupApplication;
>
> import soot.jimple.toolkits.callgraph.CallGraph;
>
> import soot.jimple.toolkits.callgraph.Targets;
>
> import soot.options.Options;
>
> import soot.util.dot.DotGraphUtility;
>
> import soot.util.dot.Renderable;
>
> public class CFG {
>
> private static DotGraph dot = new DotGraph("callgraph");
>
> private static HashMap <String,Boolean> visited = new
> HashMap<String,Boolean>();
>
> public CFG() {
>
>
>
>
>
> }
>
>
>
> public static void main(String[] args) {
>
>
>
> // TODO Auto-generated method stub
>
>
>
> SetupApplication app = new
> SetupApplication("/home/lokesh/Desktop/android-sdk-linux/platforms/android-19/android.jar","/home/lokesh/Desktop/android-instrumentation-tutorial-master/app-example/RV2013/bin/RV2013.apk");
>
> try {
>
>
>
>
> app.calculateSourcesSinksEntrypoints("/home/lokesh/Downloads/soot-infoflow-android-develop/SourcesAndSinks.txt");
>
>
>
>
>
> } catch (IOException e) {
>
>
>
> // TODO Auto-generated catch block
>
>
>
> e.printStackTrace();
>
>
>
> } catch (XmlPullParserException e) {
>
>
>
> // TODO Auto-generated catch block
>
>
>
> e.printStackTrace();
>
>
>
> }
>
>
>
> soot.G.reset();
>
>
>
> Options.v().set_src_prec(Options.src_prec_apk);
>
>
>
>
> Options.v().set_process_dir(Collections.singletonList("/home/lokesh/Desktop/android-instrumentation-tutorial-master/app-example/RV2013/bin/RV2013.apk"));
>
>
>
>
> Options.v().set_force_android_jar("/home/lokesh/Desktop/android-sdk-linux/platforms/android-19/android.jar");
>
>
>
> Options.v().set_whole_program(true);
>
>
>
> Options.v().set_allow_phantom_refs(true);
>
>
>
> Options.v().set_output_format(Options.output_format_none);
>
>
>
> Options.v().setPhaseOption("cg.spark verbose:true", "on");
>
>
>
> Scene.v().loadNecessaryClasses();
>
>
>
> SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();
>
>
>
> Options.v().set_main_class(entryPoint.getSignature());
>
>
>
> Scene.v().setEntryPoints(Collections.singletonList(entryPoint));
>
>
>
> System.out.println("............"+entryPoint.getActiveBody());
>
>
>
> PackManager.v().runPacks();
>
>
>
> System.out.println(Scene.v().getCallGraph().size());
>
> CallGraph cg = Scene.v().getCallGraph();
>
>
>
> visit(cg, entryPoint);
>
> dot.plot("/home/lokesh/Desktop/soot1"+ dot.DOT_EXTENSION);
>
>
>
> }
>
> private static void visit(CallGraph cg, SootMethod k)
>
> {
>
> String identifier = k.getName();
>
>
>
> visited.put(k.getSignature(),true);
>
>
>
>
>
> dot.drawNode(identifier);
>
>
>
>
>
> //iterate over unvisited parents
>
> Iterator<MethodOrMethodContext> ptargets = new Targets(cg.edgesInto(k));
>
>
>
>
>
> if(ptargets != null){
>
> while(ptargets.hasNext())
>
> {
>
> SootMethod p = (SootMethod) ptargets.next();
>
>
>
>
>
> if(p == null) System.out.println("p is null");
>
>
>
>
>
> if(!visited.containsKey(p.getSignature()))
>
> visit(cg,p);
>
> }
>
> }
>
>
>
>
>
> //iterate over unvisited children
>
> Iterator<MethodOrMethodContext> ctargets = new Targets(cg.edgesOutOf(k));
>
>
>
>
>
> if(ctargets != null){
>
> while(ctargets.hasNext())
>
> {
>
> SootMethod c = (SootMethod) ctargets.next();
>
> if(c == null) System.out.println("c is null");
>
> dot.drawEdge(identifier, c.getName());
>
>
>
>
>
> if(!visited.containsKey(c.getSignature()))
>
> visit(cg,c);
>
> }
>
> }
>
> }
>
> }
>
>
>
>
>
>
>
>
>
> DotGraph.java
>
>
>
> import java.io.BufferedOutputStream;
>
> import java.io.FileOutputStream;
>
> import java.io.IOException;
>
> import java.io.OutputStream;
>
> import java.util.HashMap;
>
> import java.util.LinkedList;
>
> import java.util.List;
>
>
>
> import soot.util.dot.DotGraphEdge;
>
> import soot.util.dot.DotGraphNode;
>
> import soot.util.dot.DotGraphUtility;
>
> import soot.util.dot.Renderable;
>
>
>
> public class DotGraph implements Renderable
>
> {
>
> public final static String DOT_EXTENSION = ".dot";
>
> private HashMap<String, DotGraphNode> nodes;
>
> private boolean isSubGraph;
>
> private List<Renderable> drawElements;
>
> private String graphname;
>
> public DotGraph(String graphname)
>
> {
>
> this.drawElements = new LinkedList<Renderable>();
>
> }
>
> public DotGraph createSubGraph(String label)
>
> {
>
> DotGraph subgraph = new DotGraph(label);
>
> subgraph.isSubGraph = true;
>
> this.drawElements.add(subgraph);
>
> System.out.println(subgraph);
>
> return subgraph;
>
> }
>
> @Override
>
> public void render(OutputStream out, int indent) throws IOException {
>
> String graphname = this.graphname;
>
> if (!isSubGraph) {
>
> DotGraphUtility.renderLine(out, "digraph \""+graphname+"\" {",
> indent);
>
> } else {
>
> DotGraphUtility.renderLine(out, "subgraph \""+graphname+"\" {", indent);
>
>
>
> }
>
> }
>
> public void plot(String filename) {
>
> try {
>
> BufferedOutputStream out =new BufferedOutputStream(new
> FileOutputStream(filename));
>
> render(out, 0);
>
> out.close();
>
> } catch (IOException ioe) {
>
> }
>
> }
>
> public DotGraphNode getNode(String name){
>
> DotGraphNode node = nodes.get(name);
>
> if (node == null) {
>
> node = new DotGraphNode(name);
>
> nodes.put(name, node);
>
> }
>
> return node;
>
> }
>
> public DotGraphNode drawNode(String name){
>
> DotGraphNode node = getNode(name);
>
> if(node == null)
>
> throw new RuntimeException("Assertion failed.");
>
> if(!this.drawElements.contains(node))
>
> this.drawElements.add(node);
>
> return node;
>
> }
>
>
>
> public DotGraphEdge drawEdge(String from, String to) {
>
> DotGraphNode src = drawNode(from);
>
> DotGraphNode dst = drawNode(to);
>
> DotGraphEdge edge = new DotGraphEdge(src, dst);
>
> this.drawElements.add(edge);
>
> return edge;
>
>
>
> }
>
> }
>
>
>
> Thanks & Regards
>
> Lokesh
>
>
>
>
>
> On Sun, Jul 20, 2014 at 5:10 PM, Stefan Gommer <
> gom... at informatik.uni-bremen.de> wrote:
>
> Hi Lokesh,
>
>
>
> sorry I misspelled it. Originally it is of type Hash*Map*<String,Boolean>.
>
>
>
> You can also use HashSet<String>. In this case you have to use
> visited.add(k.getSignature());
>
>
>
> Regards,
>
> Stefan
>
>
>
> Am 20.07.2014 um 13:35 schrieb LOKESH JAIN <lokesh... at gmail.com>:
>
>
>
> Hi Stefan,
>
> HashSet<String,Boolean> type is giving error whereas HashSet<String> is
> correct form. But
>
>
>
> then
>
> visited.put(k.getSignature(),true) is giving error.
>
> How do i resolve this?
>
>
>
> Thanks & Regards
>
> Lokesh
>
>
>
> On Sun, Jul 20, 2014 at 4:52 PM, LOKESH JAIN <lokesh... at gmail.com> wrote:
>
> Hi Stefan,
>
> HashSet<String,Boolean> type is giving error whereas HashSet<String> is
> correct form. But
>
>
>
> then
>
> visited.put(k.getSignature(),true) is giving error.
>
>
>
> Thanks & Regards
>
> Lokesh
>
>
>
> On Sun, Jul 20, 2014 at 4:16 PM, Stefan Gommer <
> gom... at informatik.uni-bremen.de> wrote:
>
> Hi Lokesh,
>
>
>
> visited is of type HashSet<String,Boolean> but can also be any kind of
> List like HashSet<String>
>
>
>
> Regards
>
> Stefan
>
>
>
> Am 20.07.2014 um 12:44 schrieb LOKESH JAIN <lokesh... at gmail.com>:
>
>
>
> Hey Stefan!
>
> What is the type of "visited" ?
>
> Thanks & Regards
>
> Lokesh
>
>
>
> On Sun, Jul 20, 2014 at 2:57 PM, Stefan Gommer <
> gom... at informatik.uni-bremen.de> wrote:
>
> Hi Lokesh,
>
>
>
> I did it like this (I skipped the standard soot settings:
>
>
>
> private static DotGraph dot = new DotGraph("CallGraph“);
>
> ...
>
> SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();
>
> …
>
> PackManager.v().runPacks();
>
> CallGraph cg = Scene.v().getCallGraph();
>
> visit(cg, entryPoint);
>
> …
>
> dot.plot("/Users/neji/Desktop/graph"+ dot.*DOT_EXTENSION*);
>
> …
>
>
>
>
>
> private static void visit(CallGraph cg, SootMethod k)
>
> {
>
> String identifier = k.getName();
>
>
>
> visited.put(k.getSignature(), true);
>
>
>
> dot.drawNode(identifier);
>
>
>
> //iterate over unvisited parents
>
> Iterator<MethodOrMethodContext> ptargets = new Targets(cg.edgesInto(k));
>
>
>
> if(ptargets != null){
>
> while(ptargets.hasNext())
>
> {
>
> SootMethod p = (SootMethod) ptargets.next();
>
>
>
> if(p == null) System.out.println("p is null");
>
>
>
> if(!visited.containsKey(p.getSignature()))
>
> visit(cg,p);
>
> }
>
> }
>
>
>
> //iterate over unvisited children
>
> Iterator<MethodOrMethodContext> ctargets = new Targets(cg.edgesOutOf(k));
>
>
>
> if(ctargets != null){
>
> while(ctargets.hasNext())
>
> {
>
> SootMethod c = (SootMethod) ctargets.next();
>
> if(c == null) System.out.println("c is null");
>
> dot.drawEdge(identifier, c.getName());
>
>
>
> if(!visited.containsKey(c.getSignature()))
>
> visit(cg,c);
>
> }
>
> }
>
> }
>
>
>
>
>
> Am 20.07.2014 um 09:44 schrieb LOKESH JAIN <lokesh... at gmail.com>:
>
>
>
> I have tried DotGraph class from the soot.util.dot package but it's giving
> me null pointer exception. Following is the tried code.
>
> I have converted QueueReader object into string as DotGraph takes only
> string argument. It's getting complicated. Please suggest some simple
> solution.
>
>
> import java.io.IOException;
> import java.io.OutputStream;
> import java.util.Collections;
> import java.util.LinkedList;
> import java.util.List;
>
> import org.xmlpull.v1.XmlPullParserException;
>
> import soot.PackManager;
> import soot.Scene;
> import soot.SootMethod;
> import soot.jimple.infoflow.android.SetupApplication;
> import soot.options.Options;
> import soot.util.dot.DotGraphUtility;
> import soot.util.dot.Renderable;
> public class CFG {
> //private static Map options;
> static DotGraph dg;
> public CFG() {
> //this.options=options;
> // TODO Auto-generated constructor stub
>
> }
> /*public DotGraph createSubGraph(String label)
> {
>
> DotGraph createSubGraph =
> DotGraph.createSubGraph(Scene.v().getCallGraph().listener().toString());
> }*/
> public static void main(String[] args) {
>
> // TODO Auto-generated method stub
>
> SetupApplication app = new
> SetupApplication("/home/lokesh/Desktop/android-sdk-linux/platforms/android-19/android.jar","/home/lokesh/Desktop/android-instrumentation-tutorial-master/app-example/RV2013/bin/RV2013.apk");
>
> try {
>
>
> app.calculateSourcesSinksEntrypoints("/home/lokesh/Downloads/soot-infoflow-android-develop/SourcesAndSinks.txt");
>
>
> } catch (IOException e) {
>
> // TODO Auto-generated catch block
>
> e.printStackTrace();
>
> } catch (XmlPullParserException e) {
>
> // TODO Auto-generated catch block
>
> e.printStackTrace();
>
> }
>
> soot.G.reset();
>
> Options.v().set_src_prec(Options.src_prec_apk);
>
>
> Options.v().set_process_dir(Collections.singletonList("/home/lokesh/Desktop/android-instrumentation-tutorial-master/app-example/RV2013/bin/RV2013.apk"));
>
> Options.v().set_force_android_jar("/home/lokesh/Desktop/android-sdk-linux/platforms/android-19/android.jar");
>
> Options.v().set_whole_program(true);
>
> Options.v().set_allow_phantom_refs(true);
>
> Options.v().set_output_format(Options.output_format_none);
>
> Options.v().setPhaseOption("cg.spark verbose:true", "on");
>
> Scene.v().loadNecessaryClasses();
>
> SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();
>
> Options.v().set_main_class(entryPoint.getSignature());
>
> Scene.v().setEntryPoints(Collections.singletonList(entryPoint));
>
> System.out.println("............"+entryPoint.getActiveBody());
>
> PackManager.v().runPacks();
>
> System.out.println(Scene.v().getCallGraph().size());
> String label = Scene.v().getCallGraph().listener().toString();
> dg.createSubGraph(label);
> }
> }
>
> import java.io.IOException;
> import java.io.OutputStream;
> import java.util.LinkedList;
> import java.util.List;
>
> import soot.util.dot.DotGraphUtility;
> import soot.util.dot.Renderable;
>
> public class DotGraph implements Renderable
> {
> private boolean isSubGraph;
> private List<Renderable> drawElements;
> private String graphname;
> public DotGraph(String graphname)
> {
> this.drawElements = new LinkedList<Renderable>();
> }
> public DotGraph createSubGraph(String label)
> {
> DotGraph subgraph = new DotGraph(label);
> subgraph.isSubGraph = true;
> this.drawElements.add(subgraph);
> System.out.println(subgraph);
> return subgraph;
> }
> @Override
> public void render(OutputStream out, int indent) throws IOException {
> String graphname = this.graphname;
> if (!isSubGraph) {
> DotGraphUtility.renderLine(out, "digraph \""+graphname+"\" {",
> indent);
> } else {
> DotGraphUtility.renderLine(out, "subgraph \""+graphname+"\" {", indent);
>
> }
>
> }
> }
>
> Thanks & Regards
>
> Lokesh
>
>
>
> On Sat, Jul 19, 2014 at 10:57 PM, Stefan Gommer <gommer... at googlemail.com>
> wrote:
>
> Hi Lokesh,
>
>
>
> you could use the DotGraph class from the soot.util.dot package and build
> a Graph on your own while traversing through the cfg. I don’t know if there
> is a method to do this automatically.
>
>
>
> Stefan
>
>
>
>
>
> Am 19.07.2014 um 15:16 schrieb LOKESH JAIN <lokesh... at gmail.com>:
>
>
>
> Hi Steven,
>
> this Scene.v().getCallgraph().listener() is giving me QueueReader object.
> But I am not able to create a dot file from it. I have tried dump_cfg and
> various others options but all are of no help.
>
>
>
> 1. Please can you tell me how do i print a dot file out of QueueReader
> object?
>
>
>
> Also I am getting the call graph size as 54 for the general example apk
> "RV2013.apk".
>
>
>
> 2. How come call graph size is 54?
>
>
>
>
>
> On Fri, Jul 18, 2014 at 9:37 PM, Steven Arzt <Steve... at cased.de> wrote:
>
> Hi Lokesh,
>
>
>
> You can manually iterate over the callgraph using
> Scene.v().getCallgraph().listener() and print it out in dot format which
> should be fairly simple as it is just a QueueReader over the edges. Still,
> I think Soot can also directly do that, but I have never used the dot
> visualizer for callgraphs.
>
>
>
> Afterwards, you can visualize the dot file using GraphViz.
>
>
>
> Best regards,
>
> Steven
>
>
>
> *Von:* LOKESH JAIN [mailto:lokesh... at gmail.com]
> *Gesendet:* Freitag, 18. Juli 2014 18:04
> *An:* Steven Arzt
> *Cc:* Modhi Alsobiehy; soot... at cs.mcgill.ca; soot... at sable.mcgill.ca;
> soot... at googlegroups.com
>
>
> *Betreff:* Re: [Soot-list] Generating Android APK CallFlowGraph
>
>
>
>
>
> Hi,
>
> A gentle reminder. Please reply fast. I need it for my research project.
>
>
>
> Regards
>
> Lokesh
>
>
>
> On Thu, Jul 17, 2014 at 9:21 PM, LOKESH JAIN <lokesh... at gmail.com> wrote:
>
> Thanks a lot Steven and Modhi. It worked.
>
> It is showing call graph in words. How can I graphically see the call
> graph for apk files as we see for java files??
>
>
>
> Regards
>
> Lokesh Jain
>
>
>
> On Thu, Jul 17, 2014 at 6:11 PM, Steven Arzt <Steve... at cased.de> wrote:
>
> Hi Lokesh,
>
>
>
> It seems that you are missing the axml-2.0.jar library on your Java
> classpath.
>
>
>
> Best regards,
>
> Steven
>
>
>
> *Von:* soot-lis... at CS.McGill.CA [mailto:soot-lis... at CS.McGill.CA] *Im
> Auftrag von *Modhi Alsobiehy
> *Gesendet:* Donnerstag, 17. Juli 2014 14:39
> *An:* LOKESH JAIN
> *Cc:* soot... at cs.mcgill.ca; soot... at sable.mcgill.ca;
> soot... at googlegroups.com
> *Betreff:* Re: [Soot-list] Generating Android APK CallFlowGraph
>
>
>
> Hi Lokesh,
>
>
>
> Open the folder of your project and add the call back file into it.
>
>
>
> -Best,
>
> Modhi
>
>
> On Jul 17, 2014, at 12:03 PM, "LOKESH JAIN" <lokesh... at gmail.com> wrote:
>
> Hi all,
>
> Modhi, I am using your code for generating call graph for apk file. But, I
> am getting following error
>
> Exception in thread "main" java.lang.NoClassDefFoundError:
> pxb/android/axml/NodeVisitor
> at
> soot.jimple.infoflow.android.manifest.ProcessManifest.handle(Unknown Source)
> at
> soot.jimple.infoflow.android.manifest.ProcessManifest.<init>(Unknown Source)
> at
> soot.jimple.infoflow.android.manifest.ProcessManifest.<init>(Unknown Source)
> at
> soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(Unknown
> Source)
> at
> soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(Unknown
> Source)
> at CFG.main(CFG.java:33)
> Caused by: java.lang.ClassNotFoundException: pxb.android.axml.NodeVisitor
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> ... 6 more
>
> It's pretty much the same error that you were getting. Though I had
> checked , there is no duplicate library added. Also there is already
> AndroidCallbacks.txt in soot-infoflow-android, i haven't understood how to
> add it into my project.
> Any help would be appreciated. Thank You
> Regards
> Lokesh
>
>
> On Saturday, 5 July 2014 23:04:49 UTC+5:30, Modhi Alsobiehy wrote:
>
> Hi all,
>
> I need to traverse the call flow graph of android apps( apk files).
>
> I understand that I must set an entry point so to start, I tried the
> following code :
>
>
>
> ---------------------
>
> ...
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150225/579e76c3/attachment-0003.html
-------------- next part --------------
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/monika/soot-trunk.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/monika/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
[main] INFO soot.jimple.infoflow.android.SetupApplication - ARSC file parsing took 0.009049432 seconds
Using '/home/monika/adt-bundle-linux/sdk/platforms/android-17/android.jar' as android.jar
Warning: java.lang.ref.Finalizer is a phantom class!
Warning: android.graphics.pdf.PdfDocument$Page is a phantom class!
Warning: android.graphics.pdf.PdfDocument$PageInfo is a phantom class!
Warning: android.graphics.pdf.PdfDocument is a phantom class!
Warning: android.media.RemoteControlClient$OnGetPlaybackPositionListener is a phantom class!
Warning: android.media.RemoteControlClient$OnPlaybackPositionUpdateListener is a phantom class!
Warning: android.print.PageRange is a phantom class!
Warning: android.print.PrintAttributes$Builder is a phantom class!
Warning: android.print.PrintAttributes$MediaSize is a phantom class!
Warning: android.print.PrintAttributes is a phantom class!
Warning: android.print.PrintDocumentAdapter$LayoutResultCallback is a phantom class!
Warning: android.print.PrintDocumentAdapter$WriteResultCallback is a phantom class!
Warning: android.print.PrintDocumentAdapter is a phantom class!
Warning: android.print.PrintDocumentInfo$Builder is a phantom class!
Warning: android.print.PrintDocumentInfo is a phantom class!
Warning: android.print.PrintJob is a phantom class!
Warning: android.print.PrintManager is a phantom class!
Warning: android.print.pdf.PrintedPdfDocument is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowAttachListener is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowFocusChangeListener is a phantom class!
[main] INFO soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Generated main method:
public static void dummyMainMethod()
{
int $i0;
com.example.tutorialapplication.TutorialMainActivity $r0;
android.os.Bundle $r1;
$i0 = 0;
label1:
if $i0 == 0 goto label3;
$r0 = new com.example.tutorialapplication.TutorialMainActivity;
specialinvoke $r0.<com.example.tutorialapplication.TutorialMainActivity: void <init>()>();
if $i0 == 1 goto label3;
$r1 = new android.os.Bundle;
specialinvoke $r1.<android.os.Bundle: void <init>()>();
virtualinvoke $r0.<com.example.tutorialapplication.TutorialMainActivity: void onCreate(android.os.Bundle)>($r1);
$r1 = null;
label2:
if $i0 == 3 goto label3;
if $i0 == 4 goto label2;
label3:
if $i0 == 6 goto label1;
return;
}
[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 0.1 seconds.
[Spark] Type masks in 0.0 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 2.7 seconds.
[Spark] Solution found in 2.7 seconds.
Callback analysis done.
Warning: AbsoluteLayout is a phantom class!
Warning: com.example.tutorialapplication.AbsoluteLayout is a phantom class!
Warning: android.view.AbsoluteLayout is a phantom class!
Warning: TextView is a phantom class!
Warning: com.example.tutorialapplication.TextView is a phantom class!
Warning: android.view.TextView is a phantom class!
Warning: EditText is a phantom class!
Warning: com.example.tutorialapplication.EditText is a phantom class!
Warning: android.view.EditText is a phantom class!
Warning: Button is a phantom class!
Warning: com.example.tutorialapplication.Button is a phantom class!
Warning: android.view.Button is a phantom class!
Found 1 layout controls in file res/layout/activity_tutorial_main.xml
Using '/home/monika/adt-bundle-linux/sdk/platforms/android-17/android.jar' as android.jar
Warning: java.lang.ref.Finalizer is a phantom class!
Warning: android.graphics.pdf.PdfDocument$Page is a phantom class!
Warning: android.graphics.pdf.PdfDocument$PageInfo is a phantom class!
Warning: android.graphics.pdf.PdfDocument is a phantom class!
Warning: android.media.RemoteControlClient$OnGetPlaybackPositionListener is a phantom class!
Warning: android.media.RemoteControlClient$OnPlaybackPositionUpdateListener is a phantom class!
Warning: android.print.PageRange is a phantom class!
Warning: android.print.PrintAttributes$Builder is a phantom class!
Warning: android.print.PrintAttributes$MediaSize is a phantom class!
Warning: android.print.PrintAttributes is a phantom class!
Warning: android.print.PrintDocumentAdapter$LayoutResultCallback is a phantom class!
Warning: android.print.PrintDocumentAdapter$WriteResultCallback is a phantom class!
Warning: android.print.PrintDocumentAdapter is a phantom class!
Warning: android.print.PrintDocumentInfo$Builder is a phantom class!
Warning: android.print.PrintDocumentInfo is a phantom class!
Warning: android.print.PrintJob is a phantom class!
Warning: android.print.PrintManager is a phantom class!
Warning: android.print.pdf.PrintedPdfDocument is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowAttachListener is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowFocusChangeListener is a phantom class!
[main] INFO soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Generated main method:
public static void dummyMainMethod()
{
int $i0;
com.example.tutorialapplication.TutorialMainActivity $r0;
android.os.Bundle $r1;
com.example.tutorialapplication.TutorialMainActivity$1 $r2;
android.view.View $r3;
$i0 = 0;
label1:
if $i0 == 0 goto label6;
$r0 = new com.example.tutorialapplication.TutorialMainActivity;
specialinvoke $r0.<com.example.tutorialapplication.TutorialMainActivity: void <init>()>();
if $i0 == 1 goto label6;
$r1 = new android.os.Bundle;
specialinvoke $r1.<android.os.Bundle: void <init>()>();
virtualinvoke $r0.<com.example.tutorialapplication.TutorialMainActivity: void onCreate(android.os.Bundle)>($r1);
$r1 = null;
label2:
if $i0 == 2 goto label5;
label3:
$r2 = new com.example.tutorialapplication.TutorialMainActivity$1;
specialinvoke $r2.<com.example.tutorialapplication.TutorialMainActivity$1: void <init>(com.example.tutorialapplication.TutorialMainActivity)>($r0);
if $i0 == 3 goto label4;
$r3 = new android.view.View;
specialinvoke $r3.<android.view.View: void <init>()>();
virtualinvoke $r2.<com.example.tutorialapplication.TutorialMainActivity$1: void onClick(android.view.View)>($r3);
$r3 = null;
label4:
if $i0 == 4 goto label3;
label5:
if $i0 == 5 goto label2;
if $i0 == 6 goto label6;
if $i0 == 7 goto label2;
label6:
if $i0 == 9 goto label1;
return;
}
[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 0.1 seconds.
[Spark] Type masks in 0.0 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 0.9 seconds.
[Spark] Solution found in 0.9 seconds.
Running incremental callback analysis for 1 components...
Incremental callback analysis done.
Found 86 callback methods for 1 components
Found {res/layout/activity_tutorial_main.xml=[2131230726 - android.widget.Button, 2131230723 - android.widget.EditText, 2131230721 - android.widget.TextView, 2131230720 - android.widget.AbsoluteLayout, 2131230722 - android.widget.TextView, 2131230727 - android.widget.EditText, 2131230725 - android.widget.EditText, 2131230724 - android.widget.TextView]} layout controls
Entry point calculation done.
Created a SourceSinkManager with 92 sources, 126 sinks, and 86 callback methods.
Using '/home/monika/adt-bundle-linux/sdk/platforms/android-17/android.jar' as android.jar
Warning: android.graphics.pdf.PdfDocument$Page is a phantom class!
Warning: android.graphics.pdf.PdfDocument$PageInfo is a phantom class!
Warning: android.graphics.pdf.PdfDocument is a phantom class!
Warning: android.media.RemoteControlClient$OnGetPlaybackPositionListener is a phantom class!
Warning: android.media.RemoteControlClient$OnPlaybackPositionUpdateListener is a phantom class!
Warning: android.print.PageRange is a phantom class!
Warning: android.print.PrintAttributes$Builder is a phantom class!
Warning: android.print.PrintAttributes$MediaSize is a phantom class!
Warning: android.print.PrintAttributes is a phantom class!
Warning: android.print.PrintDocumentAdapter$LayoutResultCallback is a phantom class!
Warning: android.print.PrintDocumentAdapter$WriteResultCallback is a phantom class!
Warning: android.print.PrintDocumentAdapter is a phantom class!
Warning: android.print.PrintDocumentInfo$Builder is a phantom class!
Warning: android.print.PrintDocumentInfo is a phantom class!
Warning: android.print.PrintJob is a phantom class!
Warning: android.print.PrintManager is a phantom class!
Warning: android.print.pdf.PrintedPdfDocument is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowAttachListener is a phantom class!
Warning: android.view.ViewTreeObserver$OnWindowFocusChangeListener is a phantom class!
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot create valid constructor for android.util.AttributeSet, because it is an interface and cannot substitute with subclass
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Could not find a suitable constructor for class android.text.TextUtils$TruncateAt
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Could not find a suitable constructor for class android.view.accessibility.AccessibilityEvent
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot create valid constructor for java.lang.CharSequence, because it is an interface and cannot substitute with subclass
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Could not find a suitable constructor for class android.widget.TextView$BufferType
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Could not find a suitable constructor for class android.view.accessibility.AccessibilityNodeInfo
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Could not find a suitable constructor for class android.view.MotionEvent
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot create valid constructor for android.graphics.drawable.Drawable, because it is abstract and cannot substitute with subclass
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot create valid constructor for android.os.Parcelable, because it is an interface and cannot substitute with subclass
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Could not find a suitable constructor for class android.view.DragEvent
[main] INFO soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Generated main method:
public static void dummyMainMethod()
{
int $i0, $i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11;
com.example.tutorialapplication.TutorialMainActivity $r0;
android.os.Bundle $r1;
android.widget.AbsoluteLayout $r2;
android.view.ViewGroup$LayoutParams $r3, $r4, $r5, $r6, $r7;
boolean $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7, $z8, $z9, $z10, $z11, $z12, $z13, $z14, $z15, $z16, $z17;
android.widget.EditText $r8;
android.text.method.MovementMethod $r9;
java.lang.CharSequence $r10, $r18;
android.widget.TextView $r11;
android.view.KeyEvent $r12, $r13, $r16, $r23, $r24;
android.graphics.Rect $r14, $r25;
android.graphics.Canvas $r15;
android.view.View $r17, $r30;
android.view.inputmethod.EditorInfo $r19;
android.view.inputmethod.InputConnection $r20;
int[] $r21;
float $f0, $f1;
java.util.ArrayList $r22;
android.view.AccessibilityIterators$TextSegmentIterator $r26;
android.os.Parcelable $r27;
android.widget.Button $r28;
com.example.tutorialapplication.TutorialMainActivity$1 $r29;
$i0 = 0;
label01:
if $i0 == 0 goto label90;
$r0 = new com.example.tutorialapplication.TutorialMainActivity;
specialinvoke $r0.<com.example.tutorialapplication.TutorialMainActivity: void <init>()>();
if $i0 == 1 goto label90;
$r1 = new android.os.Bundle;
specialinvoke $r1.<android.os.Bundle: void <init>()>();
virtualinvoke $r0.<com.example.tutorialapplication.TutorialMainActivity: void onCreate(android.os.Bundle)>($r1);
$r1 = null;
label02:
if $i0 == 2 goto label89;
label03:
$r2 = new android.widget.AbsoluteLayout;
specialinvoke $r2.<android.widget.AbsoluteLayout: void <init>(android.content.Context)>($r0);
if $i0 == 3 goto label04;
virtualinvoke $r2.<android.widget.AbsoluteLayout: void onMeasure(int,int)>(0, 0);
label04:
if $i0 == 4 goto label05;
$r3 = virtualinvoke $r2.<android.widget.AbsoluteLayout: android.view.ViewGroup$LayoutParams generateLayoutParams(android.util.AttributeSet)>(null);
label05:
if $i0 == 5 goto label06;
$z0 = virtualinvoke $r2.<android.widget.AbsoluteLayout: boolean shouldDelayChildPressedState()>();
label06:
if $i0 == 6 goto label07;
$r4 = new android.view.ViewGroup$LayoutParams;
specialinvoke $r4.<android.view.ViewGroup$LayoutParams: void <init>()>();
$z1 = virtualinvoke $r2.<android.widget.AbsoluteLayout: boolean checkLayoutParams(android.view.ViewGroup$LayoutParams)>($r4);
$r4 = null;
label07:
if $i0 == 7 goto label08;
$r5 = virtualinvoke $r2.<android.widget.AbsoluteLayout: android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()>();
label08:
if $i0 == 8 goto label09;
$r6 = new android.view.ViewGroup$LayoutParams;
specialinvoke $r6.<android.view.ViewGroup$LayoutParams: void <init>()>();
$r7 = virtualinvoke $r2.<android.widget.AbsoluteLayout: android.view.ViewGroup$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams)>($r6);
$r6 = null;
label09:
if $i0 == 9 goto label10;
virtualinvoke $r2.<android.widget.AbsoluteLayout: void onLayout(boolean,int,int,int,int)>(false, 0, 0, 0, 0);
label10:
$r8 = new android.widget.EditText;
specialinvoke $r8.<android.widget.EditText: void <init>(android.content.Context)>($r0);
if $i0 == 10 goto label11;
virtualinvoke $r8.<android.widget.EditText: void setEllipsize(android.text.TextUtils$TruncateAt)>(null);
label11:
if $i0 == 11 goto label12;
$r9 = virtualinvoke $r8.<android.widget.EditText: android.text.method.MovementMethod getDefaultMovementMethod()>();
label12:
if $i0 == 12 goto label13;
$r10 = virtualinvoke $r8.<android.widget.EditText: java.lang.CharSequence getText()>();
label13:
if $i0 == 13 goto label14;
virtualinvoke $r8.<android.widget.EditText: void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent)>(null);
label14:
if $i0 == 14 goto label15;
virtualinvoke $r8.<android.widget.EditText: void setText(java.lang.CharSequence,android.widget.TextView$BufferType)>(null, null);
label15:
if $i0 == 15 goto label16;
$z2 = virtualinvoke $r8.<android.widget.EditText: boolean getDefaultEditable()>();
label16:
if $i0 == 16 goto label17;
virtualinvoke $r8.<android.widget.EditText: void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)>(null);
label17:
$r11 = new android.widget.TextView;
specialinvoke $r11.<android.widget.TextView: void <init>(android.content.Context)>($r0);
if $i0 == 17 goto label18;
$r12 = new android.view.KeyEvent;
specialinvoke $r12.<android.view.KeyEvent: void <init>(int,int)>(0, 0);
$z3 = virtualinvoke $r11.<android.widget.TextView: boolean onKeyPreIme(int,android.view.KeyEvent)>(0, $r12);
$r12 = null;
label18:
if $i0 == 18 goto label19;
virtualinvoke $r11.<android.widget.TextView: void setPadding(int,int,int,int)>(0, 0, 0, 0);
label19:
if $i0 == 19 goto label20;
virtualinvoke $r11.<android.widget.TextView: void onScrollChanged(int,int,int,int)>(0, 0, 0, 0);
label20:
if $i0 == 20 goto label21;
$i1 = virtualinvoke $r11.<android.widget.TextView: int getAccessibilityCursorPosition()>();
label21:
if $i0 == 21 goto label22;
$i2 = virtualinvoke $r11.<android.widget.TextView: int getFadeHeight(boolean)>(false);
label22:
if $i0 == 22 goto label23;
$r13 = new android.view.KeyEvent;
specialinvoke $r13.<android.view.KeyEvent: void <init>(int,int)>(0, 0);
$z4 = virtualinvoke $r11.<android.widget.TextView: boolean onKeyMultiple(int,int,android.view.KeyEvent)>(0, 0, $r13);
$r13 = null;
label23:
if $i0 == 23 goto label24;
$r14 = new android.graphics.Rect;
specialinvoke $r14.<android.graphics.Rect: void <init>()>();
virtualinvoke $r11.<android.widget.TextView: void getFocusedRect(android.graphics.Rect)>($r14);
$r14 = null;
label24:
if $i0 == 24 goto label25;
virtualinvoke $r11.<android.widget.TextView: void setEnabled(boolean)>(false);
label25:
if $i0 == 25 goto label26;
virtualinvoke $r11.<android.widget.TextView: void onFinishTemporaryDetach()>();
label26:
if $i0 == 26 goto label27;
virtualinvoke $r11.<android.widget.TextView: void onLayout(boolean,int,int,int,int)>(false, 0, 0, 0, 0);
label27:
if $i0 == 27 goto label28;
virtualinvoke $r11.<android.widget.TextView: void computeScroll()>();
label28:
if $i0 == 28 goto label29;
$r15 = new android.graphics.Canvas;
specialinvoke $r15.<android.graphics.Canvas: void <init>()>();
virtualinvoke $r11.<android.widget.TextView: void onDraw(android.graphics.Canvas)>($r15);
$r15 = null;
label29:
if $i0 == 29 goto label30;
virtualinvoke $r11.<android.widget.TextView: void resetResolvedDrawables()>();
label30:
if $i0 == 30 goto label31;
$i3 = virtualinvoke $r11.<android.widget.TextView: int getTopPaddingOffset()>();
label31:
if $i0 == 31 goto label32;
virtualinvoke $r11.<android.widget.TextView: void jumpDrawablesToCurrentState()>();
label32:
if $i0 == 32 goto label33;
$i4 = virtualinvoke $r11.<android.widget.TextView: int getFadeTop(boolean)>(false);
label33:
if $i0 == 33 goto label34;
$r16 = new android.view.KeyEvent;
specialinvoke $r16.<android.view.KeyEvent: void <init>(int,int)>(0, 0);
$z5 = virtualinvoke $r11.<android.widget.TextView: boolean onKeyShortcut(int,android.view.KeyEvent)>(0, $r16);
$r16 = null;
label34:
if $i0 == 34 goto label35;
virtualinvoke $r11.<android.widget.TextView: void onMeasure(int,int)>(0, 0);
label35:
if $i0 == 35 goto label36;
virtualinvoke $r11.<android.widget.TextView: void debug(int)>(0);
label36:
if $i0 == 36 goto label37;
$r17 = new android.view.View;
specialinvoke $r17.<android.view.View: void <init>()>();
virtualinvoke $r11.<android.widget.TextView: void onVisibilityChanged(android.view.View,int)>($r17, 0);
$r17 = null;
label37:
if $i0 == 37 goto label38;
virtualinvoke $r11.<android.widget.TextView: void onScreenStateChanged(int)>(0);
label38:
if $i0 == 38 goto label39;
$i5 = virtualinvoke $r11.<android.widget.TextView: int computeVerticalScrollRange()>();
label39:
if $i0 == 39 goto label40;
$z6 = virtualinvoke $r11.<android.widget.TextView: boolean onGenericMotionEvent(android.view.MotionEvent)>(null);
label40:
if $i0 == 40 goto label41;
$z7 = virtualinvoke $r11.<android.widget.TextView: boolean onCheckIsTextEditor()>();
label41:
if $i0 == 41 goto label42;
virtualinvoke $r11.<android.widget.TextView: void setAccessibilityCursorPosition(int)>(0);
label42:
if $i0 == 42 goto label43;
virtualinvoke $r11.<android.widget.TextView: void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent)>(null);
label43:
if $i0 == 43 goto label44;
$i6 = virtualinvoke $r11.<android.widget.TextView: int computeVerticalScrollExtent()>();
label44:
if $i0 == 44 goto label45;
$i7 = virtualinvoke $r11.<android.widget.TextView: int getBaseline()>();
label45:
if $i0 == 45 goto label46;
virtualinvoke $r11.<android.widget.TextView: void onAttachedToWindow()>();
label46:
if $i0 == 46 goto label47;
$r18 = virtualinvoke $r11.<android.widget.TextView: java.lang.CharSequence getIterableTextForAccessibility()>();
label47:
if $i0 == 47 goto label48;
virtualinvoke $r11.<android.widget.TextView: void setPaddingRelative(int,int,int,int)>(0, 0, 0, 0);
label48:
if $i0 == 48 goto label49;
$z8 = virtualinvoke $r11.<android.widget.TextView: boolean setFrame(int,int,int,int)>(0, 0, 0, 0);
label49:
if $i0 == 49 goto label50;
$z9 = virtualinvoke $r11.<android.widget.TextView: boolean performLongClick()>();
label50:
if $i0 == 50 goto label51;
$r19 = new android.view.inputmethod.EditorInfo;
specialinvoke $r19.<android.view.inputmethod.EditorInfo: void <init>()>();
$r20 = virtualinvoke $r11.<android.widget.TextView: android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo)>($r19);
$r19 = null;
label51:
if $i0 == 51 goto label52;
virtualinvoke $r11.<android.widget.TextView: void invalidateDrawable(android.graphics.drawable.Drawable)>(null);
label52:
if $i0 == 52 goto label53;
virtualinvoke $r11.<android.widget.TextView: void onDetachedFromWindow()>();
label53:
if $i0 == 53 goto label54;
virtualinvoke $r11.<android.widget.TextView: void onRestoreInstanceState(android.os.Parcelable)>(null);
label54:
if $i0 == 54 goto label55;
$z10 = virtualinvoke $r11.<android.widget.TextView: boolean onTrackballEvent(android.view.MotionEvent)>(null);
label55:
if $i0 == 55 goto label56;
$r21 = virtualinvoke $r11.<android.widget.TextView: int[] onCreateDrawableState(int)>(0);
label56:
if $i0 == 56 goto label57;
$i8 = virtualinvoke $r11.<android.widget.TextView: int computeHorizontalScrollRange()>();
label57:
if $i0 == 57 goto label58;
$z11 = virtualinvoke $r11.<android.widget.TextView: boolean onDragEvent(android.view.DragEvent)>(null);
label58:
if $i0 == 58 goto label59;
$f0 = virtualinvoke $r11.<android.widget.TextView: float getRightFadingEdgeStrength()>();
label59:
if $i0 == 59 goto label60;
virtualinvoke $r11.<android.widget.TextView: void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)>(null);
label60:
if $i0 == 60 goto label61;
$r22 = new java.util.ArrayList;
specialinvoke $r22.<java.util.ArrayList: void <init>()>();
virtualinvoke $r11.<android.widget.TextView: void findViewsWithText(java.util.ArrayList,java.lang.CharSequence,int)>($r22, null, 0);
$r22 = null;
label61:
if $i0 == 61 goto label62;
virtualinvoke $r11.<android.widget.TextView: void onWindowFocusChanged(boolean)>(false);
label62:
if $i0 == 62 goto label63;
$r23 = new android.view.KeyEvent;
specialinvoke $r23.<android.view.KeyEvent: void <init>(int,int)>(0, 0);
$z12 = virtualinvoke $r11.<android.widget.TextView: boolean onKeyUp(int,android.view.KeyEvent)>(0, $r23);
$r23 = null;
label63:
if $i0 == 63 goto label64;
$z13 = virtualinvoke $r11.<android.widget.TextView: boolean hasOverlappingRendering()>();
label64:
if $i0 == 64 goto label65;
virtualinvoke $r11.<android.widget.TextView: void sendAccessibilityEvent(int)>(0);
label65:
if $i0 == 65 goto label66;
virtualinvoke $r11.<android.widget.TextView: void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent)>(null);
label66:
if $i0 == 66 goto label67;
$r24 = new android.view.KeyEvent;
specialinvoke $r24.<android.view.KeyEvent: void <init>(int,int)>(0, 0);
$z14 = virtualinvoke $r11.<android.widget.TextView: boolean onKeyDown(int,android.view.KeyEvent)>(0, $r24);
$r24 = null;
label67:
if $i0 == 67 goto label68;
$i9 = virtualinvoke $r11.<android.widget.TextView: int getLeftPaddingOffset()>();
label68:
if $i0 == 68 goto label69;
$f1 = virtualinvoke $r11.<android.widget.TextView: float getLeftFadingEdgeStrength()>();
label69:
if $i0 == 69 goto label70;
virtualinvoke $r11.<android.widget.TextView: void dispatchFinishTemporaryDetach()>();
label70:
if $i0 == 70 goto label71;
$z15 = virtualinvoke $r11.<android.widget.TextView: boolean isPaddingOffsetRequired()>();
label71:
if $i0 == 71 goto label72;
virtualinvoke $r11.<android.widget.TextView: void onStartTemporaryDetach()>();
label72:
if $i0 == 72 goto label73;
$r25 = new android.graphics.Rect;
specialinvoke $r25.<android.graphics.Rect: void <init>()>();
virtualinvoke $r11.<android.widget.TextView: void onFocusChanged(boolean,int,android.graphics.Rect)>(false, 0, $r25);
$r25 = null;
label73:
if $i0 == 73 goto label74;
virtualinvoke $r11.<android.widget.TextView: void cancelLongPress()>();
label74:
if $i0 == 74 goto label75;
virtualinvoke $r11.<android.widget.TextView: void setSelected(boolean)>(false);
label75:
if $i0 == 75 goto label76;
staticinvoke <android.widget.TextView: void <clinit>()>();
label76:
if $i0 == 76 goto label77;
$i10 = virtualinvoke $r11.<android.widget.TextView: int getRightPaddingOffset()>();
label77:
if $i0 == 77 goto label78;
virtualinvoke $r11.<android.widget.TextView: void onRtlPropertiesChanged(int)>(0);
label78:
if $i0 == 78 goto label79;
virtualinvoke $r11.<android.widget.TextView: void drawableStateChanged()>();
label79:
if $i0 == 79 goto label80;
$r26 = virtualinvoke $r11.<android.widget.TextView: android.view.AccessibilityIterators$TextSegmentIterator getIteratorForGranularity(int)>(0);
label80:
if $i0 == 80 goto label81;
$z16 = virtualinvoke $r11.<android.widget.TextView: boolean verifyDrawable(android.graphics.drawable.Drawable)>(null);
label81:
if $i0 == 81 goto label82;
$z17 = virtualinvoke $r11.<android.widget.TextView: boolean onTouchEvent(android.view.MotionEvent)>(null);
label82:
if $i0 == 82 goto label83;
$i11 = virtualinvoke $r11.<android.widget.TextView: int getBottomPaddingOffset()>();
label83:
if $i0 == 83 goto label84;
virtualinvoke $r11.<android.widget.TextView: void onResolveDrawables(int)>(0);
label84:
if $i0 == 84 goto label85;
$r27 = virtualinvoke $r11.<android.widget.TextView: android.os.Parcelable onSaveInstanceState()>();
label85:
$r28 = new android.widget.Button;
specialinvoke $r28.<android.widget.Button: void <init>(android.content.Context)>($r0);
if $i0 == 85 goto label86;
virtualinvoke $r28.<android.widget.Button: void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)>(null);
label86:
if $i0 == 86 goto label87;
virtualinvoke $r28.<android.widget.Button: void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent)>(null);
label87:
$r29 = new com.example.tutorialapplication.TutorialMainActivity$1;
specialinvoke $r29.<com.example.tutorialapplication.TutorialMainActivity$1: void <init>(com.example.tutorialapplication.TutorialMainActivity)>($r0);
if $i0 == 87 goto label88;
$r30 = new android.view.View;
specialinvoke $r30.<android.view.View: void <init>()>();
virtualinvoke $r29.<com.example.tutorialapplication.TutorialMainActivity$1: void onClick(android.view.View)>($r30);
$r30 = null;
label88:
if $i0 == 88 goto label03;
label89:
if $i0 == 89 goto label02;
if $i0 == 90 goto label90;
if $i0 == 91 goto label02;
label90:
if $i0 == 93 goto label01;
return;
}
[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 0.1 seconds.
[Spark] Type masks in 0.0 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 12.6 seconds.
[Spark] Solution found in 12.6 seconds.
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl...
Transforming android.support.v4.app.ActionBarDrawerToggleHoneycomb...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompat$AccessibilityRecordJellyBeanImpl...
Transforming android.support.v4.widget.ContentLoadingProgressBar...
Transforming android.support.v4.app.FragmentTabHost$SavedState$1...
Transforming android.support.v4.app.BackStackRecord$Op...
Transforming android.support.v4.view.MenuItemCompat$OnActionExpandListener...
Transforming android.support.v4.app.FragmentTabHost$SavedState...
Transforming com.example.tutorialapplication.BuildConfig...
Transforming android.support.v4.content.LocalBroadcastManager$ReceiverRecord...
Transforming android.support.v4.view.KeyEventCompat...
Transforming android.support.v4.app.ListFragment$2...
Transforming android.support.v4.app.ListFragment$1...
Transforming android.support.v4.util.MapCollections$MapIterator...
Transforming android.support.v4.widget.CursorAdapter$ChangeObserver...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompat$AccessibilityRecordImpl...
Transforming android.support.v4.app.ShareCompat$IntentBuilder...
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl...
Transforming android.support.v4.widget.PopupMenuCompatKitKat...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$TextDirectionHeuristicInternal...
Transforming android.support.v4.view.MenuItemCompat$BaseMenuVersionImpl...
Transforming android.support.v4.widget.SearchViewCompat$SearchViewCompatIcsImpl...
Transforming com.example.tutorialapplication.R$style...
Transforming android.support.v4.view.GestureDetectorCompat$GestureDetectorCompatImplBase$GestureHandler...
Transforming android.support.v4.app.LoaderManager...
Transforming android.support.v4.util.DebugUtils...
Transforming android.support.v4.widget.ScrollerCompatIcs...
Transforming android.support.v4.view.KeyEventCompat$HoneycombKeyEventVersionImpl...
Transforming android.support.v4.widget.ExploreByTouchHelper$ExploreByTouchNodeProvider...
Transforming android.support.v4.content.Loader$ForceLoadContentObserver...
Transforming android.support.v4.widget.DrawerLayout$SavedState...
Transforming android.support.v4.media.TransportMediatorJellybeanMR2$1...
Transforming android.support.v4.app.DialogFragment...
Transforming android.support.v4.media.TransportMediatorJellybeanMR2$2...
Transforming android.support.v4.media.TransportMediatorJellybeanMR2$3...
Transforming android.support.v4.media.TransportMediatorJellybeanMR2$4...
Transforming android.support.v4.view.MenuItemCompat$HoneycombMenuVersionImpl...
Transforming android.support.v4.view.accessibility.AccessibilityEventCompat$AccessibilityEventVersionImpl...
Transforming android.support.v4.media.TransportMediator...
Transforming android.support.v4.app.ShareCompat$ShareCompatImplJB...
Transforming android.support.v4.view.MenuItemCompat...
Transforming android.support.v4.app.NotificationCompat$NotificationCompatImplIceCreamSandwich...
Transforming android.support.v4.app.NotificationCompat$BigPictureStyle...
Transforming android.support.v4.app.TaskStackBuilderHoneycomb...
Transforming android.support.v4.app.TaskStackBuilderJellybean...
Transforming android.support.v4.hardware.display.DisplayManagerCompat$JellybeanMr1Impl...
Transforming android.support.v4.content.FileProvider$SimplePathStrategy...
Transforming android.support.v4.view.GestureDetectorCompat$GestureDetectorCompatImplBase...
Transforming android.support.v4.net.TrafficStatsCompat$BaseTrafficStatsCompatImpl$1...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompatJellyBean...
Transforming android.support.v4.app.FragmentTransaction...
Transforming android.support.v4.app.NotificationCompatJellybean...
Transforming android.support.v4.widget.ExploreByTouchHelper...
Transforming android.support.v4.util.LogWriter...
Transforming android.support.v4.app.FragmentActivity$2...
Transforming android.support.v4.text.ICUCompat$ICUCompatImpl...
Transforming android.support.v4.media.TransportController...
Transforming android.support.v4.app.FragmentActivity$1...
Transforming android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl...
Transforming android.support.v4.util.ArrayMap$1...
Transforming android.support.v4.view.ViewPager...
Transforming android.support.v4.content.ContextCompatHoneycomb...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompatKitKat$AccessibilityNodeInfoBridge...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat$AccessibilityNodeProviderKitKatImpl...
Transforming android.support.v4.content.IntentCompatIcsMr1...
Transforming android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateImpl...
Transforming com.example.tutorialapplication.R$drawable...
Transforming android.support.v4.widget.EdgeEffectCompat$BaseEdgeEffectImpl...
Transforming android.support.v4.content.Loader...
Transforming android.support.v4.app.ShareCompat...
Transforming android.support.v4.view.ViewPager$SimpleOnPageChangeListener...
Transforming android.support.v4.view.ViewParentCompat$ViewParentCompatICSImpl...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompatJellyBean...
Transforming android.support.v4.view.ScaleGestureDetectorCompat$1...
Transforming android.support.v4.internal.view.SupportMenu...
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompatJellyBeanMr2...
Transforming android.support.v4.widget.ListPopupWindowCompat$BaseListPopupWindowImpl...
Transforming android.support.v4.net.ConnectivityManagerCompatGingerbread...
Transforming android.support.v4.app.TaskStackBuilder$TaskStackBuilderImpl...
Transforming android.support.v4.widget.ViewDragHelper$Callback...
Transforming android.support.v4.content.FileProvider$PathStrategy...
Transforming android.support.v4.widget.PopupMenuCompat$KitKatPopupMenuImpl...
Transforming android.support.v4.app.Fragment$InstantiationException...
Transforming android.support.v4.print.PrintHelperKitkat$1...
Transforming android.support.v4.content.AsyncTaskLoader$LoadTask...
Transforming android.support.v4.graphics.drawable.DrawableCompat$HoneycombDrawableImpl...
Transforming android.support.v4.os.ParcelableCompatCreatorCallbacks...
Transforming android.support.v4.app.NotificationCompat$NotificationCompatImpl...
Transforming android.support.v4.app.ActivityCompatJB...
Transforming com.example.tutorialapplication.R$string...
Transforming android.support.v4.view.accessibility.AccessibilityEventCompatIcs...
Transforming android.support.v4.app.FragmentActivity$FragmentTag...
Transforming android.support.v4.content.IntentCompat...
Transforming android.support.v4.widget.SearchViewCompat$OnQueryTextListenerCompat...
Transforming android.support.v4.view.PagerTitleStrip$PagerTitleStripImpl...
Transforming android.support.v4.widget.SearchViewCompatHoneycomb$OnCloseListenerCompatBridge...
Transforming android.support.v4.hardware.display.DisplayManagerCompat$LegacyImpl...
Transforming android.support.v4.view.MotionEventCompat$MotionEventVersionImpl...
Transforming android.support.v4.view.ViewCompatHC...
Transforming android.support.v4.graphics.drawable.DrawableCompatHoneycomb...
Transforming android.support.v4.app.ActionBarDrawerToggle$ActionBarDrawerToggleImpl...
Transforming com.example.tutorialapplication.R...
Transforming android.support.v4.widget.CursorAdapter...
Transforming android.support.v4.text.BidiFormatter$Builder...
Transforming android.support.v4.widget.SlidingPaneLayout$AccessibilityDelegate...
Transforming android.support.v4.app.FragmentTabHost$TabInfo...
Transforming android.support.v4.app.NotificationCompat$NotificationCompatImplJellybean...
Transforming android.support.v4.app.NotificationCompatHoneycomb...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompat...
Transforming android.support.v4.widget.SearchViewCompat$SearchViewCompatHoneycombImpl...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$1...
Transforming android.support.v4.content.ModernAsyncTask$WorkerRunnable...
Transforming android.support.v4.app.FragmentState$1...
Transforming android.support.v4.view.ActionProvider$VisibilityListener...
Transforming android.support.v4.widget.SlidingPaneLayout...
Transforming android.support.v4.view.ViewConfigurationCompat$ViewConfigurationVersionImpl...
Transforming android.support.v4.app.Fragment...
Transforming android.support.v4.view.MotionEventCompat$BaseMotionEventVersionImpl...
Transforming android.support.v4.view.PagerTitleStrip$1...
Transforming android.support.v4.app.LoaderManagerImpl$LoaderInfo...
Transforming android.support.v4.app.NavUtilsJB...
Transforming android.support.v4.view.AccessibilityDelegateCompat...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompat$AccessibilityRecordIcsMr1Impl...
Transforming android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl...
Transforming android.support.v4.view.PagerTitleStrip$PageListener...
Transforming android.support.v4.view.KeyEventCompat$EclairKeyEventVersionImpl...
Transforming android.support.v4.view.MenuItemCompatIcs...
Transforming android.support.v4.view.ViewCompat$EclairMr1ViewCompatImpl...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompat$AccessibilityManagerVersionImpl...
Transforming android.support.v4.app.TaskStackBuilder$TaskStackBuilderImplJellybean...
Transforming android.support.v4.content.ContextCompatKitKat...
Transforming android.support.v4.widget.SearchViewCompat...
Transforming android.support.v4.util.SparseArrayCompat...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompatIcs...
Transforming android.support.v4.util.MapCollections$ValuesCollection...
Transforming android.support.v4.view.ViewCompatKitKat...
Transforming android.support.v4.view.MenuCompat...
Transforming android.support.v4.app.NavUtils$NavUtilsImpl...
Transforming android.support.v4.app.FragmentActivity...
Transforming android.support.v4.content.LocalBroadcastManager$1...
Transforming android.support.v4.net.ConnectivityManagerCompat...
Transforming android.support.v4.view.ViewCompat$JBViewCompatImpl...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$FirstStrong...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompatJellyBean$1...
Transforming android.support.v4.view.ViewCompatJB...
Transforming android.support.v4.widget.SimpleCursorAdapter...
Transforming android.support.v4.app.ActionBarDrawerToggle$DelegateProvider...
Transforming android.support.v4.view.MenuItemCompat$MenuVersionImpl...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompatIcs$AccessibilityStateChangeListenerBridge...
Transforming android.support.v4.view.ViewPager$3...
Transforming android.support.v4.app.NavUtils...
Transforming android.support.v4.view.ViewPager$2...
Transforming android.support.v4.view.MenuItemCompat$IcsMenuVersionImpl$1...
Transforming android.support.v4.view.ViewPager$1...
Transforming android.support.v4.widget.ExploreByTouchHelper$1...
Transforming android.support.v4.app.ActionBarDrawerToggle$ActionBarDrawerToggleImplHC...
Transforming android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1...
Transforming android.support.v4.view.VelocityTrackerCompat$VelocityTrackerVersionImpl...
Transforming android.support.v4.app.ActivityOptionsCompat...
Transforming android.support.v4.content.LocalBroadcastManager$BroadcastRecord...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompatIcs...
Transforming android.support.v4.app.NavUtils$NavUtilsImplJB...
Transforming android.support.v4.view.ViewGroupCompat...
Transforming android.support.v4.view.ViewPager$MyAccessibilityDelegate...
Transforming android.support.v4.view.AccessibilityDelegateCompatJellyBean$AccessibilityDelegateBridgeJellyBean...
Transforming android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl...
Transforming android.support.v4.widget.SearchViewCompatIcs$MySearchView...
Transforming com.example.tutorialapplication.R$menu...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityNodeInfoStubImpl...
Transforming android.support.v4.widget.ScrollerCompatGingerbread...
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat...
Transforming android.support.v4.view.AccessibilityDelegateCompatIcs...
Transforming android.support.v4.text.ICUCompat...
Transforming android.support.v4.graphics.drawable.DrawableCompat$BaseDrawableImpl...
Transforming android.support.v4.media.TransportMediatorCallback...
Transforming android.support.v4.app.ServiceCompat...
Transforming android.support.v4.view.PagerAdapter...
Transforming android.support.v4.widget.PopupMenuCompat$BasePopupMenuImpl...
Transforming android.support.v4.app.ShareCompatICS...
Transforming android.support.v4.app.ActivityOptionsCompatJB...
Transforming android.support.v4.widget.SlidingPaneLayout$SavedState$1...
Transforming android.support.v4.util.AtomicFile...
Transforming android.support.v4.app.NotificationCompat$NotificationCompatImplHoneycomb...
Transforming android.support.v4.view.AccessibilityDelegateCompatJellyBean$1...
Transforming android.support.v4.widget.SlidingPaneLayout$LayoutParams...
Transforming android.support.v4.widget.PopupMenuCompat$PopupMenuImpl...
Transforming android.support.v4.os.EnvironmentCompatKitKat...
Transforming android.support.v4.widget.EdgeEffectCompat...
Transforming android.support.v4.content.ModernAsyncTask$Status...
Transforming android.support.v4.view.GravityCompatJellybeanMr1...
Transforming android.support.v4.view.AccessibilityDelegateCompatJellyBean...
Transforming android.support.v4.widget.AutoScrollHelper...
Transforming android.support.v4.content.ModernAsyncTask...
Transforming android.support.v4.view.ViewPager$PageTransformer...
Transforming android.support.v4.widget.DrawerLayout$SavedState$1...
Transforming android.support.v4.app.FragmentManager$BackStackEntry...
Transforming android.support.v4.widget.SlidingPaneLayout$1...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompat$AccessibilityManagerIcsImpl$1...
Transforming android.support.v4.view.ScaleGestureDetectorCompat$ScaleGestureDetectorCompatKitKatImpl...
Transforming android.support.v4.view.ViewGroupCompat$ViewGroupCompatImpl...
Transforming android.support.v4.print.PrintHelper$PrintHelperStubImpl...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityNodeInfoImpl...
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl...
Transforming android.support.v4.net.ConnectivityManagerCompatJellyBean...
Transforming android.support.v4.view.PagerTitleStripIcs$SingleLineAllCapsTransform...
Transforming android.support.v4.net.ConnectivityManagerCompat$JellyBeanConnectivityManagerCompatImpl...
Transforming android.support.v4.view.accessibility.AccessibilityEventCompat...
Transforming android.support.v4.net.TrafficStatsCompat$1...
Transforming android.support.v4.app.FragmentState...
Transforming android.support.v4.app.ActionBarDrawerToggle$SlideDrawable...
Transforming android.support.v4.view.KeyEventCompatHoneycomb...
Transforming android.support.v4.view.GravityCompat$GravityCompatImplJellybeanMr1...
Transforming android.support.v4.content.ModernAsyncTask$4...
Transforming android.support.v4.view.accessibility.AccessibilityEventCompat$AccessibilityEventIcsImpl...
Transforming android.support.v4.content.ModernAsyncTask$3...
Transforming android.support.v4.content.ModernAsyncTask$2...
Transforming android.support.v4.content.ModernAsyncTask$1...
Transforming android.support.v4.util.MapCollections...
Transforming android.support.v4.text.BidiFormatter$DirectionalityEstimator...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityNodeInfoIcsImpl...
Transforming android.support.v4.view.ViewConfigurationCompat...
Transforming android.support.v4.view.ActionProvider...
Transforming android.support.v4.widget.ViewDragHelper...
Transforming android.support.v4.util.LruCache...
Transforming android.support.v4.app.FragmentManagerImpl...
Transforming android.support.v4.view.ViewGroupCompatHC...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompatKitKat...
Transforming android.support.v4.widget.DrawerLayout$DrawerListener...
Transforming android.support.v4.database.DatabaseUtilsCompat...
Transforming android.support.v4.app.NotificationCompat$Builder...
Transforming android.support.v4.app.ShareCompat$ShareCompatImpl...
Transforming android.support.v4.app.LoaderManagerImpl...
Transforming android.support.v4.os.ParcelableCompatCreatorHoneycombMR2...
Transforming android.support.v4.app.ListFragment...
Transforming android.support.v4.view.ViewCompat...
Transforming android.support.v4.widget.EdgeEffectCompat$EdgeEffectImpl...
Transforming android.support.v4.content.ContextCompat...
Transforming android.support.v4.internal.view.SupportSubMenu...
Transforming android.support.v4.view.ViewGroupCompat$ViewGroupCompatJellybeanMR2Impl...
Transforming android.support.v4.app.FragmentTabHost$DummyTabFactory...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompat$AccessibilityRecordStubImpl...
Transforming android.support.v4.view.MarginLayoutParamsCompatJellybeanMr1...
Transforming android.support.v4.view.ViewCompat$ICSViewCompatImpl...
Transforming com.example.tutorialapplication.TutorialMainActivity$1...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat$AccessibilityNodeProviderKitKatImpl$1...
Transforming android.support.v4.widget.DrawerLayout$AccessibilityDelegate...
Transforming android.support.v4.util.MapCollections$EntrySet...
Transforming android.support.v4.widget.CursorFilter$CursorFilterClient...
Transforming android.support.v4.content.FileProvider...
Transforming android.support.v4.widget.ScrollerCompat$ScrollerCompatImplIcs...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat...
Transforming android.support.v4.widget.ContentLoadingProgressBar$1...
Transforming android.support.v4.app.ActivityCompatHoneycomb...
Transforming android.support.v4.widget.ContentLoadingProgressBar$2...
Transforming android.support.v4.net.TrafficStatsCompat$BaseTrafficStatsCompatImpl...
Transforming android.support.v4.print.PrintHelperKitkat...
Transforming android.support.v4.content.IntentCompatHoneycomb...
Transforming android.support.v4.view.ViewGroupCompatIcs...
Transforming android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateStubImpl...
Transforming android.support.v4.print.PrintHelper...
Transforming android.support.v4.app.NotificationCompat$BigTextStyle...
Transforming android.support.v4.media.TransportPerformer...
Transforming android.support.v4.view.AccessibilityDelegateCompatIcs$AccessibilityDelegateBridge...
Transforming android.support.v4.view.ViewParentCompatICS...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat$AccessibilityNodeProviderImpl...
Transforming android.support.v4.view.GestureDetectorCompat...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompatIcsMr1...
Transforming android.support.v4.widget.SimpleCursorAdapter$CursorToStringConverter...
Transforming android.support.v4.widget.SearchViewCompat$OnCloseListenerCompat...
Transforming android.support.v4.app.FragmentStatePagerAdapter...
Transforming android.support.v4.view.ViewCompat$JbMr1ViewCompatImpl...
Transforming android.support.v4.view.ScaleGestureDetectorCompat$BaseScaleGestureDetectorImpl...
Transforming android.support.v4.view.ViewPager$OnPageChangeListener...
Transforming android.support.v4.widget.SearchViewCompatHoneycomb$OnQueryTextListenerCompatBridge...
Transforming android.support.v4.widget.ListPopupWindowCompat$KitKatListPopupWindowImpl...
Transforming android.support.v4.print.PrintHelper$PrintHelperKitkatImpl...
Transforming android.support.v4.content.ContextCompatJellybean...
Transforming android.support.v4.widget.ListPopupWindowCompat...
Transforming android.support.v4.view.GravityCompat$GravityCompatImplBase...
Transforming android.support.v4.widget.CursorAdapter$MyDataSetObserver...
Transforming android.support.v4.app.ShareCompat$ShareCompatImplBase...
Transforming android.support.v4.view.ScaleGestureDetectorCompat$ScaleGestureDetectorImpl...
Transforming android.support.v4.net.TrafficStatsCompat$BaseTrafficStatsCompatImpl$SocketTags...
Transforming android.support.v4.view.PagerTitleStrip$PagerTitleStripImplIcs...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompatJellybeanMr2...
Transforming android.support.v4.widget.SearchViewCompatHoneycomb$2...
Transforming android.support.v4.widget.SearchViewCompatHoneycomb$1...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat$AccessibilityNodeProviderJellyBeanImpl...
Transforming android.support.v4.app.FragmentTabHost...
Transforming android.support.v4.content.IntentCompat$IntentCompatImplHC...
Transforming android.support.v4.content.IntentCompat$IntentCompatImplIcsMr1...
Transforming android.support.v4.view.KeyEventCompat$KeyEventVersionImpl...
Transforming android.support.v4.app.ShareCompat$IntentReader...
Transforming android.support.v4.view.ViewCompat$BaseViewCompatImpl...
Transforming android.support.v4.app.ShareCompatJB...
Transforming android.support.v4.view.MotionEventCompatEclair...
Transforming android.support.v4.view.PagerTitleStripIcs...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompat$AccessibilityManagerIcsImpl...
Transforming android.support.v4.view.MarginLayoutParamsCompat$MarginLayoutParamsCompatImplJbMr1...
Transforming android.support.v4.view.MarginLayoutParamsCompat$MarginLayoutParamsCompatImpl...
Transforming android.support.v4.view.ViewCompatGingerbread...
Transforming android.support.v4.view.ViewPager$LayoutParams...
Transforming android.support.v4.widget.SlidingPaneLayout$SlidingPanelLayoutImplJB...
Transforming android.support.v4.view.ViewGroupCompat$ViewGroupCompatIcsImpl...
Transforming android.support.v4.view.ViewConfigurationCompatFroyo...
Transforming android.support.v4.widget.ResourceCursorAdapter...
Transforming android.support.v4.view.MenuItemCompatIcs$OnActionExpandListenerWrapper...
Transforming android.support.v4.view.VelocityTrackerCompat$BaseVelocityTrackerVersionImpl...
Transforming android.support.v4.widget.DrawerLayout$SimpleDrawerListener...
Transforming android.support.v4.view.MarginLayoutParamsCompat$MarginLayoutParamsCompatImplBase...
Transforming com.example.tutorialapplication.R$layout...
Transforming android.support.v4.widget.SlidingPaneLayout$SimplePanelSlideListener...
Transforming android.support.v4.view.ScaleGestureDetectorCompatKitKat...
Transforming android.support.v4.view.GestureDetectorCompat$GestureDetectorCompatImpl...
Transforming android.support.v4.widget.EdgeEffectCompatIcs...
Transforming android.support.v4.util.TimeUtils...
Transforming android.support.v4.app.SuperNotCalledException...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompat$AccessibilityRecordIcsImpl...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompatJellyBean$AccessibilityNodeInfoBridge...
Transforming android.support.v4.widget.SearchViewCompat$SearchViewCompatImpl...
Transforming android.support.v4.content.AsyncTaskLoader...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat$AccessibilityNodeProviderStubImpl...
Transforming android.support.v4.view.ViewGroupCompatJellybeanMR2...
Transforming android.support.v4.view.ViewGroupCompat$ViewGroupCompatStubImpl...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$TextDirectionAlgorithm...
Transforming android.support.v4.widget.ScrollerCompat...
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat$AccessibilityServiceInfoJellyBeanMr2...
Transforming android.support.v4.view.ViewPager$SavedState...
Transforming android.support.v4.app.Fragment$SavedState$1...
Transforming android.support.v4.net.ConnectivityManagerCompat$BaseConnectivityManagerCompatImpl...
Transforming android.support.v4.widget.SlidingPaneLayout$SavedState...
Transforming android.support.v4.app.BackStackState$1...
Transforming android.support.v4.view.ViewCompatEclairMr1...
Transforming android.support.v4.util.MapCollections$ArrayIterator...
Transforming android.support.v4.view.ViewCompat$GBViewCompatImpl...
Transforming android.support.v4.util.SimpleArrayMap...
Transforming android.support.v4.content.pm.ActivityInfoCompat...
Transforming com.example.tutorialapplication.R$id...
Transforming android.support.v4.app.LoaderManager$LoaderCallbacks...
Transforming android.support.v4.view.ViewCompat$ViewCompatImpl...
Transforming android.support.v4.widget.EdgeEffectCompat$EdgeEffectIcsImpl...
Transforming android.support.v4.app.FragmentManagerImpl$4...
Transforming android.support.v4.app.FragmentManagerImpl$5...
Transforming android.support.v4.media.TransportStateListener...
Transforming android.support.v4.app.FragmentManagerImpl$2...
Transforming android.support.v4.app.FragmentManagerImpl$3...
Transforming android.support.v4.app.TaskStackBuilder...
Transforming android.support.v4.app.FragmentManagerImpl$1...
Transforming android.support.v4.app.FragmentManager$OnBackStackChangedListener...
Transforming android.support.v4.widget.SearchViewCompatHoneycomb...
Transforming android.support.v4.view.ViewParentCompat...
Transforming android.support.v4.os.ParcelableCompat$CompatCreator...
Transforming android.support.v4.net.TrafficStatsCompat$IcsTrafficStatsCompatImpl...
Transforming android.support.v4.net.TrafficStatsCompat...
Transforming android.support.v4.view.MenuItemCompatHoneycomb...
Transforming android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl$1...
Transforming android.support.v4.app.TaskStackBuilder$SupportParentable...
Transforming android.support.v4.content.ModernAsyncTask$InternalHandler...
Transforming android.support.v4.app.FragmentContainer...
Transforming android.support.v4.app.Fragment$SavedState...
Transforming android.support.v4.util.ArrayMap...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$TextDirectionHeuristicLocale...
Transforming android.support.v4.widget.CursorAdapter$1...
Transforming android.support.v4.widget.SlidingPaneLayout$SlidingPanelLayoutImplJBMR1...
Transforming android.support.v4.view.ViewPager$OnAdapterChangeListener...
Transforming android.support.v4.content.LocalBroadcastManager...
Transforming android.support.v4.text.TextDirectionHeuristicCompat...
Transforming android.support.v4.widget.ViewDragHelper$1...
Transforming android.support.v4.widget.ViewDragHelper$2...
Transforming android.support.v4.content.CursorLoader...
Transforming android.support.v4.graphics.drawable.DrawableCompat$DrawableImpl...
Transforming android.support.v4.app.FragmentManager...
Transforming android.support.v4.view.ViewCompat$KitKatViewCompatImpl...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompat$AccessibilityStateChangeListenerCompat...
Transforming android.support.v4.view.ViewConfigurationCompat$BaseViewConfigurationVersionImpl...
Transforming android.support.v4.content.ContextCompatFroyo...
Transforming android.support.v4.print.PrintHelper$PrintHelperVersionImpl...
Transforming android.support.v4.app.FragmentManagerState...
Transforming android.support.v4.view.MenuItemCompat$IcsMenuVersionImpl...
Transforming com.example.tutorialapplication.R$attr...
Transforming android.support.v4.internal.view.SupportMenuItem...
Transforming android.support.v4.os.ParcelableCompat...
Transforming android.support.v4.view.ViewPager$PagerObserver...
Transforming android.support.v4.widget.DrawerLayout$ViewDragCallback$1...
Transforming android.support.v4.app.FragmentTabHost$1...
Transforming android.support.v4.accessibilityservice.AccessibilityServiceInfoCompatIcs...
Transforming android.support.v4.text.BidiFormatter$1...
Transforming android.support.v4.view.PagerTitleStrip...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompatIcs$1...
Transforming android.support.v4.view.PagerTitleStrip$PagerTitleStripImplBase...
Transforming android.support.v4.view.MenuItemCompatIcs$SupportActionExpandProxy...
Transforming android.support.v4.net.TrafficStatsCompatIcs...
Transforming android.support.v4.hardware.display.DisplayManagerCompat...
Transforming android.support.v4.graphics.drawable.DrawableCompatKitKat...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompatKitKat...
Transforming android.support.v4.app.NotificationCompatIceCreamSandwich...
Transforming android.support.v4.content.IntentCompat$IntentCompatImplBase...
Transforming android.support.v4.view.GravityCompat$GravityCompatImpl...
Transforming android.support.v4.net.TrafficStatsCompat$TrafficStatsCompatImpl...
Transforming android.support.v4.os.ParcelableCompatCreatorHoneycombMR2Stub...
Transforming android.support.v4.app.NotificationCompat$InboxStyle...
Transforming android.support.v4.view.VelocityTrackerCompat...
Transforming android.support.v4.widget.PopupMenuCompat...
Transforming android.support.v4.content.Loader$OnLoadCompleteListener...
Transforming android.support.v4.net.ConnectivityManagerCompat$HoneycombMR2ConnectivityManagerCompatImpl...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompatKitKat$1...
Transforming android.support.v4.view.PagerTabStrip...
Transforming android.support.v4.app.ActivityOptionsCompat$ActivityOptionsImplJB...
Transforming android.support.v4.view.KeyEventCompat$BaseKeyEventVersionImpl...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityNodeInfoKitKatImpl...
Transforming android.support.v4.app.Fragment$1...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityNodeInfoJellybeanMr2Impl...
Transforming android.support.v4.widget.ScrollerCompat$ScrollerCompatImplGingerbread...
Transforming android.support.v4.app.NotificationCompat...
Transforming android.support.v4.widget.ScrollerCompat$ScrollerCompatImpl...
Transforming android.support.v4.widget.SlidingPaneLayout$PanelSlideListener...
Transforming android.support.v4.view.ViewPager$SavedState$1...
Transforming android.support.v4.media.TransportMediator$2...
Transforming android.support.v4.app.ActionBarDrawerToggleHoneycomb$SetIndicatorInfo...
Transforming android.support.v4.util.ContainerHelpers...
Transforming android.support.v4.view.ScaleGestureDetectorCompat...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompat...
Transforming android.support.v4.media.TransportMediator$1...
Transforming android.support.v4.app.ActionBarDrawerToggle...
Transforming android.support.v4.view.PagerTabStrip$1...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$TextDirectionHeuristicImpl...
Transforming android.support.v4.view.PagerTabStrip$2...
Transforming android.support.v4.view.ViewCompatJellybeanMr1...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityNodeInfoJellybeanImpl...
Transforming android.support.v4.view.accessibility.AccessibilityRecordCompatJellyBean...
Transforming android.support.v4.view.ViewCompat$HCViewCompatImpl...
Transforming android.support.v4.widget.ListViewAutoScrollHelper...
Transforming android.support.v4.view.ViewCompatICS...
Transforming android.support.v4.net.ConnectivityManagerCompat$ConnectivityManagerCompatImpl...
Transforming android.support.v4.view.WindowCompat...
Transforming android.support.v4.graphics.drawable.DrawableCompat...
Transforming android.support.v4.widget.CursorFilter...
Transforming android.support.v4.content.ModernAsyncTask$AsyncTaskResult...
Transforming android.support.v4.widget.ListPopupWindowCompat$ListPopupWindowImpl...
Transforming android.support.v4.view.GravityCompat...
Transforming android.support.v4.view.MotionEventCompat...
Transforming android.support.v4.view.ViewPager$Decor...
Transforming android.support.v4.widget.DrawerLayout$LayoutParams...
Transforming com.example.tutorialapplication.R$dimen...
Transforming android.support.v4.app.ActivityCompat...
Transforming android.support.v4.widget.AutoScrollHelper$ScrollAnimationRunnable...
Transforming android.support.v4.app.NotificationCompat$NotificationCompatImplBase...
Transforming android.support.v4.view.VelocityTrackerCompatHoneycomb...
Transforming android.support.v4.widget.DrawerLayout...
Transforming android.support.v4.app.FragmentPagerAdapter...
Transforming android.support.v4.view.ViewPager$ViewPositionComparator...
Transforming android.support.v4.widget.DrawerLayout$ViewDragCallback...
Transforming android.support.v4.content.IntentCompat$IntentCompatImpl...
Transforming android.support.v4.widget.SlidingPaneLayout$DragHelperCallback...
Transforming android.support.v4.view.ActionProvider$SubUiVisibilityListener...
Transforming android.support.v4.app.TaskStackBuilder$TaskStackBuilderImplBase...
Transforming android.support.v4.app.TaskStackBuilder$TaskStackBuilderImplHoneycomb...
Transforming android.support.v4.view.KeyEventCompatEclair...
Transforming android.support.v4.view.AccessibilityDelegateCompatIcs$1...
Transforming android.support.v4.print.PrintHelper$1...
Transforming android.support.v4.view.VelocityTrackerCompat$HoneycombVelocityTrackerVersionImpl...
Transforming android.support.v4.media.TransportMediatorJellybeanMR2...
Transforming android.support.v4.widget.ListPopupWindowCompatKitKat...
Transforming android.support.v4.app.NoSaveStateFrameLayout...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat...
Transforming android.support.v4.widget.SimpleCursorAdapter$ViewBinder...
Transforming android.support.v4.net.ConnectivityManagerCompat$GingerbreadConnectivityManagerCompatImpl...
Transforming android.support.v4.view.GestureDetectorCompat$GestureDetectorCompatImplJellybeanMr2...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat$AnyStrong...
Transforming android.support.v4.net.ConnectivityManagerCompatHoneycombMR2...
Transforming android.support.v4.view.accessibility.AccessibilityNodeInfoCompatIcs...
Transforming android.support.v4.text.ICUCompat$ICUCompatImplIcs...
Transforming android.support.v4.app.BackStackState...
Transforming android.support.v4.view.accessibility.AccessibilityManagerCompat$AccessibilityManagerStubImpl...
Transforming android.support.v4.app.ShareCompat$ShareCompatImplICS...
Transforming android.support.v4.widget.SearchViewCompatIcs...
Transforming android.support.v4.text.ICUCompat$ICUCompatImplBase...
Transforming android.support.v4.widget.SearchViewCompat$SearchViewCompatStubImpl...
Transforming android.support.v4.app.FragmentActivity$NonConfigurationInstances...
Transforming android.support.v4.widget.SlidingPaneLayout$SlidingPanelLayoutImplBase...
Transforming android.support.v4.widget.SearchViewCompat$SearchViewCompatHoneycombImpl$1...
Transforming android.support.v4.view.ViewParentCompat$ViewParentCompatImpl...
Transforming android.support.v4.widget.SearchViewCompat$SearchViewCompatHoneycombImpl$2...
Transforming android.support.v4.app.NotificationCompat$Action...
Transforming android.support.v4.app.ActionBarDrawerToggle$Delegate...
Transforming android.support.v4.util.MapCollections$KeySet...
Transforming android.support.v4.text.ICUCompatIcs...
Transforming android.support.v4.widget.SlidingPaneLayout$SlidingPanelLayoutImpl...
Transforming android.support.v4.graphics.drawable.DrawableCompat$KitKatDrawableImpl...
Transforming android.support.v4.widget.AutoScrollHelper$ClampedScroller...
Transforming android.support.v4.view.ViewParentCompat$ViewParentCompatStubImpl...
Transforming android.support.v4.view.accessibility.AccessibilityEventCompat$AccessibilityEventStubImpl...
Transforming android.support.v4.text.TextUtilsCompat...
Transforming android.support.v4.app.FragmentManagerState$1...
Transforming android.support.v4.widget.AutoScrollHelper$1...
Transforming android.support.v4.view.ViewGroupCompat$ViewGroupCompatHCImpl...
Transforming android.support.v4.widget.ScrollerCompat$ScrollerCompatImplBase...
Transforming android.support.v4.view.accessibility.AccessibilityNodeProviderCompat$AccessibilityNodeProviderJellyBeanImpl$1...
Transforming android.support.v4.hardware.display.DisplayManagerJellybeanMr1...
Transforming android.support.v4.app.ActionBarDrawerToggle$ActionBarDrawerToggleImplBase...
Transforming android.support.v4.os.EnvironmentCompat...
Transforming android.support.v4.app.NavUtils$NavUtilsImplBase...
Transforming android.support.v4.content.WakefulBroadcastReceiver...
Transforming android.support.v4.app.BackStackRecord...
Transforming android.support.v4.text.TextDirectionHeuristicsCompat...
Transforming android.support.v4.view.MarginLayoutParamsCompat...
Transforming android.support.v4.widget.SlidingPaneLayout$DisableLayerRunnable...
Transforming android.support.v4.text.BidiFormatter...
Transforming android.support.v4.view.ViewPager$ItemInfo...
Transforming android.support.v4.app.ActionBarDrawerToggle$1...
Transforming android.support.v4.app.NotificationCompat$Style...
Transforming android.support.v4.util.LongSparseArray...
Transforming android.support.v4.view.ViewConfigurationCompat$FroyoViewConfigurationVersionImpl...
Transforming dummyMainClass...
Transforming com.example.tutorialapplication.TutorialMainActivity...
36298
More information about the Soot-list
mailing list