android虚拟机的典型启动流程-一

本文介绍了Android系统中init作为第一个进程的启动,接着详细阐述了zygote作为应用程序孵化器的角色,以及AndroidRuntime如何启动和管理虚拟机。通过5个关键步骤深入讲解了虚拟机的启动过程,包括startVM、JNI_CreateJavaVM、虚拟机创建后的回调、注册native函数以及执行zygoteInit的main函数。

init–android系统中的第一个进程

	内核启动完成后,init进程通过解析脚本init.rc启动关键的守护进程和系统服务。如下可看到很多的init相关的配置文件,其中包括zygote(手机系统中的init.zygote64_32.rc、init.zygote32.rc文件)。

在这里插入图片描述
在这里插入图片描述
通过dmesg |grep zygote查看相关的启动信息:
在这里插入图片描述

zygote–是android应用程序的孵化器,大多数应用程序是从该程序fork出来的。

本身是java语言,因此运行则需要虚拟机环境。
进程app_process是zygote的载体,源码/AOSP/frameworks/base/cmds/app_process/app_main.cpp
该文件中的main函数会解析zygote启动命令参数--zygote --start-system-server ....,并最终调用AndroidRuntime的start函数,从下面代码可以看出,zygote的入口"com.android.internal.os.ZygoteInit",AndroidRuntime的start负责启动并管理android虚拟机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值