- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android教程(底层)
android教程(底层)
本文由zkgg133贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
Android开发杂谈 开发杂谈
广州网易,闻波 @wenbob
内容提要
了解系统 ? 了解程序 ? 优化与混淆 ? Hacking
了解系统
系统组成与特点 ? 系统启动过程
典型的手机硬件方案
Android的体系结构 的体系结构
五层体系结构解读
Application
Android内置程序:Home、Contracts、Phone… 内置程序: 内置程序 、 、 Google闭源程序:Google Client…… 闭源程序: 闭源程序 Vendor程序:HTC Dream,OMS…… 程序: 程序 ,
Framework
Android Core Code(java) ( ) Vendor extensions……
Native libraries
功能函数库: 功能函数库:C/C++库、音视频、SQLite、OpenGL/ES、 库 音视频、 、 、 Webkit、FreeType、SSL…… 、 、 Android JNI Android Dalvik VM
Userspace drivers ? Linux Kernel
精简版的IPC补丁:Binder 补丁: 精简版的 补丁 更积极的电源管理:没有人宣布要用的部件, 更积极的电源管理:没有人宣布要用的部件,就关掉
函数调用关系
Android的重要特色 的重要特色 ?HAL
许多驱动程序以用户态的方式运行,依赖内核的 机制。 许多驱动程序以用户态的方式运行,依赖内核的HAL机制。 机制 CameraService、SurfaceFlinger、AudioFlinger等都位于用户态。 等都位于用户态。 、 、 等都位于用户态
Bionic
精简版的C/C++运行库,类似于嵌入式系统中常用的uCLib。 运行库,类似于嵌入式系统中常用的 精简版的 运行库 。 被重复发明的轮子。为什么不用uCLib?商业用途的版权考虑,不想 被重复发明的轮子。为什么不用 ?商业用途的版权考虑, 限制。 被LGPL限制。 限制
Surface Flinger
表面渲染,目前是比较低效的 代码实现 有待芯片厂商来改善。 代码实现, 表面渲染,目前是比较低效的C代码实现,有待芯片厂商来改善。
Android的重要特色 的重要特色 ?Browser
Webkit移植版,并不是Chrome,无Plugins接口 移植版,并不是 移植版 , 接口 内置Google gears(无源代码 内置 (无源代码) 2.x提供了更多的 提供了更多的HTML5特性,如本地存储等 特性, 提供了更多的 特性 不支持文件上传 /frameworks/base/cmds/app_process/app_main.cpp /frameworks/base/core/jni/AndroidRuntime.cpp
init创建的 创建的app_process进程被称为 进程被称为zygote(受精卵 。运行后 受精卵)。 创建的 进程被称为 受精卵 创建socket:/dev/socket/zygote,侦听和处理运行字节码 创建 : , 程序的请求
init.rc line 243: service zygote /system/bin/app_process -Xzygote /system/bin --zygote --startsystem-server socket zygote stream 666 onrestart write /sys/android_power/request_state wake onrestart write /sys/power/state on
init设置了参数“--zygote”,进入服务模式。具体实现在 设置了参数“ 设置了参数 ,进入服务模式。具体实现在Java 类: ernal.os.ZygoteInit
Zygote服务器 服务器
zygote在完成了虚拟机的初始化后,启动UNIX domain socket服务, 在完成了虚拟机的初始化后,启动 服务, 在完成了虚拟机的初始化后 服务 循环接受命令,提供创建虚拟机的服务。 循环接受命令,提供创建虚拟机的服务。
void run() throws ZygoteInit.MethodAndArgsCaller
文档评论(0)