android系统源码初探

运用gcc的交叉编译形成的多平台。HAL屏蔽硬件细节时也编译了多个平台的,因此可选择生成多平台系统。
有几张好的表:https://www.jianshu.com/p/ad87f687f2fa

学习计划:

  1. dalivik和art是怎么实现的执行字节码。都有什么功能?
  2. 使用dalvik/art动态加载并调用jar/dex/apk - art与dalivik的不同?它又是如何加载dex并执行的。类的加载管理机制对比jvm
  3. 使用native加载并调用jar/dex/apk
  4. 使用dalvik/art加载并调用so
  5. 使用native加载并调用so
  6. app安装过程
  7. app启动过程:从点击图标开始
  8. 各种脱壳机的原理(读脱壳机源码)
  9. 各加固的原理(分析/脱各加固)

以上先开发出来,再看源码分析+文章。记录流程与图

看情况阅读….工作量大的暂时不用的跳过,以使用先为主。

阅读环境搭建

win下

  1. 更新win10 到1803。该版本增加了大量linux子系统的支持,之前一直无法在win下阅读源码的原因就是文件名不区分大小写的问题
  2. 安装linux子系统。参考:https://walterlv.com/post/case-sensitive-in-windows-file-system.html
  3. win的c、d盘挂载在linux子系统下的mnt中。找到源码包解压(linux文件系统可区分大小写)
  4. 用win的编辑器(Source Insight4.0)加载该工程,若过大失败可以分开目录加载
  5. 开启Source Insight4.0的一系列方便选项:options前俩项中。
  6. staruml准备、notpad++准备
  7. 开始舒服的阅读…….

linux下

  1. 同步下源码
  2. vim插件ctrlp等…..
  3. 开始不太舒服的阅读……