Android启动的大致分析

       前段时间看了下Android的启动的源代码,大致的理了下,很多底层的一些机制,实现什么都没过多的研究。对于Android架构理解有很大的帮助

---------------------------------------------------------------------------------------------------------

首先是  init进程启动

               (一些native服务启动)

          

           如: servicemanager启动

                    Zygote启动

                       SysytemServer启动,在

                           init1

                           init2函数中启动Android服务

 

init进程起来后,解析init.rcinit.xxx.rc建立基本的服务

  

之后进入循环,并没有退出

 

分析init.c@/system/core/initmain函数主要实现过程

       ...

          mkdir("/dev", 0755)   //创建具有可读写的目录 /dev

      。。。

      log_init();      //初始化log系统

       。。。     

     parse_config_file("/init.rc");    /*解析init.rc文件,parse_config_file这个           函数是在/system/core/init/parse.c这个类中实现的,讲解析得到的service信息储存到

service_list这个数据解构中*/

    

     get_hardware_name();

     snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware);

     parse_config_file(tmp);    /*解析init.xxx.rc,和硬件相关*/

 

     action_for_each_trigger("early-init", action_add_queue_tail);

     drain_action_queue();      /*执行解析得到的”early-init”的action*/

   

     INFO("device init/n");

     device_fd = device_init(); /*设备的初始化。挂载结点倒/dev下还有下载

                                firmwares*/

 

     property_init();          

     。。。                    /*property初始化*/

 

       /*读取/initlogo.rle(一张位图),如果成功则在/dev/graphics/fb0 显示Logo,如果失败则将/dev/tty0,设为TEXT模式并打开/dev/tty0,输出文本ANDROID。具体实现可看

    /system/core/init/log.c

    */

    if( load_565rle_image(INIT_IMAGE_FILE) ) {   

    fd = open("/dev/tty0", O_WRONLY);

    if (fd >= 0) {

       。。。

       。。。

      }

     /* 判断cmdline 中的參數,并设置属性系统中的参数:

    *  1 如果 bootmode

    *     - factory,设置ro.factorytest值为1

    *     - factory2,设置ro.factorytest值为2

    *     - 其他的設

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值