Open mysterymagination opened 10 years ago
Hello,
try following these steps:
In Eclipse, right click your project, navigate to "Build Path", then to "configure build path" Now choose "add External Jar" Navigate to the RootToolshttps://code.google.com/p/roottools/wiki/RootTools .jar file you download and choose it. Navigate to "Order and Export" make sure the box is ticked next to the library, and move it to the top of the list. Finish up by choosing "ok"
On Thu, Feb 27, 2014 at 5:12 PM, Jeff Creswell notifications@github.comwrote:
I followed the directions on the RootTools usage and run Java as root wiki pages, but when I load my app with the following in onCreate() I get a ClassNotFoundException: com.stericson.RootTools.containers.RootClass:
import com.stericson.RootTools.RootTools; import com.stericson.RootTools.containers.RootClass; import com.stericson.RootTools.exceptions.RootDeniedException; import com.stericson.RootTools.execution.CommandCapture; import com.stericson.RootTools.execution.JavaCommandCapture; import com.stericson.RootTools.execution.Shell; ... @Override https://github.com/Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
RootTools.debugMode = true; //ON RootTools.log("roottools is logging"); RootTools.handlerEnabled = false;
Shell shell; try { shell = RootTools.getShell(true); JavaCommandCapture cmd = new JavaCommandCapture( 43, false, this, "com.mycompany.TestActivity.RootToolsTest") {
@Override public void commandOutput(int id, String line) { super.commandOutput(id, line); } }; shell.add(cmd);
} catch (Exception e) { e.printStackTrace(); }
... @RootClass.Candidate private class RootToolsTest{ public RootToolsTest(){ Log.d("RootToolsTest", "testing a Java class run as root"); } }
The same thing happened when I tried RootTools' test class com.stericson.RootToolsTests.NativeJavaClass. I've tried a number of configurations for the placement and inclusion of the RootTools.jar file (most notably ensuring that the RootTools jar is checked for export and moved to the top of the order and export list in Eclipse) but the ClassNotFoundException persists. The exact logcat output follows:
06-02 07:27:45.529: D/RootTools v3.4(5165): roottools is logging 06-02 07:27:45.529: D/RootTools v3.4(5165): Starting Root Shell! 06-02 07:27:45.539: D/RootTools v3.4(5165): Starting shell: su 06-02 07:27:46.409: D/RootTools v3.4(5165): CommandHandler not created 06-02 07:27:46.429: D/RootTools v3.4(5165): Executing: dalvikvm -cp /data/data /com.hdradio.fmdelverrooted/files/anbuild.dex com.android.internal.util.WithFramework com.stericson.RootTools.containers.RootClass com.hdradio.fmdelver.core.DelverActivity.RootToolsTest 06-02 07:27:46.749: D/Command(5165): ID: 43, java.lang.ClassNotFoundException: com.stericson.RootTools.containers.RootClass 06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.classForName(Native Method) 06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.forName(Class.java:217) 06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.forName(Class.java:172) 06-02 07:27:46.769: D/Command(5165): ID: 43,at com.android.internal.util.WithFramework.main(WithFramework.java:36) 06-02 07:27:46.769: D/Command(5165): ID: 43,at dalvik.system.NativeStart.main(Native Method) 06-02 07:27:46.769: D/Command(5165): ID: 43, Caused by: java.lang.NoClassDefFoundError: com/stericson/RootTools/containers/RootClass 06-02 07:27:46.769: D/Command(5165): ID: 43, ... 5 more 06-02 07:27:46.769: D/Command(5165): ID: 43, Caused by: java.lang.ClassNotFoundException: com.stericson.RootTools.containers.RootClass 06-02 07:27:46.769: D/Command(5165): ID: 43,at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 06-02 07:27:46.769: D/Command(5165): ID: 43,at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 06-02 07:27:46.769: D/Command(5165): ID: 43, at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 06-02 07:27:46.769: D/Command(5165): ID: 43, ... 5 more 06-02 07:27:46.979: D/RootTools v3.4(5165): Command 43 finished.
My .classpath looks like:
<?xml version="1.0" encoding="UTF-8"?>
path="com.android.ide.eclipse.adt.LIBRARIES"/> path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
My development system configuration is as follows: OS: Mac OS X 10.9.2 Eclipse: Kepler ADT: 22.3
and my target platform: Android: 4.1.1 Model: Sony Xperia E C1504 (rooted using SRSRoot and the 'Gandalf' exploit) Firmware: Stock Kernel Xperia E C1505_11.3.A.0.47 (supposed to work for C1504 as well)
Any ideas why Android can't find the com.stericson.RootTools.containers.RootClass class?
Reply to this email directly or view it on GitHubhttps://github.com/Stericson/RootTools/issues/2 .
Hi Stephen, I tried your steps above, but the result was the same-- ClassNotFoundException for com.stericson.RootTools.containers.RootClass thanks, ccj
could something going wrong during the construction of anbuild.dex cause this error? I've cleaned the project, removed the old anbuild.dex, rebuilt the project and then anbuild.dex, and re-installed the app but the ClassNotFoundException persists. How can I verify that the contents of anbuild.dex are correct?
sidenote: OSX creates .DS_Store files in any directory Finder has entered to keep track of metadata for the GUI; if an OSX user has entered $ANDROID_HOME/build-tools with Finder the .DS_Store file will screw up the execution of com.stericson.RootTools.containers.RootClass in the method getPathToDx() which assumes that only relevant SDK version directories will be present. Specifically, a NumberFormatException is thrown from Integer.parseInt("") because split(".") executed on .DS_Store returns the empty string to index 0 of the resultant String array. A workaround is for the user to ensure only relevant SDK version directories are present in build-tools, but some extra validation in RootClass might be handy. Thanks!
Can there be more than one @RootClass.candidate annotated class in an app using JavaCommandCapture? I looked at the dexdump of my anbuild.dex and I only saw instances of com.stericson.RootTools.containers.RootClass associated with one of my annotations, and not the one I was currently testing in the app which winds up throwing ClassNotFoundException for RootClass
Hi sorry for only realizing now that we had an issue thread open here.
You can use the candidate annotation with multiple classes and they should all end up in the dex file.
OK the parseInt() error is goofy I'll fix that (unless Stephen gets around to doing it first)
Note that the code you posted is about a private class. This is not a class that can ever be invoked by anyone.
BTW, beyond the wiki documentation, you can look into a real application: https://github.com/Fusion/BambooGarden
In JavaCommandCapture's constructor parameters, what is the significance of the id argument?
I tried including the RootTools source code with my app build, but the result is the same as above. Below follows the unfiltered logcat history around when I use JavaCommandCapture:
[CODE]
03-06 15:39:53.969: D/RootTools v3.4(3261): roottools is logging
03-06 15:39:53.969: D/RootTools v3.4(3261): Starting Root Shell!
03-06 15:39:53.969: D/RootTools v3.4(3261): Starting shell: su
03-06 15:39:54.019: E/su(3275): sudb - Opening database
03-06 15:39:54.019: E/su(3275): sudb - Database opened
03-06 15:39:54.029: E/su(3275): sudb - Database closed
03-06 15:39:54.519: D/dalvikvm(3278): GC_CONCURRENT freed 103K, 80% free 513K/2560K, paused 0ms+3ms, total 11ms
03-06 15:39:54.529: W/LocaleUtil(3058): locale = en_US
03-06 15:39:54.529: W/LocaleUtil(3058): scriptSubtag = Latn
03-06 15:39:54.749: D/su(3275): 10140 com.mycompany.fmdelverrooted executing 0 /system/bin/sh using shell /system/bin/sh : sh
03-06 15:39:54.759: D/RootTools v3.4(3261): CommandHandler not created
03-06 15:39:54.779: D/RootTools v3.4(3261): Executing: dalvikvm -cp /data/data/com.mycompany.fmdelverrooted/files/anbuild.dex com.android.internal.util.WithFramework com.stericson.RootTools.containers.RootClass com.mycompany.fmdelver.core.DelverActivity.RootToolsTest
03-06 15:39:54.979: I/Adreno200-EGL(3261):
[/CODE]
Interestingly, since I had to re-root my phone for unrelated reasons and SuperUser had to rewrite its white-list, I got to see that the SuperUser prompt for root permissions does rise for the user to accept or decline when my app tries to use JavaCommandCapture. After pressing 'accept' and seeing the '
and here is the dexdump content of my anbuild.dex file: [CODE] Processing './anbuild.dex'... Opened './anbuild.dex', DEX version '035' Class #0 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$1;' Access flags : 0x0000 () Superclass : 'Lcom/stericson/RootTools/execution/JavaCommandCapture;' Interfaces - Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;IZLandroid/content/Context;[Ljava/lang/String;)V'
access : 0x10080 (VARARGS CONSTRUCTOR)
code -
registers : 6
ins : 6
outs : 5
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=63
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$1;
0x0000 - 0x0006 reg=2 $anonymous0 I
0x0000 - 0x0006 reg=3 $anonymous1 Z
0x0000 - 0x0006 reg=4 $anonymous2 Landroid/content/Context;
0x0000 - 0x0006 reg=5 $anonymous3 [Ljava/lang/String;
Virtual methods -
name : 'commandOutput'
type : '(ILjava/lang/String;)V'
access : 0x0001 (PUBLIC)
code -
registers : 3
ins : 3
outs : 3
insns size : 4 16-bit code units
catches : (none)
positions :
0x0000 line=71
0x0003 line=73
locals :
0x0000 - 0x0004 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$1;
0x0000 - 0x0004 reg=1 id I
0x0000 - 0x0004 reg=2 line Ljava/lang/String;
source_file_idx : 33 (DelverActivity.java)
Class #1 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$2;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
#1 : (in Lcom/mycompany/fmdelver/core/DelverActivity$2;)
name : 'val$subclass'
type : 'Ljava/lang/Thread$UncaughtExceptionHandler;'
access : 0x1012 (PRIVATE FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;Ljava/lang/Thread$UncaughtExceptionHandler;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 3
ins : 3
outs : 1
insns size : 8 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0004 line=99
locals :
0x0000 - 0x0008 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$2;
Virtual methods -
name : 'uncaughtException'
type : '(Ljava/lang/Thread;Ljava/lang/Throwable;)V'
access : 0x0001 (PUBLIC)
code -
registers : 6
ins : 3
outs : 3
insns size : 33 16-bit code units
catches : (none)
positions :
0x0000 line=102
0x0003 line=103
0x001b line=105
0x0020 line=106
locals :
0x0000 - 0x0021 reg=3 this Lcom/mycompany/fmdelver/core/DelverActivity$2;
0x0000 - 0x0021 reg=4 paramThread Ljava/lang/Thread;
0x0000 - 0x0021 reg=5 paramThrowable Ljava/lang/Throwable;
source_file_idx : 33 (DelverActivity.java)
Class #2 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$3;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=159
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$3;
Virtual methods -
name : 'onClick'
type : '(Landroid/view/View;)V'
access : 0x0001 (PUBLIC)
code -
registers : 7
ins : 2
outs : 2
insns size : 50 16-bit code units
catches : 1
0x0000 - 0x0023
Ljava/io/IOException; -> 0x002d
positions :
0x0000 line=165
0x000c line=166
0x0023 line=172
0x002c line=180
0x002d line=167
0x002e line=169
locals :
0x000c - 0x0023 reg=0 assetsList [Ljava/lang/String;
0x002e - 0x0032 reg=1 e Ljava/io/IOException;
0x0000 - 0x0032 reg=5 this Lcom/mycompany/fmdelver/core/DelverActivity$3;
0x0000 - 0x0032 reg=6 arg0 Landroid/view/View;
source_file_idx : 33 (DelverActivity.java)
Class #3 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$4;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=189
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$4;
Virtual methods -
name : 'onClick'
type : '(Landroid/view/View;)V'
access : 0x0001 (PUBLIC)
code -
registers : 2
ins : 2
outs : 0
insns size : 4 16-bit code units
catches : (none)
positions :
0x0000 line=195
0x0003 line=198
locals :
0x0000 - 0x0004 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$4;
0x0000 - 0x0004 reg=1 v Landroid/view/View;
source_file_idx : 33 (DelverActivity.java)
Class #4 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$5;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=202
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$5;
Virtual methods -
name : 'onClick'
type : '(Landroid/view/View;)V'
access : 0x0001 (PUBLIC)
code -
registers : 2
ins : 2
outs : 0
insns size : 4 16-bit code units
catches : (none)
positions :
0x0000 line=207
0x0003 line=210
locals :
0x0000 - 0x0004 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$5;
0x0000 - 0x0004 reg=1 v Landroid/view/View;
source_file_idx : 33 (DelverActivity.java)
Class #5 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$6;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=214
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$6;
Virtual methods -
name : 'onClick'
type : '(Landroid/view/View;)V'
access : 0x0001 (PUBLIC)
code -
registers : 4
ins : 2
outs : 2
insns size : 32 16-bit code units
catches : (none)
positions :
0x0000 line=219
0x000a line=220
0x000f line=226
0x0010 line=222
0x001a line=223
locals :
0x0000 - 0x0020 reg=2 this Lcom/mycompany/fmdelver/core/DelverActivity$6;
0x0000 - 0x0020 reg=3 v Landroid/view/View;
source_file_idx : 33 (DelverActivity.java)
Class #6 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$7;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=230
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$7;
Virtual methods -
name : 'onClick'
type : '(Landroid/view/View;)V'
access : 0x0001 (PUBLIC)
code -
registers : 6
ins : 2
outs : 2
insns size : 45 16-bit code units
catches : (none)
positions :
0x0000 line=235
0x000a line=238
0x0014 line=239
0x0018 line=240
0x002c line=243
locals :
0x0018 - 0x002c reg=0 v4l2_result I
0x0000 - 0x002d reg=4 this Lcom/mycompany/fmdelver/core/DelverActivity$7;
0x0000 - 0x002d reg=5 v Landroid/view/View;
source_file_idx : 33 (DelverActivity.java)
Class #7 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$8;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=281
locals :
0x0000 - 0x0006 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity$8;
Virtual methods -
name : 'onClick'
type : '(Landroid/view/View;)V'
access : 0x0001 (PUBLIC)
code -
registers : 6
ins : 2
outs : 3
insns size : 29 16-bit code units
catches : (none)
positions :
0x0000 line=287
0x001c line=288
locals :
0x0000 - 0x001d reg=4 this Lcom/mycompany/fmdelver/core/DelverActivity$8;
0x0000 - 0x001d reg=5 v Landroid/view/View;
source_file_idx : 33 (DelverActivity.java)
Class #8 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity$RootToolsTest;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces - Static fields - Instance fields -
name : 'this$0'
type : 'Lcom/mycompany/fmdelver/core/DelverActivity;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;Lcom/stericson/RootTools/containers/RootClass$RootArgs;)V'
access : 0x10001 (PUBLIC CONSTRUCTOR)
code -
registers : 5
ins : 3
outs : 2
insns size : 13 16-bit code units
catches : (none)
positions :
0x0000 line=317
0x0005 line=318
0x000c line=319
locals :
0x0000 - 0x000d reg=2 this Lcom/mycompany/fmdelver/core/DelverActivity$RootToolsTest;
0x0000 - 0x000d reg=4 args Lcom/stericson/RootTools/containers/RootClass$RootArgs;
Virtual methods - source_file_idx : 33 (DelverActivity.java)
Class #9 - Class descriptor : 'Lcom/mycompany/fmdelver/core/DelverActivity;' Access flags : 0x0001 (PUBLIC) Superclass : 'Landroid/app/Activity;' Interfaces - Static fields -
name : 'ACTION_FM'
type : 'Ljava/lang/String;'
access : 0x0019 (PUBLIC STATIC FINAL)
#1 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'ERR_HW'
type : 'I'
access : 0x0019 (PUBLIC STATIC FINAL)
#2 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'ERR_LIB_INIT'
type : 'I'
access : 0x0019 (PUBLIC STATIC FINAL)
#3 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'ERR_OK'
type : 'I'
access : 0x0019 (PUBLIC STATIC FINAL)
#4 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'PLATFORM'
type : 'Ljava/lang/String;'
access : 0x0019 (PUBLIC STATIC FINAL)
#5 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'TAG'
type : 'Ljava/lang/String;'
access : 0x0009 (PUBLIC STATIC)
Instance fields -
name : 'SUPERUSER_REQUEST'
type : 'I'
access : 0x0012 (PRIVATE FINAL)
#1 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'delverLib'
type : 'Lcom/mycompany/fmdelver/nativeinterface/NativeFMDelverLib;'
access : 0x0002 (PRIVATE)
#2 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'errorCode'
type : 'I'
access : 0x0002 (PRIVATE)
#3 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'libActive'
type : 'I'
access : 0x0002 (PRIVATE)
#4 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'mv_oFMReceiver'
type : 'Lcom/mycompany/fmdelver/core/FMReceiver;'
access : 0x0002 (PRIVATE)
#5 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'mv_oRootControls'
type : 'Lcom/mycompany/fmdelver/core/RootControls;'
access : 0x0002 (PRIVATE)
Direct methods -
name : '<clinit>'
type : '()V'
access : 0x10008 (STATIC CONSTRUCTOR)
code -
registers : 1
ins : 0
outs : 0
insns size : 5 16-bit code units
catches : (none)
positions :
0x0000 line=34
0x0004 line=49
locals :
#1 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : '<init>'
type : '()V'
access : 0x10001 (PUBLIC CONSTRUCTOR)
code -
registers : 3
ins : 1
outs : 1
insns size : 14 16-bit code units
catches : (none)
positions :
0x0001 line=32
0x0004 line=40
0x0009 line=43
0x000b line=44
0x000d line=32
locals :
0x0000 - 0x000e reg=2 this Lcom/mycompany/fmdelver/core/DelverActivity;
#2 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'access$0'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)Lcom/mycompany/fmdelver/core/RootControls;'
access : 0x1008 (STATIC SYNTHETIC)
code -
registers : 2
ins : 1
outs : 0
insns size : 3 16-bit code units
catches : (none)
positions :
0x0000 line=46
locals :
#3 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'access$1'
type : '(Lcom/mycompany/fmdelver/core/DelverActivity;)I'
access : 0x1008 (STATIC SYNTHETIC)
code -
registers : 2
ins : 1
outs : 0
insns size : 3 16-bit code units
catches : (none)
positions :
0x0000 line=44
locals :
Virtual methods -
name : 'harnessHTCOneFMRadio'
type : '()V'
access : 0x0001 (PUBLIC)
code -
registers : 6
ins : 1
outs : 2
insns size : 62 16-bit code units
catches : (none)
positions :
0x0000 line=468
0x0002 line=469
0x000a line=470
0x000c line=472
0x0025 line=473
0x0028 line=525
0x0029 line=476
locals :
0x000a - 0x003e reg=0 LaunchIntent Landroid/content/Intent;
0x0002 - 0x003e reg=1 packageString Ljava/lang/String;
0x0000 - 0x003e reg=5 this Lcom/mycompany/fmdelver/core/DelverActivity;
#1 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'harnessXperiaeFMRadio'
type : '()V'
access : 0x0001 (PUBLIC)
code -
registers : 6
ins : 1
outs : 2
insns size : 62 16-bit code units
catches : (none)
positions :
0x0000 line=302
0x0002 line=303
0x000a line=304
0x000c line=306
0x0025 line=307
0x0028 line=312
0x0029 line=310
locals :
0x000a - 0x003e reg=0 LaunchIntent Landroid/content/Intent;
0x0002 - 0x003e reg=1 packageString Ljava/lang/String;
0x0000 - 0x003e reg=5 this Lcom/mycompany/fmdelver/core/DelverActivity;
#2 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'onActivityResult'
type : '(IILandroid/content/Intent;)V'
access : 0x0001 (PUBLIC)
code -
registers : 4
ins : 4
outs : 0
insns size : 1 16-bit code units
catches : (none)
positions :
0x0000 line=254
locals :
0x0000 - 0x0001 reg=0 this Lcom/mycompany/fmdelver/core/DelverActivity;
0x0000 - 0x0001 reg=1 requestCode I
0x0000 - 0x0001 reg=2 resultCode I
0x0000 - 0x0001 reg=3 data Landroid/content/Intent;
#3 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'onCreate'
type : '(Landroid/os/Bundle;)V'
access : 0x0004 (PROTECTED)
code -
registers : 11
ins : 2
outs : 6
insns size : 77 16-bit code units
catches : 1
0x000f - 0x0027
Ljava/lang/Exception; -> 0x0048
positions :
0x0002 line=54
0x0005 line=56
0x0007 line=57
0x000c line=58
0x000e line=62
0x0013 line=63
0x0015 line=64
0x0016 line=65
0x0017 line=66
0x001b line=67
0x001d line=63
0x0024 line=75
0x0027 line=98
0x002f line=99
0x0037 line=134
0x003d line=135
0x0044 line=139
0x0047 line=141
0x0048 line=76
0x0049 line=77
locals :
0x0024 - 0x0027 reg=0 cmd Lcom/stericson/RootTools/execution/JavaCommandCapture;
0x0013 - 0x0027 reg=7 shell Lcom/stericson/RootTools/execution/Shell;
0x002f - 0x0048 reg=8 subclass Ljava/lang/Thread$UncaughtExceptionHandler;
0x0049 - 0x004d reg=6 e Ljava/lang/Exception;
0x0000 - 0x004d reg=9 this Lcom/mycompany/fmdelver/core/DelverActivity;
0x0000 - 0x004d reg=10 savedInstanceState Landroid/os/Bundle;
#4 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'onCreateOptionsMenu'
type : '(Landroid/view/Menu;)Z'
access : 0x0001 (PUBLIC)
code -
registers : 4
ins : 2
outs : 3
insns size : 11 16-bit code units
catches : (none)
positions :
0x0000 line=153
0x0009 line=154
locals :
0x0000 - 0x000b reg=2 this Lcom/mycompany/fmdelver/core/DelverActivity;
0x0000 - 0x000b reg=3 menu Landroid/view/Menu;
#5 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'reqSU'
type : '()V'
access : 0x0001 (PUBLIC)
code -
registers : 4
ins : 1
outs : 3
insns size : 28 16-bit code units
catches : (none)
positions :
0x0000 line=260
0x0007 line=263
0x000e line=266
0x0015 line=269
0x001b line=275
locals :
0x0007 - 0x001c reg=0 intent Landroid/content/Intent;
0x0000 - 0x001c reg=3 this Lcom/mycompany/fmdelver/core/DelverActivity;
#6 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'setupUIRooted'
type : '()V'
access : 0x0001 (PUBLIC)
code -
registers : 3
ins : 1
outs : 2
insns size : 18 16-bit code units
catches : (none)
positions :
0x0000 line=158
0x0009 line=159
0x0011 line=183
locals :
0x0009 - 0x0012 reg=0 bigRedB Landroid/widget/Button;
0x0000 - 0x0012 reg=2 this Lcom/mycompany/fmdelver/core/DelverActivity;
#7 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'setupUIWithFMRadio'
type : '()V'
access : 0x0001 (PUBLIC)
code -
registers : 7
ins : 1
outs : 2
insns size : 82 16-bit code units
catches : (none)
positions :
0x0000 line=186
0x0008 line=187
0x000d line=188
0x0016 line=189
0x001e line=201
0x0027 line=202
0x002f line=213
0x0038 line=214
0x0040 line=229
0x0049 line=230
0x0051 line=247
locals :
0x0027 - 0x0052 reg=0 closeRxB Landroid/widget/Button;
0x0016 - 0x0052 reg=1 createRxB Landroid/widget/Button;
0x0038 - 0x0052 reg=2 harnessFMRadioB Landroid/widget/Button;
0x0008 - 0x0052 reg=3 introTV Landroid/widget/TextView;
0x0049 - 0x0052 reg=4 testV4L2FMRadioB Landroid/widget/Button;
0x0000 - 0x0052 reg=6 this Lcom/mycompany/fmdelver/core/DelverActivity;
#8 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'setupUIWithoutRadio'
type : '()V'
access : 0x0001 (PUBLIC)
code -
registers : 4
ins : 1
outs : 2
insns size : 31 16-bit code units
catches : (none)
positions :
0x0000 line=278
0x0008 line=279
0x000d line=280
0x0016 line=281
0x001e line=291
locals :
0x0016 - 0x001f reg=0 createRxB Landroid/widget/Button;
0x0008 - 0x001f reg=1 introTV Landroid/widget/TextView;
0x0000 - 0x001f reg=3 this Lcom/mycompany/fmdelver/core/DelverActivity;
#9 : (in Lcom/mycompany/fmdelver/core/DelverActivity;)
name : 'testMagicIntent'
type : '(I)V'
access : 0x0001 (PUBLIC)
code -
registers : 6
ins : 2
outs : 3
insns size : 40 16-bit code units
catches : (none)
positions :
0x0000 line=144
0x0007 line=145
0x000c line=146
0x0020 line=147
0x0027 line=148
locals :
0x0007 - 0x0028 reg=0 intent Landroid/content/Intent;
0x0000 - 0x0028 reg=4 this Lcom/mycompany/fmdelver/core/DelverActivity;
0x0000 - 0x0028 reg=5 action I
source_file_idx : 33 (DelverActivity.java)
Class #10 - Class descriptor : 'Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$1;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$1'
type : 'Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;'
access : 0x1010 (FINAL SYNTHETIC)
#1 : (in Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$1;)
name : 'val$fileNamePrefix'
type : 'Ljava/lang/String;'
access : 0x1012 (PRIVATE FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;Ljava/lang/String;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 3
ins : 3
outs : 1
insns size : 8 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0004 line=173
locals :
0x0000 - 0x0008 reg=0 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$1;
Virtual methods -
name : 'accept'
type : '(Ljava/io/File;Ljava/lang/String;)Z'
access : 0x0001 (PUBLIC)
code -
registers : 4
ins : 3
outs : 2
insns size : 7 16-bit code units
catches : (none)
positions :
0x0000 line=176
locals :
0x0000 - 0x0007 reg=1 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$1;
0x0000 - 0x0007 reg=2 dir Ljava/io/File;
0x0000 - 0x0007 reg=3 filename Ljava/lang/String;
source_file_idx : 163 (RootClass.java)
Class #11 - Class descriptor : 'Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$2;' Access flags : 0x0000 () Superclass : 'Ljava/lang/Object;' Interfaces -
Static fields - Instance fields -
name : 'this$1'
type : 'Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;)V'
access : 0x10000 (CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=1
0x0002 line=260
locals :
0x0000 - 0x0006 reg=0 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$2;
Virtual methods -
name : 'accept'
type : '(Ljava/io/File;)Z'
access : 0x0001 (PUBLIC)
code -
registers : 3
ins : 2
outs : 1
insns size : 5 16-bit code units
catches : (none)
positions :
0x0000 line=263
locals :
0x0000 - 0x0005 reg=1 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder$2;
0x0000 - 0x0005 reg=2 pathname Ljava/io/File;
source_file_idx : 163 (RootClass.java)
Class #12 - Class descriptor : 'Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;' Access flags : 0x0001 (PUBLIC) Superclass : 'Ljava/lang/Object;' Interfaces - Static fields -
name : '$SWITCH_TABLE$com$stericson$RootTools$containers$RootClass$READ_STATE'
type : '[I'
access : 0x100a (PRIVATE STATIC SYNTHETIC)
Instance fields -
name : 'AVOIDDIRPATH'
type : 'Ljava/lang/String;'
access : 0x0012 (PRIVATE FINAL)
#1 : (in Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;)
name : 'classFiles'
type : 'Ljava/util/List;'
access : 0x0002 (PRIVATE)
Direct methods -
name : '$SWITCH_TABLE$com$stericson$RootTools$containers$RootClass$READ_STATE'
type : '()[I'
access : 0x1008 (STATIC SYNTHETIC)
code -
registers : 3
ins : 0
outs : 1
insns size : 37 16-bit code units
catches : 2
0x000c - 0x0015
Ljava/lang/NoSuchFieldError; -> 0x0023
0x0015 - 0x001e
Ljava/lang/NoSuchFieldError; -> 0x0021
positions :
0x0000 line=60
locals :
#1 : (in Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;)
name : '<init>'
type : '()V'
access : 0x10001 (PUBLIC CONSTRUCTOR)
code -
registers : 18
ins : 1
outs : 3
insns size : 766 16-bit code units
catches : 2
0x0203 - 0x020a
Ljava/io/IOException; -> 0x02fb
Ljava/lang/InterruptedException; -> 0x02f8
0x0243 - 0x024a
Ljava/io/IOException; -> 0x02f5
Ljava/lang/InterruptedException; -> 0x02f2
positions :
0x0000 line=65
0x0003 line=62
0x0024 line=66
0x002b line=67
0x0034 line=68
0x0044 line=69
0x004b line=70
0x004f line=71
0x0051 line=73
0x005e line=74
0x006a line=75
0x0076 line=76
0x0082 line=77
0x0088 line=73
0x008c line=78
0x0099 line=79
0x00a5 line=80
0x00b1 line=81
0x00bd line=82
0x00c3 line=78
0x00c7 line=83
0x00d4 line=84
0x00e0 line=85
0x00ec line=86
0x00f8 line=87
0x00fe line=83
0x0102 line=88
0x010f line=89
0x011b line=90
0x0127 line=91
0x0133 line=92
0x0139 line=88
0x013d line=93
0x014a line=94
0x0156 line=95
0x0162 line=96
0x016e line=97
0x0174 line=93
0x0178 line=99
0x018c line=100
0x018e line=101
0x0190 line=102
0x01c7 line=101
0x01ca line=104
0x01d8 line=107
0x01dc line=108
0x01e6 line=109
0x01ed line=111
0x01f5 line=109
0x01fb line=129
0x0200 line=130
0x0203 line=132
0x020a line=135
0x0211 line=136
0x0213 line=137
0x0217 line=138
0x0221 line=139
0x0228 line=140
0x0238 line=139
0x023e line=151
0x0243 line=153
0x024a line=156
0x0251 line=157
0x0252 line=99
0x0255 line=104
0x025b line=105
0x0273 line=115
0x0278 line=116
0x027d line=117
0x0282 line=118
0x0287 line=119
0x028a line=120
0x028d line=121
0x0290 line=122
0x0293 line=123
0x0296 line=124
0x02a4 line=127
0x02b2 line=124
0x02b8 line=125
0x02c0 line=144
0x02c4 line=145
0x02cb line=146
0x02d0 line=147
0x02d5 line=148
0x02f0 line=144
0x02f2 line=154
0x02f8 line=133
locals :
0x01ca - 0x01fb reg=13 sb Ljava/lang/StringBuilder;
0x01fb - 0x0216 reg=3 cmd [Ljava/lang/String;
0x023e - 0x024a reg=3 cmd [Ljava/lang/String;
0x0243 - 0x024a reg=4 dexBuilder Ljava/lang/ProcessBuilder;
0x0200 - 0x024a reg=6 jarBuilder Ljava/lang/ProcessBuilder;
0x018c - 0x024a reg=7 onWindows Z
0x008c - 0x024a reg=8 rc1 Ljava/lang/String;
0x00c7 - 0x024a reg=9 rc2 Ljava/lang/String;
0x0102 - 0x024a reg=10 rc3 Ljava/lang/String;
0x013d - 0x024a reg=11 rc4 Ljava/lang/String;
0x0178 - 0x024a reg=12 rc5 Ljava/lang/String;
0x025b - 0x0273 reg=5 file Ljava/io/File;
0x0255 - 0x0273 reg=13 sb Ljava/lang/StringBuilder;
0x02b0 - 0x02b2 reg=3 cmd [Ljava/lang/String;
0x0278 - 0x02c0 reg=1 al Ljava/util/ArrayList; Ljava/util/ArrayList<Ljava/lang/String;>;
0x02b8 - 0x02c0 reg=5 file Ljava/io/File;
0x02c0 - 0x02c3 reg=3 cmd [Ljava/lang/String;
0x02f2 - 0x02f8 reg=4 dexBuilder Ljava/lang/ProcessBuilder;
0x004f - 0x02fe reg=2 builtPath Ljava/io/File;
0x02f0 - 0x02fe reg=3 cmd [Ljava/lang/String;
0x02c0 - 0x02fe reg=6 jarBuilder Ljava/lang/ProcessBuilder;
0x0255 - 0x02fe reg=7 onWindows Z
0x0252 - 0x02fe reg=8 rc1 Ljava/lang/String;
0x0252 - 0x02fe reg=9 rc2 Ljava/lang/String;
0x0252 - 0x02fe reg=10 rc3 Ljava/lang/String;
0x0252 - 0x02fe reg=11 rc4 Ljava/lang/String;
0x0252 - 0x02fe reg=12 rc5 Ljava/lang/String;
0x0000 - 0x02fe reg=17 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;
Virtual methods -
name : 'getBuiltPath'
type : '()Ljava/io/File;'
access : 0x0004 (PROTECTED)
code -
registers : 7
ins : 1
outs : 2
insns size : 124 16-bit code units
catches : (none)
positions :
0x0000 line=256
0x0001 line=258
0x001d line=259
0x0023 line=260
0x002c line=266
0x002f line=267
0x0056 line=270
0x0058 line=271
0x0074 line=272
0x007a line=273
0x007b line=277
locals :
0x0001 - 0x0031 reg=2 foundPath Ljava/io/File;
0x002c - 0x0056 reg=0 children [Ljava/io/File;
0x0074 - 0x007b reg=1 eclipsePath Ljava/io/File;
0x0056 - 0x007c reg=2 foundPath Ljava/io/File;
0x001d - 0x007c reg=3 ideaPath Ljava/io/File;
0x0000 - 0x007c reg=6 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;
#1 : (in Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;)
name : 'getPathToDx'
type : '()Ljava/lang/String;'
access : 0x0004 (PROTECTED)
code -
registers : 16
ins : 1
outs : 2
insns size : 159 16-bit code units
catches : (none)
positions :
0x0003 line=224
0x0009 line=225
0x000b line=226
0x0013 line=228
0x0014 line=229
0x0036 line=230
0x0037 line=231
0x003b line=249
0x003d line=250
0x0045 line=231
0x0047 line=233
0x0051 line=234
0x0059 line=235
0x005c line=236
0x0065 line=237
0x0068 line=238
0x006f line=241
0x0071 line=242
0x008e line=243
0x0099 line=244
0x009a line=245
0x009b line=231
0x009e line=252
locals :
0x008e - 0x009b reg=7 tentativePath Ljava/lang/String;
0x0047 - 0x009e reg=2 file Ljava/io/File;
0x0059 - 0x009e reg=5 sdkVersion I
0x0051 - 0x009e reg=6 sdkVersionBits [Ljava/lang/String;
0x0009 - 0x009f reg=0 androidHome Ljava/lang/String;
0x0014 - 0x009f reg=1 dxPath Ljava/lang/String;
0x0036 - 0x009f reg=3 files [Ljava/io/File;
0x0037 - 0x009f reg=4 recentSdkVersion I
0x0000 - 0x009f reg=15 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;
#2 : (in Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;)
name : 'hasClassAnnotation'
type : '(Ljava/io/File;)Z'
access : 0x0004 (PROTECTED)
code -
registers : 12
ins : 2
outs : 2
insns size : 134 16-bit code units
catches : 1
0x0009 - 0x0073
Ljava/io/FileNotFoundException; -> 0x0074
Ljava/io/IOException; -> 0x0079
positions :
0x0001 line=190
0x0003 line=191
0x0009 line=193
0x0013 line=195
0x0019 line=220
0x001a line=196
0x0028 line=198
0x0031 line=199
0x0033 line=200
0x0034 line=202
0x0038 line=203
0x003e line=204
0x0057 line=205
0x0059 line=208
0x0062 line=209
0x006e line=208
0x0071 line=210
0x0074 line=215
0x0075 line=216
0x0079 line=217
0x007a line=218
0x007e line=196
locals :
0x0017 - 0x0019 reg=1 line Ljava/lang/String;
0x0013 - 0x0019 reg=5 reader Ljava/io/BufferedReader;
0x001a - 0x0074 reg=1 line Ljava/lang/String;
0x0038 - 0x0074 reg=2 m Ljava/util/regex/Matcher;
0x001a - 0x0074 reg=5 reader Ljava/io/BufferedReader;
0x0075 - 0x0079 reg=0 e Ljava/io/FileNotFoundException;
0x007a - 0x0086 reg=0 e Ljava/io/IOException;
0x0009 - 0x0086 reg=3 p Ljava/util/regex/Pattern;
0x0003 - 0x0086 reg=4 readState Lcom/stericson/RootTools/containers/RootClass$READ_STATE;
0x0000 - 0x0086 reg=10 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;
0x0000 - 0x0086 reg=11 file Ljava/io/File;
#3 : (in Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;)
name : 'lookup'
type : '(Ljava/io/File;Ljava/util/List;)V'
access : 0x0004 (PROTECTED)
code -
registers : 18
ins : 3
outs : 3
insns size : 173 16-bit code units
catches : (none)
positions :
0x0000 line=160
0x000c line=161
0x0010 line=162
0x0015 line=187
0x0016 line=162
0x0018 line=163
0x001e line=164
0x002b line=165
0x0030 line=162
0x0034 line=169
0x0040 line=170
0x0046 line=171
0x0052 line=172
0x0076 line=173
0x007f line=179
0x0085 line=180
0x00aa line=179
locals :
0x007f - 0x00ad reg=1 classAndInnerClassFiles [Ljava/io/File;
0x0076 - 0x00ad reg=2 compiledPath Ljava/io/File;
0x000c - 0x00ad reg=3 desourcedPath Ljava/lang/String;
0x0018 - 0x00ad reg=4 file Ljava/io/File;
0x0052 - 0x00ad reg=5 fileNamePrefix Ljava/lang/String;
0x0010 - 0x00ad reg=6 files [Ljava/io/File;
0x0085 - 0x00ad reg=7 matchingFile Ljava/io/File;
0x0000 - 0x00ad reg=15 this Lcom/stericson/RootTools/containers/RootClass$AnnotationsFinder;
0x0000 - 0x00ad reg=16 path Ljava/io/File;
0x0000 - 0x00ad reg=17 fileList Ljava/util/List; Ljava/util/List<Ljava/io/File;>;
source_file_idx : 163 (RootClass.java)
Class #13 - Class descriptor : 'Lcom/stericson/RootTools/containers/RootClass$RootArgs;' Access flags : 0x0001 (PUBLIC) Superclass : 'Ljava/lang/Object;' Interfaces - Static fields - Instance fields -
name : 'args'
type : '[Ljava/lang/String;'
access : 0x0001 (PUBLIC)
#1 : (in Lcom/stericson/RootTools/containers/RootClass$RootArgs;)
name : 'this$0'
type : 'Lcom/stericson/RootTools/containers/RootClass;'
access : 0x1010 (FINAL SYNTHETIC)
Direct methods -
name : '<init>'
type : '(Lcom/stericson/RootTools/containers/RootClass;)V'
access : 0x10001 (PUBLIC CONSTRUCTOR)
code -
registers : 2
ins : 2
outs : 1
insns size : 6 16-bit code units
catches : (none)
positions :
0x0000 line=46
locals :
0x0000 - 0x0006 reg=0 this Lcom/stericson/RootTools/containers/RootClass$RootArgs;
Virtual methods - source_file_idx : 163 (RootClass.java)
Class #14 - Class descriptor : 'Lcom/stericson/RootTools/containers/RootClass;' Access flags : 0x0001 (PUBLIC) Superclass : 'Ljava/lang/Object;' Interfaces - Static fields -
name : 'PATH_TO_DX'
type : 'Ljava/lang/String;'
access : 0x0008 (STATIC)
Instance fields - Direct methods -
name : '<clinit>'
type : '()V'
access : 0x10008 (STATIC CONSTRUCTOR)
code -
registers : 1
ins : 0
outs : 0
insns size : 5 16-bit code units
catches : (none)
positions :
0x0000 line=24
locals :
#1 : (in Lcom/stericson/RootTools/containers/RootClass;)
name : '<init>'
type : '([Ljava/lang/String;)V'
access : 0x10001 (PUBLIC CONSTRUCTOR)
code -
registers : 10
ins : 2
outs : 5
insns size : 49 16-bit code units
catches : (none)
positions :
0x0002 line=27
0x0005 line=35
0x0007 line=36
0x000c line=37
0x0013 line=38
0x001b line=39
0x001f line=40
0x0029 line=41
0x0030 line=42
locals :
0x000c - 0x0031 reg=0 actualArgs Lcom/stericson/RootTools/containers/RootClass$RootArgs;
0x0029 - 0x0031 reg=1 classConstructor Ljava/lang/reflect/Constructor; Ljava/lang/reflect/Constructor<_>;
0x001f - 0x0031 reg=2 classHandler Ljava/lang/Class; Ljava/lang/Class<_>;
0x0007 - 0x0031 reg=3 className Ljava/lang/String;
0x0000 - 0x0031 reg=8 this Lcom/stericson/RootTools/containers/RootClass;
0x0000 - 0x0031 reg=9 args [Ljava/lang/String;
#2 : (in Lcom/stericson/RootTools/containers/RootClass;)
name : 'displayError'
type : '(Ljava/lang/Exception;)V'
access : 0x0008 (STATIC)
code -
registers : 4
ins : 1
outs : 2
insns size : 34 16-bit code units
catches : (none)
positions :
0x0000 line=53
0x001e line=54
0x0021 line=55
locals :
0x0000 - 0x0022 reg=3 e Ljava/lang/Exception;
#3 : (in Lcom/stericson/RootTools/containers/RootClass;)
name : 'main'
type : '([Ljava/lang/String;)V'
access : 0x0009 (PUBLIC STATIC)
code -
registers : 3
ins : 1
outs : 2
insns size : 20 16-bit code units
catches : 1
0x0000 - 0x000e
Ljava/lang/Exception; -> 0x000f
positions :
0x0000 line=285
0x0003 line=286
0x0008 line=294
0x0009 line=289
0x000f line=291
0x0010 line=292
locals :
0x0010 - 0x0014 reg=0 e Ljava/lang/Exception;
0x0000 - 0x0014 reg=2 args [Ljava/lang/String;
Virtual methods - source_file_idx : 163 (RootClass.java)
Class #15 - Class descriptor : 'Lcom/stericson/RootToolsTests/NativeJavaClass;' Access flags : 0x0001 (PUBLIC) Superclass : 'Ljava/lang/Object;' Interfaces - Static fields - Instance fields - Direct methods -
name : '<init>'
type : '(Lcom/stericson/RootTools/containers/RootClass$RootArgs;)V'
access : 0x10001 (PUBLIC CONSTRUCTOR)
code -
registers : 15
ins : 2
outs : 2
insns size : 128 16-bit code units
catches : 1
0x0041 - 0x005a
Ljava/io/IOException; -> 0x0074
positions :
0x0000 line=13
0x0003 line=14
0x000a line=15
0x000c line=16
0x0011 line=17
0x0015 line=18
0x0017 line=19
0x001e line=20
0x0022 line=23
0x0029 line=24
0x0041 line=26
0x0046 line=27
0x004b line=28
0x0050 line=29
0x0053 line=30
0x005a line=37
0x005b line=20
0x005d line=21
0x0071 line=20
0x0074 line=31
0x0075 line=32
0x007c line=33
locals :
0x0041 - 0x005a reg=3 f2 Ljava/io/File;
0x0046 - 0x005a reg=4 filewriter Ljava/io/FileWriter;
0x004b - 0x005a reg=6 out Ljava/io/BufferedWriter;
0x005d - 0x0074 reg=0 af Ljava/lang/String;
0x0075 - 0x0080 reg=1 e Ljava/io/IOException;
0x0011 - 0x0080 reg=2 f Ljava/io/File;
0x0074 - 0x0080 reg=3 f2 Ljava/io/File;
0x0015 - 0x0080 reg=5 fl [Ljava/lang/String;
0x000c - 0x0080 reg=7 p Ljava/lang/String;
0x0000 - 0x0080 reg=13 this Lcom/stericson/RootToolsTests/NativeJavaClass;
0x0000 - 0x0080 reg=14 args Lcom/stericson/RootTools/containers/RootClass$RootArgs;
Virtual methods - source_file_idx : 154 (NativeJavaClass.java) [/CODE]
DelverActivity.RootToolsTest should be the only RootClass.Candidate annotated class in my source. NativeJavaClass is from the RootTools test package.
Any ideas would be much appreciated, thanks!
I also get this error on my Sony Xperia Z2 using the latest Cyanogenmod 11. My Root class is very simple:
package com.example.myapp;
import com.stericson.RootTools.containers.RootClass;
@RootClass.Candidate public class RootTest { public static void main (String [] args) { System.out.println("Test"); } }
When I execute this class I also get the error message. Here is my log output:
06-25 11:38:17.167: D/RootTools v3.4(22124): Starting Root Shell! 06-25 11:38:17.167: D/RootTools v3.4(22124): Starting shell: su 06-25 11:38:17.177: D/su(22150): su invoked. 06-25 11:38:17.177: D/su(22150): starting daemon client 10214 10214 06-25 11:38:17.177: D/su(22153): remote pid: 22150 06-25 11:38:17.177: D/su(22153): remote pts_slave: 06-25 11:38:17.177: D/su(22153): waiting for child exit 06-25 11:38:17.177: D/su(22155): su invoked. 06-25 11:38:17.187: D/su(22155): db allowed 06-25 11:38:17.187: D/su(22155): 10214 /system/xbin/su executing 0 /system/bin/sh using binary /system/bin/sh : sh 06-25 11:38:17.187: D/RootTools v3.4(22124): CommandHandler not created 06-25 11:38:17.197: D/RootTools v3.4(22124): Executing: dalvikvm -cp /data/data/com.example.myapp/files/anbuild.dex com.android.internal.util.WithFramework com.stericson.RootTools.containers.RootClass com.example.myapp.RootTest 06-25 11:38:17.197: D/RootTools v3.4(22124): Checking for Root access 06-25 11:38:17.207: D/RootTools v3.4(22124): CommandHandler not created 06-25 11:38:17.207: D/RootTools v3.4(22124): Using Existing Root Shell! 06-25 11:38:17.207: D/RootTools v3.4(22124): Command is in position 1 currently executing command at position 1 06-25 11:38:17.217: D/RootTools v3.4(22124): Executing: id 06-25 11:38:17.237: D/dalvikvm(22166): Trying to load lib libjavacore.so 0x0 06-25 11:38:17.247: D/dalvikvm(22166): Added shared lib libjavacore.so 0x0 06-25 11:38:17.257: D/dalvikvm(22166): Trying to load lib libnativehelper.so 0x0 06-25 11:38:17.257: D/dalvikvm(22166): Added shared lib libnativehelper.so 0x0 06-25 11:38:17.257: D/dalvikvm(22166): No JNI_OnLoad found in libnativehelper.so 0x0, skipping init 06-25 11:38:17.287: W/dalvikvm(22166): threadid=1: thread exiting with uncaught exception (group=0xb5e05ce0) 06-25 11:38:17.287: D/Command(22124): ID: 43, java.lang.ClassNotFoundException: com.stericson.RootTools.containers.RootClass 06-25 11:38:17.287: D/Command(22124): ID: 43, at java.lang.Class.classForName(Native Method) 06-25 11:38:17.287: D/Command(22124): ID: 43, at java.lang.Class.forName(Class.java:251) 06-25 11:38:17.287: D/Command(22124): ID: 43, at java.lang.Class.forName(Class.java:216) 06-25 11:38:17.287: D/Command(22124): ID: 43, at com.android.internal.util.WithFramework.main(WithFramework.java:36) 06-25 11:38:17.287: D/Command(22124): ID: 43, at dalvik.system.NativeStart.main(Native Method) 06-25 11:38:17.287: D/Command(22124): ID: 43, Caused by: java.lang.NoClassDefFoundError: com/stericson/RootTools/containers/RootClass 06-25 11:38:17.287: D/Command(22124): ID: 43, ... 5 more 06-25 11:38:17.287: D/Command(22124): ID: 43, Caused by: java.lang.ClassNotFoundException: Didn't find class "com.stericson.RootTools.containers.RootClass" on path: DexPathList[[dex file "dalvik.system.DexFile@b5e0f7b8"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 06-25 11:38:17.287: D/Command(22124): ID: 43, at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 06-25 11:38:17.287: D/Command(22124): ID: 43, at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 06-25 11:38:17.287: D/Command(22124): ID: 43, at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 06-25 11:38:17.287: D/Command(22124): ID: 43, ... 5 more 06-25 11:38:17.497: D/RootTools v3.4(22124): Command 43 finished.
What am I doing wrong?
I got it working. Was having the same problem. And I had a guess that "since the RootClass isn't found, let's put it into the anbuild.dex" -- and it works.
Comment out the AVOIDPATH, and then add annotation for itself. Hack the lookup routine so that it catches itself.
A better solution:
@Fusion Can you confirm whether this is still an open issue or can be closed?
I followed the directions on the RootTools usage and run Java as root wiki pages, but when I load my app with the following in onCreate() I get a ClassNotFoundException: com.stericson.RootTools.containers.RootClass:
import com.stericson.RootTools.RootTools; import com.stericson.RootTools.containers.RootClass; import com.stericson.RootTools.exceptions.RootDeniedException; import com.stericson.RootTools.execution.CommandCapture; import com.stericson.RootTools.execution.JavaCommandCapture; import com.stericson.RootTools.execution.Shell; ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
... @RootClass.Candidate private class RootToolsTest{ public RootToolsTest(){ Log.d("RootToolsTest", "testing a Java class run as root"); } }
The same thing happened when I tried RootTools' test class com.stericson.RootToolsTests.NativeJavaClass. I've tried a number of configurations for the placement and inclusion of the RootTools.jar file (most notably ensuring that the RootTools jar is checked for export and moved to the top of the order and export list in Eclipse) but the ClassNotFoundException persists. The exact logcat output follows:
06-02 07:27:45.529: D/RootTools v3.4(5165): roottools is logging 06-02 07:27:45.529: D/RootTools v3.4(5165): Starting Root Shell! 06-02 07:27:45.539: D/RootTools v3.4(5165): Starting shell: su 06-02 07:27:46.409: D/RootTools v3.4(5165): CommandHandler not created 06-02 07:27:46.429: D/RootTools v3.4(5165): Executing: dalvikvm -cp /data/data /com.hdradio.fmdelverrooted/files/anbuild.dex com.android.internal.util.WithFramework com.stericson.RootTools.containers.RootClass com.hdradio.fmdelver.core.DelverActivity.RootToolsTest 06-02 07:27:46.749: D/Command(5165): ID: 43, java.lang.ClassNotFoundException: com.stericson.RootTools.containers.RootClass 06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.classForName(Native Method) 06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.forName(Class.java:217) 06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.forName(Class.java:172) 06-02 07:27:46.769: D/Command(5165): ID: 43,at com.android.internal.util.WithFramework.main(WithFramework.java:36) 06-02 07:27:46.769: D/Command(5165): ID: 43,at dalvik.system.NativeStart.main(Native Method) 06-02 07:27:46.769: D/Command(5165): ID: 43, Caused by: java.lang.NoClassDefFoundError: com/stericson/RootTools/containers/RootClass 06-02 07:27:46.769: D/Command(5165): ID: 43, ... 5 more 06-02 07:27:46.769: D/Command(5165): ID: 43, Caused by: java.lang.ClassNotFoundException: com.stericson.RootTools.containers.RootClass 06-02 07:27:46.769: D/Command(5165): ID: 43,at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 06-02 07:27:46.769: D/Command(5165): ID: 43,at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 06-02 07:27:46.769: D/Command(5165): ID: 43, at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 06-02 07:27:46.769: D/Command(5165): ID: 43, ... 5 more 06-02 07:27:46.979: D/RootTools v3.4(5165): Command 43 finished.
My .classpath looks like:
<?xml version="1.0" encoding="UTF-8"?>
My development system configuration is as follows: OS: Mac OS X 10.9.2 Eclipse: Kepler ADT: 22.3 RootTools Version: 3.4
and my target platform: Android: 4.1.1 Model: Sony Xperia E C1504 (rooted using SRSRoot and the 'Gandalf' exploit) Firmware: Stock Kernel Xperia E C1505_11.3.A.0.47 (supposed to work for C1504 as well)
Any ideas why Android can't find the com.stericson.RootTools.containers.RootClass class?