Administrator
发布于 2024-01-07 / 9 阅读 / 0 评论 / 0 点赞

安卓源码学习其一

作者:墨小西
链接:https://www.zhihu.com/question/19759722/answer/17019083
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.宏观上看,Android源码分为功能实现上的纵向,和功能拓展上的横向。在阅读源码时需要把握好着两个思路。

譬如你需要研究音频系统的实现原理,纵向:你需要从一个音乐的开始播放追踪,一路下来,你发现解码库的调用,共享内存的创建和使用,路由的切换,音频输入设备的开启,音频流的开始。

譬如你要看音频系统包括哪些内容,横向:通过Framework的接口,你会发现,音频系统主要包括:放音,录音,路由切换,音效处理等。

2.Android的功能模块绝大部分是C/S架构

你心里一定需要有这个层级关系,你需要思路清晰地找到Server的位置,它才是你需要攻破的城,上面的libraries是不是很亲切的样子?看完它长成啥样后,然后你才能发现HAL和Kernel一层层地剥离。

很多研究源码的同学兜兜转转,始终在JAVA层上,这是不科学的,要知道libraries才是它的精髓啊。

3.Android的底层是Linux Kernel

在理解1,2后,还是需要对Kernel部分有个简单的理解,起码你要熟悉kernel的基础协议吧!你要能看懂电路图吧!你要熟悉设备的开启和关闭吧!你要熟悉调寄存器了吧!这方面的书太多了,我建议根据实例去阅读,它并不复杂,不需要一本本厚书来铺垫。

在libraries和kernel间,可能还会有个HAL的东东,其实它是对kernel层的封装,方便各个硬件的接口统一。这样,如果我换个硬件,不用跑了长得很复杂的libraries里面改了,kernel调试好了后,改改HAL就好了。

环境的搭建

AOSP 镜像使用帮助 — USTC Mirror Help 文档

Android 开发者 Codelab  |  Android 开源项目  |  Android Open Source Project (google.cn)

1.repo安装及配置

apt install repo

2. 换源ustc,repo源

vim /usr/bin/repo

REPO_UR 的值替换为 https://gerrit-googlesource.proxy.ustclug.org/git-repoL

3. 链接python

sudo ln -s /usr/bin/python3 /usr/bin/pytho

4. git消息

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

5.yes

6.repo sync -c -j8

repo sync -c -j8


评论