Android启动研究(二)

Android启动, 首先kernel内核自动载入内存运行,它主要功能是完成各个设备驱动的初始化,例如,照相机,蓝牙,电话等驱动。


这部分启动完后就开始按照init.rc 文件中开始启动系统进程


init.rc 的路径为:platform/system/core/rootdir/init.rc   现在开始分析此文件。


此文件中可以看到如下格式:


service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

          socket zygote stream 66

          onrestart write /sys/android_power/request_start wake

          onrestart write /sys/power/state on

          onrestart restart media

          onrestart restart netd


这种格式,是指明要启动一系列系统级的服务, 如上,


service zygoet:就是启动了一个zygote服务,

/system/bin/app_process:进程bin文件的具体路径,可以zygote是对应着app_process进程,

其余的参数,等会儿解释,


app_pocess文件的路径为:/platform/frameworks/base/cmds/app_process/app_main.cpp,打开此文件,

可以看到此文件中的main()函数,由此可以得出结论,这个main()函数就是zygote服务的入口,

那么,刚才init.rc中service中的参数也就明白了,可以对应到

main(int argc,const char* const argv[]) 的参数中,会用到。


此外,此文件中还有一个重要的类,如下定义:

class AppRuntime:public AndroidRuntime { }


其中类AndroidRuntime类路径为:/platform/frameworks/base/core/jni/AndroidRuntime.cpp


此类用于启动java运行环境,其中一句最重要的代码为:


 main(int argc,const char* const argv[]) {

     .....

     AppRuntime runtime;

     runtime.start("com.android.internal.os.Zygoteinit",startSystemServer); 

     

     ......


 }


此句是执行 ZygoetInit类,用于初始化Zygote服务,     下面开始分析ZygoteInit类:

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值