这里不介绍Android启动过程中,app_process从哪个进程fork处理,也不介绍app_process启动App的过程。仅介绍app_process启动纯Java程序的相关知识。
一、HelloWorld示例
编写一个hellworld 的Java程序,并且编译成.class文件,简单得没啥可说的。
1 2 3 4 5 | public class Helloworld {
public static void main(String[]args){
System.out.println( "Hello, I am started by app_process!" );
}
}
|
Android对Java虚拟机做了修改,即使用自己的dalvik虚拟机(后来的ART)。因此,.class的字节码在Dalvik虚拟机上是不能运行的。Android Platform tool为我们提供了生成Android上可执行jar(Dex)工具:dx(dx路径参考:Sdk\build-tools\25.0.0\dx.bat)。编译命令如下,当然如果不想用命令行也可以用Android Studio创建编译也行,编译dex路径:app\build\intermediates\transforms\dexBuilder\debug
1 2 3 4 | // 编译,这里主要是Platform tool上用的是Java 7,所以显式指定1.7
javac - source 1.7 -target 1.7 D:\app_process\\Helloworld.java
// 生成dex,当然生成jar在Android上也是可执行的
dx --dex --output=D:\app_process\Helloworld.dex Helloworld.class
|
2. 将我们前面编译得到的dex(jar)文件push到/data/local/tmp文件夹下
1 2 | adb push D:\app_process\Helloworld.dex /data/local/tmp
adb shell
|
构建app_process运行参数:
1 | app_process -Djava.class.path= /data/local/tmp/Helloworld .dex /data/local/tmp Helloworld
|

这里有个问题,用老的三星NODE 3测试总是提示Aborted,中断失败!华为畅玩9没问题。
本文链接:https://it72.com:4443/12568.htm