Android app_process 启动进程
Java 程序
- HelloWorld.java
public class Helloworld {
public static void main(String[] args) {
while (true) {
System.out.println("Hello, I am started by app_process!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
- 编译
javac HelloWorld.java
- 生成dex文件 ( 打成 jar 包也可以)
/Android/Sdk/build-tools/30.0.3/dx --dex --output HelloWorld.dex HelloWorld.class
- 运行
- 推到手机
adb push HelloWorld.dex /data/local/tmp/
adb shell
- 通过 app_process 加载程序
app_process [vm-options] cmd-dir [options] start-class-name [main-options]
vm-options – VM 选项
cmd-dir –父目录 (/system/bin)
options –运行的参数 :
–zygote
–start-system-server
–application (api>=14)
–nice-name=nice_proc_name (api>=14)
start-class-name –包含main方法的主类 (com.android.commands.am.Am)
main-options –启动时候传递到main方法中的参数
app_process -Djava.class.path=/data/local/tmp/HelloWorld.dex /data/local/tmp HelloWorld
- 程序 fork 流程
通过 ps 可以查看程序的pid,以及 ppid 查找父进程
init–>/sbin/adbd–>/system/bin/sh–>app_process(Java进程)