安卓源码----安卓系统启动过程(初次研究源码,表述不当还请见谅)

安卓系统其实是Linux系统中的一个应用程序,对应的程序是app_process,该程序是在init.rc 中被声明的,Linux启动后会启动该zygote(app_process)进程(该程序由java代码实现,由Dalvik虚拟机运行,对应代码在latest-android-2.3.7_r1\android-2.3.7_r1\frameworks\base\core\java\com\android\internal\os\ZygoteInit.java中)

安卓系统中    文件目录

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

latest-android-2.3.7_r1\android-2.3.7_r1\frameworks\base\core\java\com\android\internal\os\ZygoteInit.java中关键代码

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

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

preload_classes文件位置及内容

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

资源文件加载根据latest-android-2.3.7_r1\android-2.3.7_r1\frameworks\base\core\res\res\values\arrays.xml中声明进行加载

该文件内容如下

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-26 04:24:48

安卓源码----安卓系统启动过程(初次研究源码,表述不当还请见谅)的相关文章

安卓源代码----安卓系统启动过程(初次研究源代码,表述不当还请见谅)

安卓系统事实上是Linux系统中的一个应用程序.相应的程序是app_process,该程序是在init.rc 中被声明的.Linux启动后会启动该zygote(app_process)进程(该程序由java代码实现,由Dalvik虚拟机执行,相应代码在latest-android-2.3.7_r1\android-2.3.7_r1\frameworks\base\core\java\com\android\internal\os\ZygoteInit.java中) 安卓系统中    文件文件夹

Thinkphp5新版聚合VIP影视APP源码 安卓/IOS苹果双端,非常棒的一款在线视频VIP解析

Thinkphp5新版聚合VIP影视APP源码 安卓/IOS苹果双端,非常棒的一款在线视频VIP解析APP,代理裂变版下载地址:Q1013175107这套系统,我是开发者,外面都是乐色,后门无数.不信可以找我测试,秒进后台.删库跑路最新更新日志用户注册可以去除短信注册或保留新用户点击观影区直接跳登录页(不会弹出会员已过期)增加了观看记录增加成10条解析,最新电影页可以在后台添加,美化直播大厅,美化会员中心,独家可以切换会员中心风格 本套源码特色一.此版本为原生双端APP:(安卓+苹果)二.后台支

安卓系统启动过程

韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha [email protected] android启动图示 ==== 当你按下电源开关后Android设备执行了以下步骤. 此处图片中step2中的一个单词拼写错了,Boot Loaeder应该为Boot Loader ==== 第一步:启动电源以及系统启动 当电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行.加载引导程序到RAM,然后执行. 第二步:引导程序 引导程序是在Android操作系统开始运行前的一个

移动端直播系统源码安卓+IOS如何配置!

源码安装说明: 1.源码包完整上传至空间,并解压! 2.执行http://域名/install 根据提示完成安装 3.安装完成,其它的自己调整和设置 该系统源码是一个以php+mysql进行开发的直播系统源码.服务器空间需要支持php + mysql. 功能概述:注册用户可以通过手机APP发起直播功能,直播通过手机前后摄像头以及麦克风提取音视频流,并推送给流媒体服务器然后转发给观看直播的观众用户.观众用户除了观看直播以外还可以通过聊天和礼物系统进行互动.观众用户需要充值后才可以赠送一定价值的礼物

一对一源码安卓IOS源码安装说明!

一对一源码安装说明: 1.源码包完整上传至空间,并解压! 2.执行http域名/install 根据提示完成安装 注册用户点击图标按钮发起直播,未登陆提示登陆 发起直播时需要配置的内容:直播标题 确认开启直播后,主播可以选择手机前后摄像头 主播在直播页面有权限给用户禁言.踢出 直播可以查看自己收到的礼物列表 可以正常跟用户进行互动聊天显示内容与直播间页面一致. 其实一对一源码都是大同小异,万变不离其宗.建个流媒体服务器,现在一般用开源的,然后给手机一个地址推流过去,客户端也用同一个地址观看就ok

phonegap安卓环境下使用BarcodeScanner插件扫描二维码教程

由于一直在使用phoneGap来开发安卓应用,而对于原生Java小白的我最近这几天一直陷入了如何使用phonegap的BarcodeScanner插件这件事情上,可以说查遍了百度和Google,虽然只是一个小小的二维码的功能,但是这里面还是让我学到了许多开发安卓应用的内容,一起共勉吧. 首先,告诉大家的是 1.我使用的phonegap版本是2.9.0,当然对于phonegap版本的东西我也不太了解,不过可以保证的是phonegap2.0.0之后的按照我这种办法来实现二维码是没有问题的. 2.ph

android 从源码分析为什么Listview初次显示时没滚动却自动调用onScroll方法的原因

我们做Listview的分批加载时,需要为Listview调用setOnScrollListener(具体代码可见我上一篇博客) 可是,我们会发现,当运行程序时,listview明明没有滚动,那为什么系统会调用onScroll方法呢?(补充:此时onScrollStateChanged并不会调用) 我们先看setOnScrollListener源码: public void setOnScrollListener(OnScrollListener l) { mOnScrollListener =

linux源码包安装过程

redhat提供的安装包格式为.rpm格式,如果需要自定义安装目录及相应的功能等,需要使用源码包进行安装,使用源码包安装需要如下几个过程 先从官网下载源码安装包,名称一般为.tar.gz,.tgz,.tar.bz2格式,下载完成后解压缩,进入解压缩后的目录 安装开发相应的工具包,比如"development Tools"组,gcc,gcc-c++ 使用./configure --help命令查看使用用法 make && make install 设置环境变量 可以在/e

5-2 源码包安装过程

1.安装准备 <1>安装C语言编译器 gcc <2>下载源码包: http://mirror.bit.edu.cn/apache/httpd/ 下载2.2.9的httpd <3>可以使用WinSCP将本机上的软件拷贝到虚拟机,注意更改权限 <4>rpm和源码包可以分别安装,但是只能起用一个.因为占用相同端口80 2.安装注意事项 <1>源代码保存位置: /usr/local/src <2>软件安装位置: /usr/local/ <