一、在shell使用app_process程序
app_process程序支持android的api,会自动注册android的jni。
app_process实际上就是zygote,它已经有载入android.jar等Android环境,所以它能执行Android程序。
代码里可以使用Looper的api,使程序死循环,会发现开启了一个名为app_process的进程,程序退出进程就会销毁。
指令如下:
base=/system
export CLASSPATH=$base/framework/MyBinderService.jar
exec app_process $base/bin com.hsae.mylibrary.ServerDemo "$@"
com.hsae.mylibrary.ServerDemo是含有main()函数的类
"$@" 就是传递给main()函数的参数
二、在shell使用davlikvm命令
这个方法只能执行java原生api。
dalvikvm实际上就是识别dex的虚拟机,它并没有载入android.jar等Android环境,所以它只能执行dex化的普通java程序。
dalvikvm64 -cp system/framework/MyBinderService.jar com/hsae/mylibrary/ServerDemo