zoukankan      html  css  js  c++  java
  • 安卓源代码----安卓系统启动过程(初次研究源代码,表述不当还请见谅)

    安卓系统事实上是Linux系统中的一个应用程序。相应的程序是app_process,该程序是在init.rc 中被声明的。Linux启动后会启动该zygote(app_process)进程(该程序由java代码实现,由Dalvik虚拟机执行,相应代码在latest-android-2.3.7_r1android-2.3.7_r1frameworksasecorejavacomandroidinternalosygoteInit.java中)


    安卓系统中    文件文件夹



    安卓2.3源代码中init.rc文件路径及内容



    latest-android-2.3.7_r1android-2.3.7_r1frameworksasecorejavacomandroidinternalosygoteInit.java中关键代码



    main函数中会首先启动服务端Socket。用于接收启动Dalvik进程的命令

    然后会载入一些安卓系统中应用共享的类以及资源文件。ZygoteInit会依据preload_classes文件载入共享的类


    preload_classes文件位置及内容

            该文件里总共列出了1830个类,这些类都是须要被载入的,载入多导致开机慢。但载入多意味着安卓应用执行时大部分共享的类已经被载入过 了,从而提高了安卓应用执行速度



    资源文件载入依据latest-android-2.3.7_r1android-2.3.7_r1frameworksasecore es esvaluesarrays.xml中声明进行载入

    该文件内容例如以下



    载入完以上资源后zygote会孵化出第一个Dalvik进程SystemServer,SystemServer中会创建一个Socketclient,由ActivityManageService负责管理。之后全部的Dalvik进程都将通过该Socketclient间接被启动,当须要启动新APK进程时,AmS会通过该Socketclient向zygote进程的Socket服务端发送一个启动命令,然后zygote会孵化出新的进程



  • 相关阅读:
    Linuxboot:linux as UEFI,linux over UEFI
    在阿里云上安装黑苹果的一种设想
    Dsm as deepin mate(3):离线编辑初始镜像,让skynas本地验证启动安装/升级
    硬件融合的新起点:虚拟firmware,avatt的编译(2)
    将虚拟机集成在BIOS和EFI层,vavvt的编译(1)
    2013.08.19—2013.08.23周总结
    关于自我介绍
    Java入门系列:实例讲解ArrayList用法
    Hadoop文件的基本操作
    继承关系的理解
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7214517.html
Copyright © 2011-2022 走看看