<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";
color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Consolas",serif;
color:black;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Hi Behnam,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">To get an instrumented APK file, you also need the –output-format apk parameter, otherwise Soot will cross-compile your code to Java bytecode.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><br>
Concerning the exception: Where did you get the platform JARs from? Do not use the ones in the Sable group on Github. Instead, use the ones provided with the official Android SDK that you can download from Google.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> Steven<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext"> Behnam [mailto:behnam@eecs.tufts.edu]
<br>
<b>Sent:</b> Sunday, April 2, 2017 6:56 PM<br>
<b>To:</b> Arzt, Steven <steven.arzt@sit.fraunhofer.de>; Bernhard Berger <berber@tzi.de><br>
<b>Cc:</b> soot-list@cs.mcgill.ca<br>
<b>Subject:</b> Re: [Soot-list] Problem running the Android Instrumentation example<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>Hi Steven,<br>
<br>
I ran the command you suggested and it produces a number of class files in sootOutput directory. But not an instrumented app. How can I achieve that?<br>
<br>
Also, I thought I needed the <a href="https://raw.githubusercontent.com/wiki/Sable/soot/code/androidinstr/AndroidInstrument.java_.txt">
AndroidInstument</a> java file. The moment I add that, I get the same error:<br>
behnam@behnam-Precision-T1600:~/tcal/responsiveness/soot/stable$ /usr/lib/jvm/java-8-oracle/bin/java -jar soot-trunk-nightly.jar AndroidInstrument -cp . -src-prec apk -allow-phantom-refs -android-jars /home/behnam/tcal/responsiveness/soot/stable/android-platforms
-process-dir respdroid.apk<br>
Soot started on Sun Apr 02 12:51:11 EDT 2017<br>
Warning: java.lang.Throwable is a phantom class!<br>
Warning: java.lang.Void is a phantom class!<br>
Warning: java.lang.Float is a phantom class!<br>
Warning: java.lang.Double is a phantom class!<br>
Warning: java.lang.AssertionError is a phantom class!<br>
Warning: java.lang.Integer is a phantom class!<br>
Warning: java.lang.NullPointerException is a phantom class!<br>
Warning: java.lang.Character is a phantom class!<br>
Warning: java.lang.Long is a phantom class!<br>
Warning: java.lang.Short is a phantom class!<br>
Warning: java.lang.StringBuffer is a phantom class!<br>
Warning: java.lang.Boolean is a phantom class!<br>
Warning: java.lang.Class is a phantom class!<br>
Warning: java.lang.Byte is a phantom class!<br>
Warning: java.lang.NoClassDefFoundError is a phantom class!<br>
Warning: java.lang.IndexOutOfBoundsException is a phantom class!<br>
Warning: java.lang.StackOverflowError is a phantom class!<br>
Warning: java.lang.invoke.LambdaMetafactory is a phantom class!<br>
Warning: java.lang.Error is a phantom class!<br>
Warning: java.lang.AbstractMethodError is a phantom class!<br>
Warning: java.lang.ClassCastException is a phantom class!<br>
Warning: java.lang.Runnable is a phantom class!<br>
Warning: java.lang.VerifyError is a phantom class!<br>
Warning: java.lang.NoSuchFieldError is a phantom class!<br>
Warning: java.lang.IllegalMonitorStateException is a phantom class!<br>
Warning: java.lang.Thread is a phantom class!<br>
Warning: java.lang.UnknownError is a phantom class!<br>
Warning: java.lang.InternalError is a phantom class!<br>
Warning: java.lang.ArithmeticException is a phantom class!<br>
Warning: java.lang.String is a phantom class!<br>
Warning: java.lang.NegativeArraySizeException is a phantom class!<br>
Warning: java.lang.ClassCircularityError is a phantom class!<br>
Warning: java.lang.Cloneable is a phantom class!<br>
Warning: java.lang.ref.Finalizer is a phantom class!<br>
Warning: java.lang.LinkageError is a phantom class!<br>
Warning: java.lang.IncompatibleClassChangeError is a phantom class!<br>
Warning: java.lang.NoSuchMethodError is a phantom class!<br>
Warning: java.lang.RuntimeException is a phantom class!<br>
Warning: java.lang.ArrayIndexOutOfBoundsException is a phantom class!<br>
Warning: java.lang.ThreadDeath is a phantom class!<br>
Warning: java.io.Serializable is a phantom class!<br>
Warning: java.lang.InstantiationError is a phantom class!<br>
Warning: java.lang.IllegalAccessError is a phantom class!<br>
Warning: java.lang.Object is a phantom class!<br>
Warning: java.lang.ClassNotFoundException is a phantom class!<br>
Warning: java.lang.ClassFormatError is a phantom class!<br>
Warning: java.lang.UnsatisfiedLinkError is a phantom class!<br>
Warning: java.lang.ArrayStoreException is a phantom class!<br>
Warning: java.lang.ExceptionInInitializerError is a phantom class!<br>
Warning: java.lang.OutOfMemoryError is a phantom class!<br>
Exception in thread "main" java.lang.Error: Error: Failed to load java.util.Map$Entry.<br>
at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)<br>
at soot.JastAddJ.Program.getCompilationUnit(Program.java:873)<br>
at soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1517)<br>
at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1500)<br>
at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1465)<br>
at soot.JastAddJ.Program.lookupLibType(Program.java:1433)<br>
at soot.JastAddJ.Program.lookupType_compute(Program.java:1412)<br>
at soot.JastAddJ.Program.lookupType(Program.java:1393)<br>
at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1981)<br>
at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<br>
at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<br>
at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<br>
at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<br>
at soot.JastAddJ.Expr.lookupType(Expr.java:1186)<br>
at soot.JastAddJ.TypeAccess.decls_compute(TypeAccess.java:425)<br>
at soot.JastAddJ.TypeAccess.decls(TypeAccess.java:414)<br>
at soot.JastAddJ.TypeAccess.refined_TypeScopePropagation_TypeAccess_decl(TypeAccess.java:387)<br>
at soot.JastAddJ.TypeAccess.decl_compute(TypeAccess.java:460)<br>
at soot.JastAddJ.TypeAccess.decl(TypeAccess.java:452)<br>
at soot.JastAddJ.TypeAccess.type_compute(TypeAccess.java:590)<br>
at soot.JastAddJ.TypeAccess.type(TypeAccess.java:583)<br>
at soot.JastAddJ.CompilationUnit.refined_NameCheck_CompilationUnit_nameCheck(CompilationUnit.java:200)<br>
at soot.JastAddJ.CompilationUnit.nameCheck(CompilationUnit.java:611)<br>
at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1283)<br>
at soot.JastAddJ.CompilationUnit.errorCheck(CompilationUnit.java:178)<br>
at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:58)<br>
at soot.JavaClassSource.resolve(JavaClassSource.java:54)<br>
at soot.SootResolver.bringToHierarchy(SootResolver.java:243)<br>
at soot.SootResolver.bringToSignatures(SootResolver.java:275)<br>
at soot.SootResolver.processResolveWorklist(SootResolver.java:173)<br>
at soot.SootResolver.resolveClass(SootResolver.java:134)<br>
at soot.Scene.loadClass(Scene.java:873)<br>
at soot.Scene.loadClassAndSupport(Scene.java:858)<br>
at soot.Scene.loadNecessaryClass(Scene.java:1575)<br>
at soot.Scene.loadNecessaryClasses(Scene.java:1586)<br>
at soot.Main.run(Main.java:250)<br>
at soot.Main.main(Main.java:147)<br>
Caused by: java.lang.RuntimeException: java.lang.ClassCastException: soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to soot.JastAddJ.CONSTANT_Class_Info<br>
at soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:424)<br>
at soot.JastAddJ.Attributes$TypeAttributes.processAttribute(Attributes.java:316)<br>
at soot.JastAddJ.Attributes.attributes(Attributes.java:61)<br>
at soot.JastAddJ.Attributes$TypeAttributes.<init>(Attributes.java:307)<br>
at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:337)<br>
at soot.JastAddJ.BytecodeParser.read(BytecodeParser.java:27)<br>
at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)<br>
... 36 more<br>
Caused by: java.lang.ClassCastException: soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to soot.JastAddJ.CONSTANT_Class_Info<br>
at soot.JastAddJ.BytecodeParser.parseThisClass(BytecodeParser.java:437)<br>
at soot.JastAddJ.BytecodeParser.parseTypeDecl(BytecodeParser.java:404)<br>
at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:331)<br>
at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:301)<br>
at soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:405)<br>
... 42 more<o:p></o:p></p>
<p>Thanks for the support.<o:p></o:p></p>
<p><o:p> </o:p></p>
<p>Bests,<br>
<br>
Behnam<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 03/30/2017 12:48 PM, Arzt, Steven wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Behnam,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I'm not sure why you prepend the VM's classpath to the Soot classpath and I don't think it's necessary for your scenario. Can you try the following command line:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>/usr/lib/jvm/java-8-oracle/bin/java -jar soot-trunk-nightly.jar -cp . -src-prec apk -allow-phantom-refs -android-jars /home/behnam/tcal/responsiveness/soot/stable/android-platforms <o:p></o:p></pre>
</blockquote>
<pre>-process-dir respdroid.apk<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I hope that does the trick.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Best regards,<o:p></o:p></pre>
<pre> Steven<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>-----Original Message-----<o:p></o:p></pre>
<pre>From: Soot-list [<a href="mailto:soot-list-bounces@cs.mcgill.ca">mailto:soot-list-bounces@cs.mcgill.ca</a>] On Behalf Of Behnam<o:p></o:p></pre>
<pre>Sent: Thursday, March 30, 2017 3:05 PM<o:p></o:p></pre>
<pre>To: Bernhard Berger <a href="mailto:berber@tzi.de"><berber@tzi.de></a><o:p></o:p></pre>
<pre>Cc: <a href="mailto:soot-list@cs.mcgill.ca">soot-list@cs.mcgill.ca</a><o:p></o:p></pre>
<pre>Subject: Re: [Soot-list] Problem running the Android Instrumentation example<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Hi Bernhard,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Thank you. I added the -src-prec and this is what I get when I run soot with java-1.7:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>behnam@behnam-Precision-T1600:~/tcal/responsiveness/soot/stable$ <o:p></o:p></pre>
<pre>/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -cp <o:p></o:p></pre>
<pre>soot-trunk-nightly.jar soot.Main -cp . -pp AndroidInstrument -src-prec <o:p></o:p></pre>
<pre>apk -android-jars <o:p></o:p></pre>
<pre>/home/behnam/tcal/responsiveness/soot/stable/android-platforms <o:p></o:p></pre>
<pre>-process-dir respdroid.apk<o:p></o:p></pre>
<pre>Soot started on Thu Mar 30 08:55:06 EDT 2017<o:p></o:p></pre>
<pre>Using <o:p></o:p></pre>
<pre>'/home/behnam/tcal/responsiveness/soot/stable/android-platforms/android-17/android.jar' <o:p></o:p></pre>
<pre>as android.jar<o:p></o:p></pre>
<pre>Exception in thread "main" java.lang.NoSuchMethodError: <o:p></o:p></pre>
<pre>java.util.Map.putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;<o:p></o:p></pre>
<pre> at soot.util.StringNumberer.findOrAdd(StringNumberer.java:38)<o:p></o:p></pre>
<pre> at soot.SootMethod.<init>(SootMethod.java:179)<o:p></o:p></pre>
<pre> at soot.asm.SootClassBuilder.visitMethod(SootClassBuilder.java:164)<o:p></o:p></pre>
<pre> at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:911)<o:p></o:p></pre>
<pre> at org.objectweb.asm.ClassReader.accept(ClassReader.java:693)<o:p></o:p></pre>
<pre> at org.objectweb.asm.ClassReader.accept(ClassReader.java:506)<o:p></o:p></pre>
<pre> at soot.asm.AsmClassSource.resolve(AsmClassSource.java:59)<o:p></o:p></pre>
<pre> at soot.SootResolver.bringToHierarchy(SootResolver.java:243)<o:p></o:p></pre>
<pre> at soot.SootResolver.bringToSignatures(SootResolver.java:275)<o:p></o:p></pre>
<pre> at soot.SootResolver.processResolveWorklist(SootResolver.java:173)<o:p></o:p></pre>
<pre> at soot.SootResolver.resolveClass(SootResolver.java:134)<o:p></o:p></pre>
<pre> at soot.Scene.tryLoadClass(Scene.java:842)<o:p></o:p></pre>
<pre> at soot.Scene.loadBasicClasses(Scene.java:1504)<o:p></o:p></pre>
<pre> at soot.Scene.loadNecessaryClasses(Scene.java:1583)<o:p></o:p></pre>
<pre> at soot.Main.run(Main.java:250)<o:p></o:p></pre>
<pre> at soot.Main.main(Main.java:147)<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I did some research and noticed that the function Map.putIfAbsent is not <o:p></o:p></pre>
<pre>present in Java 7, and was only introduced in Java 8. So I use Java 8 to <o:p></o:p></pre>
<pre>execute Soot, and this happens:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>behnam@behnam-Precision-T1600:~/tcal/responsiveness/soot/stable$ <o:p></o:p></pre>
<pre>/usr/lib/jvm/java-8-oracle/bin/java -cp soot-trunk-nightly.jar soot.Main <o:p></o:p></pre>
<pre>-cp . -pp AndroidInstrument -src-prec apk -android-jars <o:p></o:p></pre>
<pre>/home/behnam/tcal/responsiveness/soot/stable/android-platforms <o:p></o:p></pre>
<pre>-process-dir respdroid.apk<o:p></o:p></pre>
<pre>Soot started on Thu Mar 30 08:59:10 EDT 2017<o:p></o:p></pre>
<pre>Using <o:p></o:p></pre>
<pre>'/home/behnam/tcal/responsiveness/soot/stable/android-platforms/android-17/android.jar' <o:p></o:p></pre>
<pre>as android.jar<o:p></o:p></pre>
<pre>Exception in thread "main" java.lang.Error: Error: Failed to load <o:p></o:p></pre>
<pre>java.util.Map$Entry.<o:p></o:p></pre>
<pre> at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.getCompilationUnit(Program.java:873)<o:p></o:p></pre>
<pre> at <o:p></o:p></pre>
<pre>soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1517)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1500)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1465)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupLibType(Program.java:1433)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupType_compute(Program.java:1412)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupType(Program.java:1393)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1981)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Expr.lookupType(Expr.java:1186)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decls_compute(TypeAccess.java:425)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decls(TypeAccess.java:414)<o:p></o:p></pre>
<pre> at <o:p></o:p></pre>
<pre>soot.JastAddJ.TypeAccess.refined_TypeScopePropagation_TypeAccess_decl(TypeAccess.java:387)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decl_compute(TypeAccess.java:460)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decl(TypeAccess.java:452)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.type_compute(TypeAccess.java:590)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.type(TypeAccess.java:583)<o:p></o:p></pre>
<pre> at <o:p></o:p></pre>
<pre>soot.JastAddJ.CompilationUnit.refined_NameCheck_CompilationUnit_nameCheck(CompilationUnit.java:200)<o:p></o:p></pre>
<pre> at soot.JastAddJ.CompilationUnit.nameCheck(CompilationUnit.java:611)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1283)<o:p></o:p></pre>
<pre> at soot.JastAddJ.CompilationUnit.errorCheck(CompilationUnit.java:178)<o:p></o:p></pre>
<pre> at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:58)<o:p></o:p></pre>
<pre> at soot.JavaClassSource.resolve(JavaClassSource.java:54)<o:p></o:p></pre>
<pre> at soot.SootResolver.bringToHierarchy(SootResolver.java:243)<o:p></o:p></pre>
<pre> at soot.SootResolver.bringToSignatures(SootResolver.java:275)<o:p></o:p></pre>
<pre> at soot.SootResolver.processResolveWorklist(SootResolver.java:173)<o:p></o:p></pre>
<pre> at soot.SootResolver.resolveClass(SootResolver.java:134)<o:p></o:p></pre>
<pre> at soot.Scene.loadClass(Scene.java:873)<o:p></o:p></pre>
<pre> at soot.Scene.loadClassAndSupport(Scene.java:858)<o:p></o:p></pre>
<pre> at soot.Scene.loadNecessaryClass(Scene.java:1575)<o:p></o:p></pre>
<pre> at soot.Scene.loadNecessaryClasses(Scene.java:1586)<o:p></o:p></pre>
<pre> at soot.Main.run(Main.java:250)<o:p></o:p></pre>
<pre> at soot.Main.main(Main.java:147)<o:p></o:p></pre>
<pre>Caused by: java.lang.RuntimeException: java.lang.ClassCastException: <o:p></o:p></pre>
<pre>soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to <o:p></o:p></pre>
<pre>soot.JastAddJ.CONSTANT_Class_Info<o:p></o:p></pre>
<pre> at <o:p></o:p></pre>
<pre>soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:424)<o:p></o:p></pre>
<pre> at <o:p></o:p></pre>
<pre>soot.JastAddJ.Attributes$TypeAttributes.processAttribute(Attributes.java:316)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes.attributes(Attributes.java:61)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes$TypeAttributes.<init>(Attributes.java:307)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:337)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.read(BytecodeParser.java:27)<o:p></o:p></pre>
<pre> at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)<o:p></o:p></pre>
<pre> ... 36 more<o:p></o:p></pre>
<pre>Caused by: java.lang.ClassCastException: <o:p></o:p></pre>
<pre>soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to <o:p></o:p></pre>
<pre>soot.JastAddJ.CONSTANT_Class_Info<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parseThisClass(BytecodeParser.java:437)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parseTypeDecl(BytecodeParser.java:404)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:331)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:301)<o:p></o:p></pre>
<pre> at <o:p></o:p></pre>
<pre>soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:405)<o:p></o:p></pre>
<pre> ... 42 more<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Now I am not sure if I should use Java 8 or 7. And searching online, I <o:p></o:p></pre>
<pre>did not find any solutions to either.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Thank you for helping me.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Bests,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Behnam<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>On 03/30/2017 02:07 AM, Bernhard Berger wrote:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Behnam,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I’m not quite sure if this may help but I’ve two pointers for you: First of all, you forgot to use the -src-prec option. The log says: "APK file on process dir, but chosen src-prec does not support loading APKs“. Secondly, it looks like Soot is using the Java frontend (it’s parsing the Java files) which fails to load the java.util.Map$Entry. Try using the -src-prec apk option. I hope this will fix your problem.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Regards, Bernhard<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Am 29.03.2017 um 23:09 schrieb Behnam <a href="mailto:behnam@eecs.tufts.edu"><behnam@eecs.tufts.edu></a>:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Hi all,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I'm still stuck here. Any help is so much appreciated.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Bests,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>-Behnam<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>On 03/16/2017 03:52 AM, Behnam wrote:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi All,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I am trying to run the example AndroidInstrument driver on a very simple app, and after hours of work, this is where I am stuck.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>behnam@behnam-Precision-T1600:~/tcal/responsiveness/soot/stable$ /usr/lib/jvm/java-8-oracle/bin/java -cp soot-trunk-nightly.jar soot.Main -cp . -pp AndroidInstrument -android-jars /home/behnam/tcal/responsiveness/soot/stable/android-platforms -process-dir respdroid.apk<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Soot started on Thu Mar 16 03:40:27 EDT 2017<o:p></o:p></pre>
<pre>APK file on process dir, but chosen src-prec does not support loading APKs<o:p></o:p></pre>
<pre>Exception in thread "main" java.lang.Error: Error: Failed to load java.util.Map$Entry.<o:p></o:p></pre>
<pre> at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.getCompilationUnit(Program.java:844)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1517)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1500)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1465)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupLibType(Program.java:1433)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupType_compute(Program.java:1412)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.lookupType(Program.java:1393)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1981)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Expr.lookupType(Expr.java:1186)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decls_compute(TypeAccess.java:425)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decls(TypeAccess.java:414)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.refined_TypeScopePropagation_TypeAccess_decl(TypeAccess.java:387)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decl_compute(TypeAccess.java:460)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.decl(TypeAccess.java:452)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.type_compute(TypeAccess.java:590)<o:p></o:p></pre>
<pre> at soot.JastAddJ.TypeAccess.type(TypeAccess.java:583)<o:p></o:p></pre>
<pre> at soot.JastAddJ.CompilationUnit.refined_NameCheck_CompilationUnit_nameCheck(CompilationUnit.java:200)<o:p></o:p></pre>
<pre> at soot.JastAddJ.CompilationUnit.nameCheck(CompilationUnit.java:611)<o:p></o:p></pre>
<pre> at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1283)<o:p></o:p></pre>
<pre> at soot.JastAddJ.CompilationUnit.errorCheck(CompilationUnit.java:178)<o:p></o:p></pre>
<pre> at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:58)<o:p></o:p></pre>
<pre> at soot.JavaClassSource.resolve(JavaClassSource.java:54)<o:p></o:p></pre>
<pre> at soot.SootResolver.bringToHierarchy(SootResolver.java:243)<o:p></o:p></pre>
<pre> at soot.SootResolver.bringToSignatures(SootResolver.java:275)<o:p></o:p></pre>
<pre> at soot.SootResolver.processResolveWorklist(SootResolver.java:173)<o:p></o:p></pre>
<pre> at soot.SootResolver.resolveClass(SootResolver.java:134)<o:p></o:p></pre>
<pre> at soot.Scene.loadClass(Scene.java:873)<o:p></o:p></pre>
<pre> at soot.Scene.loadClassAndSupport(Scene.java:858)<o:p></o:p></pre>
<pre> at soot.Scene.loadNecessaryClass(Scene.java:1575)<o:p></o:p></pre>
<pre> at soot.Scene.loadNecessaryClasses(Scene.java:1586)<o:p></o:p></pre>
<pre> at soot.Main.run(Main.java:250)<o:p></o:p></pre>
<pre> at soot.Main.main(Main.java:147)<o:p></o:p></pre>
<pre>Caused by: java.lang.RuntimeException: java.lang.ClassCastException: soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to soot.JastAddJ.CONSTANT_Class_Info<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:424)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes$TypeAttributes.processAttribute(Attributes.java:316)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes.attributes(Attributes.java:61)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes$TypeAttributes.<init>(Attributes.java:307)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:337)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.read(BytecodeParser.java:27)<o:p></o:p></pre>
<pre> at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)<o:p></o:p></pre>
<pre> ... 36 more<o:p></o:p></pre>
<pre>Caused by: java.lang.ClassCastException: soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to soot.JastAddJ.CONSTANT_Class_Info<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parseThisClass(BytecodeParser.java:437)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parseTypeDecl(BytecodeParser.java:404)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:331)<o:p></o:p></pre>
<pre> at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:301)<o:p></o:p></pre>
<pre> at soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:405)<o:p></o:p></pre>
<pre> ... 42 more<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Note 1: the app's target api was 17.<o:p></o:p></pre>
<pre>Note 2: I used the default JDK for Android Studio, which is 1.8.<o:p></o:p></pre>
<pre>Note 3: AndroidInstrument is the same exact example file from Soot Android Instrumentation tutorial.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I would highly appreciate any help.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>-Behnam<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
</blockquote>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Soot-list mailing list<o:p></o:p></pre>
<pre><a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><o:p></o:p></pre>
<pre><a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
</blockquote>
</blockquote>
<pre><o:p> </o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Soot-list mailing list<o:p></o:p></pre>
<pre><a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><o:p></o:p></pre>
<pre><a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>