<div dir="ltr">Well, I&#39;m quite confused then.  On March 27th 2015, you instructed me to use forceResolve().  If I Scene.v().loadClassAndSupport(), which the Survival guide suggests, it errors out with:<div><br></div><div><div>java.lang.RuntimeException: This operation requires resolving level SIGNATURES but com.android.server.power.PowerManagerService is at resolving level HIERARCHY</div><div>If you are extending Soot, try to add the following call before calling soot.Main.main(..):</div><div>Scene.v().addBasicClass(com.android.server.power.PowerManagerService,SIGNATURES);</div><div>Otherwise, try whole-program mode (-w).</div><div><br></div><div>We are using the -w parameter.  We aren&#39;t extending Soot, so the usage of soot.Main.main(..) doesn&#39;t apply here. We ask Soot to decompile a class and ask for some details about it -- the closest relative would be the RunVeryBusyAnalysis within the Soot Survivor&#39;s guide.</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 27, 2015 at 2:35 AM, Steven Arzt <span dir="ltr">&lt;<a href="mailto:Steven.Arzt@cased.de" target="_blank">Steven.Arzt@cased.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="DE" link="blue" vlink="purple"><div><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Hi Jason,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Please try to avoid using methods such as forceResolve(). As I said, these methods are internals of Soot. Without a very profound understanding of the Soot class loading process, you can run into all sorts of funny behaviors. Internal methods make assumptions about internal stuff. I will only look into this issue any further if it also occurs when using Soot properly – see my last e-mail about Transformers.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Best regards,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">  Steven<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">Von:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> <a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a> [mailto:<a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a>] <b>Im Auftrag von </b>Jason Ott<br><b>Gesendet:</b> Samstag, 25. Juli 2015 01:56<br><b>An:</b> <a href="mailto:soot-list@cs.mcgill.ca" target="_blank">soot-list@cs.mcgill.ca</a><br><b>Betreff:</b> [Soot-list] Inner Class Detection Problem<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">I have a class: <a href="http://androidxref.com/5.1.1_r6/xref/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java#2797" target="_blank">com.android.server.power.PowerManagerService$BinderService</a> which is an inner class.  However, Soot does not see it that way when I try to forceResolve it using: BODIES|HIERARCHY|SIGNATURES (or any combination of them).<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">When I use SootClass.hasOuterClass() on the above resolved class it returns false.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">This is how I resolve the class:<u></u><u></u></p></div><div><pre style="background:#2b2b2b"><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#cc7832">protected synchronized </span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">SootClass </span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#ffc66d">bringClassToScene</span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">(String className) {<br>    SootClass sootClass</span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#cc7832">;<br>    </span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">sootClass = Scene.<i>v</i>().forceResolve(className</span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#cc7832">, </span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">SootClass.</span><i><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#9876aa">BODIES </span></i><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">| SootClass.</span><i><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#9876aa">HIERARCHY </span></i><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">| SootClass.</span><i><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#9876aa">SIGNATURES</span></i><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">)</span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#cc7832">;<br>    </span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">sootClass.setApplicationClass()</span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#cc7832">;<br>    return </span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">sootClass</span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#cc7832">;<br></span><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">}<u></u><u></u></span></pre><pre><br><span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;">So I then invoke:</span><u></u><u></u></pre><pre><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6;background:#2b2b2b">SootClass sootClass = bringClassToScene(&quot;&quot;);</span><u></u><u></u></pre><pre style="background:#2b2b2b"><span style="font-size:12.0pt;font-family:&quot;Menlo&quot;,&quot;serif&quot;;color:#a9b7c6">sootClass.hasOuterClass() //return false<u></u><u></u></span></pre><p class="MsoNormal">I would expect it to return true in this case.<u></u><u></u></p></div></div></div></div></div></div></blockquote></div><br></div>