• 系统进程 zygote(二)—— zygote.rc 脚本


    夕阳已在沉沉的淡化,这黄昏的美,有谁能描画?莽莽的天涯,哪里是我的家,哪里是我的家?爱人呀,我这般的想着你,你那里可也有丝毫的牵挂?—— 徐志摩·海边的梦

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

    上篇笔记中学习到:zygote 进程是由 init 进程根据 zygote.rc 脚本中的命令,以 service 的方式启动的。

    在 linux 系统中,service 通常是一种被称为守护进程 (daemon) 的程序。它通常在系统启动时启动,并一直运行于后台,直到系统关闭时终止。如 Apache 服务器的 httpd 守护进程,一直监听 80 端口以等待 http 请求。service 程序通常通过 service 命令来启动或停止。

    在 systemcore ootdir 目录中有 4 个 zygote 相关的启动脚本:

     

    因为 android 5 已开始支持 64bit 程序,所以在 init.rc 中根据系统属性 ro.zygote 的值来引入不同的脚本:

     

    由此也可知,属性 ro.zygote 的值可为:zygote32、zygote64、zygote32_64、zygote64_32。

    这几个脚本的主要不同:

    • init.zygote32.rc:zygote 进程对应的执行程序是 app_process (纯 32bit 模式)
    • init.zygote64.rc:zygote 进程对应的执行程序是 app_process64 (纯 64bit 模式)
    • init.zygote32_64.rc:启动两个 zygote 进程 (名为 zygote 和 zygote_secondary),对应的执行程序分别是 app_process32 (主模式)、app_process64。
    • init.zygote64_32.rc:启动两个 zygote 进程 (名为 zygote 和 zygote_secondary),对应的执行程序分别是 app_process64 (主模式)、app_process32。

    下面仅贴出 init.zygote32_64.rc 的内容:

     1 service zygote /system/bin/app_process32 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote
     2     class main
     3     socket zygote stream 660 root system
     4     onrestart write /sys/android_power/request_state wake
     5     onrestart write /sys/power/state on
     6     onrestart restart media
     7     onrestart restart netd
     8 
     9 service zygote_secondary /system/bin/app_process64 -Xzygote /system/bin --zygote --socket-name=zygote_secondary
    10     class main
    11     socket zygote_secondary stream 660 root system
    12     onrestart restart zygote

    如果读不懂脚本内容,可以看:systemcoreinit eadme.txt。

    app_process 的源码位于 frameworksasecmdsapp_process 路径下,仅有一个 app_main.cpp 文件,入口函数是 main。

    学习资料:(1)http://blog.csdn.net/luoshengyang/article/details/6768304 (2)《深入解析 Android 5.0 系统》

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/ilocker/p/4653406.html
Copyright © 2020-2023  润新知