Android上app_process启动java进程

Home / Android MrLee 2019-9-18 4989

  这里不介绍Android启动过程中,app_process从哪个进程fork处理,也不介绍app_process启动App的过程。仅介绍app_process启动纯Java程序的相关知识。

一、HelloWorld示例

 编写一个hellworld 的Java程序,并且编译成.class文件,简单得没啥可说的。

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

//编译,这里主要是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文件夹下

adb push D:\app_process\Helloworld.dex /data/local/tmp
adb shell

构建app_process运行参数:

app_process -Djava.class.path=/data/local/tmp/Helloworld.dex /data/local/tmp Helloworld

这里有个问题,用老的三星NODE 3测试总是提示Aborted,中断失败!华为畅玩9没问题。

本文链接:https://www.it72.com/12568.htm

推荐阅读
最新回复 (0)
返回