46525fcb44d46d6b52c6d717a82caecb.png

近几年一直从事手机整机的解决方案开发,从APP的开发,到Framework的构建,从Nativate C进程的调试,到内核驱动的设计,最后到Modem的平台开发。虽然是从上到下都做了个遍,但是没有真正的输出,感觉在技术上的成就不能另自己满足,之前也看了不少大牛的博客自己也写了博客,但是最终还是没能坚持下去,感觉跟大牛的差距还是存在,因此,准备重新开始,用一系列的文章记录下自己Android再出发的学习历程,主要还是在Android系统级的源码研究上,我把这个历程称作《Android取经之路》。

原先的博客:http://tianger.github.io/

VX公众号: 大猫玩程序

博客已经长草多年,现在从新出发,预计用一年多的时间完成这个取经历程,希望自己能坚持下去。

Android背景

现如今,几乎人手一台手机,据统计,平均每人每天花在手机上的时间达到了3-4小时,现在主流的支柱型手机系统是Android、IOS。

研究公司Gartner最近分享了一份数据,数据显示去年全球销售的智能手机中,有99.9%都是基于Android或iOS平台的,Android比iOS的市场占有率高很多,分别是85.9%与14%,因为有每年都有上百款新手机搭载Android问世。2019年3月,Google发布了Android 10.0测试版。

既然Android那么流行,那么到底他是如何工作的,他的内部构造是什么,很值得我们深入研究学习。最近也看了老罗-罗升阳的Android之旅,老罗不愧为大神级人物,每个模块讲解的都很深入,但是其中都是基于Android2.2,与现在的版本已经差了好几个大版本,现在最新的版本是Android10.0-Android Q,因此接下来我会基于Android10.0的源码进行展开学习。

c2ea135e759312539dc554a185e470ec.png

准备学习分享的内容从以下几个方面进行:

语​法:

C语言:

入门书籍:《The C ProGramming Language》

进阶书籍:《C与指针》

参考我的头条号:@大猫玩程序《C与指针心得》

JAVA语言:

入门书籍:《Head first java》

进阶书籍:《thinking in java》

C++语言:

建议书籍:《C++ Primer》、《C++ Primer Plus》

参考我的头条号:@大猫玩程序《C++ primer plus 心得》

MakeFile:

入门书籍:《跟我一起写Makefile》

Python:

入门书籍:《Python核心编程》

参考我的博客:《跟我一起写Python》 http://tianger.github.io/categories/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99python/

Android系统源码学习:

一、Android的系统架构

二、Android系统启动

  1. Init进程
  2. zygote
  3. System_server
  4. SericeManager
  5. PackageManager
  6. App启动进程

三、Android的通信机制

1.IPC 进程间通信:

(1)管道PIPE

(2)消息队列

(3)共享内存

(4)套接字 Socket

(5)信号量-signal (kernel使用)

(6)Binder -binder, vndbinder, hwbinder

2.进程内--线程间通信

(1)Handler

3. 多线程机制

4. 线程的同步异步机制

四、四大组件

  1. Activity
  2. Service
  3. Broadcast Receiver
  4. Content Provider

五、进程系列

  1. 进程创建流程
  2. 杀进程原理
  3. 线程创建流程
  4. 进程优先级
  5. 进程调度

六、系统服务

  1. DropBox
  2. 日志系统--Logd
  3. Telepony--RILD--QCRIL

七、内存、存储机制

  1. Linux内存管理
  2. Android内存分析方法-addr2line, malloc_debug
  3. Android存储系统

八、虚拟机

  1. ART

九、系统稳定性

  1. ANR
  2. JAVA crash
  3. Nativate C crash
  4. watchdog
  5. ART虚拟机之Trace原理
  6. Native进程之Trace原理

十、设计模式

  1. 单例
  2. 反射机制
  3. 工厂模式
  4. 观察者
  5. .....

十一、内核的学习

  1. 如何写一个内核驱动
  2. 内核与Nativate C的交互方法

十二、Selinux

  1. 原理
  2. 如何配置
  3. neverallow解决办法

十三、Android编译原理

  1. 理解编译过程
  2. 理解Makefile和soong的编译语法,配置及过程
  3. Android bp的配置方法

十四、Treble架构分析

十五、高通处理器下载原理

  1. Sahara协议
  2. Firehose协议

十六、高通Modem的task创建以及RCinit原理

  1. 如何创建一个TASK
  2. RCInit原理,task启动、初始化时序

十七、Trace32解析高通死机Dump并进行内存分析

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐