背景:我想编写一个可以将dex文件传输到另一部手机并执行它的应用程序。
这是我的应用尝试做的事情:
1.发送dex文件。
传输后,文件属性为:
-rw------- u0_a128 u0_a128 760....
2.使用代码执行它:
try{
Process proc=null;
proc = Runtime.getRuntime().exec("dalvikvm -cp /data/data/com.ray.offload/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);
}
}
com.ray.offload是我的应用安装的地方。
当我运行这个函数时,logcat只显示:
E/dalvikvm﹕ threadid=11: created from interp,name=java.lang.ProcessManager
E/dalvikvm﹕ threadid=11: calling run(),name=java.lang.ProcessManage
注意:如果我使用adb将dex文件推送到我的手机,我可以得到" Hello world"。 和文件属性是:
-rw-rw-rw- shell shell 760...
我想知道我是否应该修改dex文件。
所以我只是说:
Process p=null;
p=Runtime.getRuntime().exec("chmod 777 /data/data/com.ray.offload/test/Hello.dex");
p.waitFor();
在我使用&#39; dalvikvm&#39;之前执行dex文件。但是当我使用adb&#39; ll&#39;时,文件归属没有改变。看见了。 所以我通过adb shell直接更改了归属地。</ p>
chmod 777 Hello.dex
它确实会被更改。但应用程序仍无效。 然后最奇怪的事情来了: 在我使用dalvikvm直接通过adb.my app执行dex文件之后,还有“Hello world&#39;在我的logcat上。
这意味着我的应用必须在我通过adb shell执行ded文件后才能工作。
我对所有这些问题感到困惑。 我想知道“dalvikvm”执行情况是否正确。只是在另一个沙盒中#39;的安卓。普遍存在问题。我正在寻求帮助.....