欢迎来到天天文库
浏览记录
ID:15176143
大小:47.50 KB
页数:14页
时间:2018-08-01
《android教程(底层)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、android教程(底层)本文由zkgg133贡献ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。Android开发杂谈开发杂谈广州网易,闻波@wenbob内容提要了解系统?了解程序?优化与混淆?Hacking了解系统系统组成与特点?系统启动过程典型的手机硬件方案Android的体系结构的体系结构五层体系结构解读ApplicationAndroid内置程序:Home、Contracts、Phone…内置程序:内置程序、、Google闭源程序:GoogleClient……闭源程序:闭源程序Vendo
2、r程序:HTCDream,OMS……程序:程序,FrameworkAndroidCoreCode(java)()Vendorextensions……Nativelibraries功能函数库:功能函数库:C/C++库、音视频、SQLite、OpenGL/ES、库音视频、、、Webkit、FreeType、SSL……、、AndroidJNIAndroidDalvikVMUserspacedrivers?LinuxKernel精简版的IPC补丁:Binder补丁:精简版的补丁更积极的电源管理:没有人宣布要用的部件,更积极的电源管理:没有人
3、宣布要用的部件,就关掉函数调用关系Android的重要特色的重要特色?HAL许多驱动程序以用户态的方式运行,依赖内核的机制。许多驱动程序以用户态的方式运行,依赖内核的HAL机制。机制CameraService、SurfaceFlinger、AudioFlinger等都位于用户态。等都位于用户态。、、等都位于用户态Bionic精简版的C/C++运行库,类似于嵌入式系统中常用的uCLib。运行库,类似于嵌入式系统中常用的精简版的运行库。被重复发明的轮子。为什么不用uCLib?商业用途的版权考虑,不想被重复发明的轮子。为什么不用?商业用途
4、的版权考虑,限制。被LGPL限制。限制SurfaceFlinger表面渲染,目前是比较低效的代码实现有待芯片厂商来改善。代码实现,表面渲染,目前是比较低效的C代码实现,有待芯片厂商来改善。Android的重要特色的重要特色?BrowserWebkit移植版,并不是Chrome,无Plugins接口移植版,并不是移植版,接口内置Googlegears(无源代码内置(无源代码)2.x提供了更多的提供了更多的HTML5特性,如本地存储等特性,提供了更多的特性不支持文件上传/frameworks/base/cmds/app_process/
5、app_main.cpp/frameworks/base/core/jni/AndroidRuntime.cppinit创建的创建的app_process进程被称为进程被称为zygote(受精卵。运行后受精卵)。创建的进程被称为受精卵创建socket:/dev/socket/zygote,侦听和处理运行字节码创建:,程序的请求init.rcline243:servicezygote/system/bin/app_process-Xzygote/system/bin--zygote--startsystem-serversocketz
6、ygotestream666onrestartwrite/sys/android_power/request_statewakeonrestartwrite/sys/power/stateoninit设置了参数“--zygote”,进入服务模式。具体实现在设置了参数“设置了参数,进入服务模式。具体实现在Java类:com.android.internal.os.ZygoteInitZygote服务器服务器zygote在完成了虚拟机的初始化后,启动UNIXdomainsocket服务,在完成了虚拟机的初始化后,启动服务,在完成了虚拟机
7、的初始化后服务循环接受命令,提供创建虚拟机的服务。循环接受命令,提供创建虚拟机的服务。voidrun()throwsZygoteInit.MethodAndArgsCaller{intloopCount=ZygoteInit.GC_LOOP_COUNT;while(true){if(loopCount<=0){ZygoteInit.gc();loopCount=ZygoteInit.GC_LOOP_COUNT;}else{loopCount--;}if(runOnce()){break;}}}之后,之后,当需要运行manifest文
8、件中的文件中的,,和中的类时,就中的类时,和中的类时通过socket向zygote发送启动命令。发送启动命令。会通过向发送启动命令进程的执行主要有两种情况:进程的执行主要有两种情况:receiver收到特定的响应动
此文档下载收益归作者所有