android教程(底层)

android教程(底层)

ID:15725385

大小:47.50 KB

页数:14页

时间:2018-08-05

android教程(底层)_第1页
android教程(底层)_第2页
android教程(底层)_第3页
android教程(底层)_第4页
android教程(底层)_第5页
资源描述:

《android教程(底层)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、android教程(底层)本文由zkgg133贡献ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。Android开发杂谈开发杂谈广州网易,闻波@wenbob内容提要了解系统?了解程序?优化与混淆?Hacking了解系统系统组成与特点?系统启动过程典型的手机硬件方案Android的体系结构的体系结构五层体系结构解读ApplicationAndroid内置程序:Home、Contracts、Phone…内置程序:内置程序、、Google闭源程序:GoogleClient……闭源程序:闭源程序Vendor程序:HTCDream,OMS……程序:程序,Frame

2、workAndroidCoreCode(java)()Vendorextensions……Nativelibraries功能函数库:功能函数库:C/C++库、音视频、SQLite、OpenGL/ES、库音视频、、、Webkit、FreeType、SSL……、、AndroidJNIAndroidDalvikVMUserspacedrivers?LinuxKernel精简版的IPC补丁:Binder补丁:精简版的补丁更积极的电源管理:没有人宣布要用的部件,更积极的电源管理:没有人宣布要用的部件,就关掉函数调用关系Android的重要特色的重要特色?HAL许多驱动程序以用户态的方式运行,依赖内核

3、的机制。许多驱动程序以用户态的方式运行,依赖内核的HAL机制。机制CameraService、SurfaceFlinger、AudioFlinger等都位于用户态。等都位于用户态。、、等都位于用户态Bionic精简版的C/C++运行库,类似于嵌入式系统中常用的uCLib。运行库,类似于嵌入式系统中常用的精简版的运行库。被重复发明的轮子。为什么不用uCLib?商业用途的版权考虑,不想被重复发明的轮子。为什么不用?商业用途的版权考虑,限制。被LGPL限制。限制SurfaceFlinger表面渲染,目前是比较低效的代码实现有待芯片厂商来改善。代码实现,表面渲染,目前是比较低效的C代码实现,有待芯

4、片厂商来改善。Android的重要特色的重要特色?BrowserWebkit移植版,并不是Chrome,无Plugins接口移植版,并不是移植版,接口内置Googlegears(无源代码内置(无源代码)2.x提供了更多的提供了更多的HTML5特性,如本地存储等特性,提供了更多的特性不支持文件上传/frameworks/base/cmds/app_process/app_main.cpp/frameworks/base/core/jni/AndroidRuntime.cppinit创建的创建的app_process进程被称为进程被称为zygote(受精卵。运行后受精卵)。创建的进程被称为受精

5、卵创建socket:/dev/socket/zygote,侦听和处理运行字节码创建:,程序的请求init.rcline243:servicezygote/system/bin/app_process-Xzygote/system/bin--zygote--startsystem-serversocketzygotestream666onrestartwrite/sys/android_power/request_statewakeonrestartwrite/sys/power/stateoninit设置了参数“--zygote”,进入服务模式。具体实现在设置了参数“设置了参数,进入服务模

6、式。具体实现在Java类:com.android.internal.os.ZygoteInitZygote服务器服务器zygote在完成了虚拟机的初始化后,启动UNIXdomainsocket服务,在完成了虚拟机的初始化后,启动服务,在完成了虚拟机的初始化后服务循环接受命令,提供创建虚拟机的服务。循环接受命令,提供创建虚拟机的服务。voidrun()throwsZygoteInit.MethodAndArgsCaller{intloopCount=ZygoteInit.GC_LOOP_COUNT;while(true){if(loopCount<=0){ZygoteInit.gc();lo

7、opCount=ZygoteInit.GC_LOOP_COUNT;}else{loopCount--;}if(runOnce()){break;}}}之后,之后,当需要运行manifest文件中的文件中的,,和中的类时,就中的类时,和中的类时通过socket向zygote发送启动命令。发送启动命令。会通过向发送启动命令进程的执行主要有两种情况:进程的执行主要有两种情况:receiver收到特定的响应动

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。