1 / 14
文档名称:

android教程(底层).doc

格式:doc   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

android教程(底层).doc

上传人:xxj16588 2016/3/28 文件大小:0 KB

下载得到文件列表

android教程(底层).doc

相关文档

文档介绍

文档介绍: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 (无源代码内置(无源代码) 提供了更多的提供了更多的 HTML5 特性,如本地存储等特性, 提供了更多的特性不支持文件上传/frameworks/base/cmds/app_process/ /frameworks/base/core/jni/ init 创建的创建的 app_process 进程被称为进程被称为 zygote( 受精卵。运行后受精卵)。创建的进程被称为受精卵创建 socket : /dev/socket/zygote , 侦听和处理运行字节码创建:, 程序的请求 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 类: Zygote 服务器服务器 zygote 在完成了虚拟机的初始化后,启动 UNIX domain socke t 服务, 在完成了虚拟机的初始化后,启动服务, 在完成了虚拟机的初始化后服务循环接受命令,提供创建虚拟机的服务。循环接受命令,提供创建虚拟机的服务。 void run() throws { int loopCount = ; while (true) { if (loopCount <= 0){ (); loopCou