一.android系统架构图及各层介绍
2. 应用框架层:这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的结构设计,但是必须要遵守其框架的开发原则。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。
3. 统运行库(C/C++库以及Android运行库)层:当使用Android应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其更好的为我们服务,比如其中的SQLite(关系数据库),Webkit,chromium(Web浏览器引擎),Dalivk,ART(Android Runtime)。
4.Linux内核层:Android的核心系统服务基于Linux内核,如安全性、内存管理、进程管理、用户权限管理、网络协议栈和驱动模型等都依赖于该内核,比如Binder IPC(Internet Process Connection进程间通信)驱动,android的一个特殊驱动程序,具有单独的设备节点,提供进程间通信的功能。
若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Linux内核。找准定位,事倍功半。
二. 随笔整理(导读)
Android 应用层:
Android 框架层:
- Android 源码分析(一) 开篇介绍
- Android 源码分析(二) Activity 启动分析
- Android 源码分析(三) Service 启动分析
- Android 源码分析(四) Handler 异步消息机制
- Android 源码分析(五) Zygote 进程
- Android 源码分析(六) SystemServer 进程
- Android 源码分析(七) Launcher 桌面程序启动分析
- Android 源码分析(八) Launcher 桌面启动App过程
- Android 源码分析(九) Init 启动分析
- Android 源码分析(十) Dalvik 虚拟机创建过程
- Android 源码分析(十一) 事件传递机制Android源码分析(十二)ServiceManager服务分析
- Android源码分析(十二)ServiceManager服务分析
- Android源码分析(十三)ActivityManagerService服务分析
- Android源码分析(十四)PackageManagerService服务分析
三.学习资料
1.Android源码 https://pan.baidu.com/s/15PNt1W4jjxZXM9o-qCC94A 密码:p3td
2.Android 6.0 离线API https://pan.baidu.com/s/17E01X32lHOrz0FN_QlXmwQ 密码: styi
3.探索Android FrameWork底层开发视频 https://pan.baidu.com/s/14BiZNm2C362afq3K-c3AJA 密码: i7yd
声明:
由于本人才疏学浅,有许多知识点还无法做到融会贯通,所以如果您发现文章有误的地方还请指出,督促成长。最后,如果您喜欢一些文中介绍的知识点,承蒙厚爱,
可以转载,但是希望您注明下出处,因为如果有误,我会进行修改,方便读者能找到原文,避免误导读者。
在学习过程中借鉴也翻阅了很多网上大牛的一些文章,加深自己的理解,如果文中未注明出处原文,还请原作者谅解,因为实在是找不到原文了。这里我推荐两个对Android 框架层研究比较透彻的两位大牛的bolg,他们帮助我加深了很多概念的理解。感谢他们。
《深入理解Android系列》丛书的作者: http://www.cnblogs.com/innost
《Android系统源代码情景分析》作者: https://blog.csdn.net/Luoshengyang/
《深入理解Android系列》丛书的作者: http://www.cnblogs.com/innost
《Android系统源代码情景分析》作者: https://blog.csdn.net/Luoshengyang/
我的系列随笔只是作为一个自己的学习笔记,理解程度无法与两位大牛著作对比,但是可以作为读者或者自己初步探索Android源码和理解其实现原理的第一步。
在工作中,会发现,其实很多东西,我们都会,但是就是讲不出来。学计算机出生,保持严谨性是必须的,有时候正因为时刻的严谨性,让我们不敢轻易对一些概念东西给出自己观点,怕说错,归根到底是对其实现原理理解不够透彻,让我们畏手畏脚的进行总结。“大胆假设,小心验证” 我想这句话可以作为我们学习技术的一个参考。