Android源码学习

 

Android源码

下载

2018-2-4

直接使用清华大学的镜像【注意不能使用VMware + Ubuntu + 共享文件夹的方式,主要英文共享文件夹不支持linux某些文件】

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

 

目录结构

2018-2-5

http://blog.****.net/itachi85/article/details/54695046

详细目录结构

http://blog.****.net/ieearth/article/details/64930164

 

​​​​​​​编译

从网上下载的android源码不包括u-boot和linux内核,需要下载对应的版本,然后在编译。

 

android启动流程

 

2018-2-6

Android 的底层基于 Linux Kernel,因此从启动流程来看,先启动 Linux Kernel,然后才启动 Android Framework,最后进入应用程序 Launcher,也就是看到的主界面。

 

​​​​​​​Linux内核启动

http://blog.****.net/yanshazi/article/details/50187315

Android源码学习

以上分析基于 linux-4.4.52内核,至此,linux内核分析完毕。

 

 

 

​​​​​​​Android Framework启动

2018-2-7

上面说的开启“/init”进程,而这个在根目录下的init可执行文件,可能是android源码中的/system/core/init/init.cpp文件编译出来的。

http://blog.****.net/yanshazi/article/details/50224149

 

为了学习AIL,读者可以到自己Android手机的根目录寻找init.rc文件,最好下载到本地以便查看,如果有编译好的Android源代码,在<Android源代码根目录>out/target/product/generic/root目录也可找到init.rc文件。

 

ServiceManager, Zygote, ActivityManagerService 和 PackageManagerService 等系统服务已经启动起来,

 

其中,android7.1.1版本的ServiceManager对应的启动脚本是/system/etc/init/servicemanager.rc

 

 

​​​​​​​应用程序 Launcher启动

也就是最终会看到的 Android 桌面的启动。

 

http://blog.****.net/yanshazi/article/details/50287479