android中的Runtime.getRuntime()。exec dalvikvm命令

时间:2015-03-05 13:55:09

标签: java android adb root dalvik

我想在我的android设备中执行一个.dex文件。我想要一个应用来触发这个.dex来执行。

<。> .dex文件是hello.dex,主类是hello.Hello

Hello.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权限吗?

0 个答案:

没有答案