我想在我的android设备中执行一个.dex文件。我想要一个应用来触发这个.dex来执行。
<。> .dex文件是hello.dex,主类是hello.HelloHello.java:
package hello;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello world");
}
}
所以我写了这样的应用程序:
try{
Process proc=null;
proc = Runtime.getRuntime().exec("dalvikvm -cp /data/FileOut/hello.dex hello.Hello");
proc.waitFor();
java.io.InputStream is=proc.getInputStream();
byte b[]=new byte[is.available()];
is.read(b,0,b.length);
System.out.println(new String(b));
}
catch (Exception e) {
Log.i("Read has Exception", "e:" + e);
}
}
但是没有关于logcat中输出消息或错误的任何信息。
logcat的:
E/dalvikvm﹕ threadid=11: created from interp,name=java.lang.ProcessManager
E/dalvikvm﹕ threadid=11: calling run(),name=java.lang.ProcessManage
然后我发现解决这个问题的关键是你如何推动&#39; dex文件到手机。
如果我使用
adb root
adb push "D:\Hello.dex" "/sdcard/Test"
我的应用有效。
当我只使用(adb没有获得root权限)
adb push "D:\Hello.dex" "/sdcard/Test"
我的应用不起作用。
我发现在这两种情况下。 当我使用&#39; ll&#39;看我的dex文件 两者都表明:
-rw-rw-r-- root sdcard_rw 760 ....
我对android安全机制并不熟悉。如何修改我的代码?我的应用必须获得root权限吗?