首发公众号: Android程序员日记
做者: 贤榆的榆
若是你以为有帮助欢迎 关注、赞扬、转发
阅读时间:2616字 6分钟
很早就像本身搭一个Android源码阅读环境,折腾了几回无果,就搁置了。最近有点闲暇时间,再加上也以为是时候更深入的认识Android系统了,因此再折腾了一次,没想到成功了,并且是用AndroidStudio阅读,仍是那个熟悉的界面,仍是那个熟悉的快捷键,哈哈,你也试试?html
首先呢,以前有研究过用AndroidStudio阅读源码的,应该都知道,若是想用AS阅读Android源码差很少分这样四个步骤android
尝试过的朋友就知道,编译源码这个步骤应该是一个比较让人难过的过程。可能你的编译花的时间比你下载还长。不过在尝试了不少次以后,我也完美的搭好了AS阅读源码的环境。下面我就告诉你们如何作到不用编译就能导入AS阅读Android源码。git
AOSP(Android Open Source Project)初始化包下载地址:
https://mirrors.tuna.tsinghua...
将该网址复制到浏览器便可下载,迅雷好像不能使用,至少个人没用。另外须要注意的是,下载的过程当中,不要合上电脑。我都下载了18g就由于合了一下电脑,结果就要从头再来了。程序员
固然源代码下载,除了直接下载这个初始化包,你也能够先装repo工具,而后用repo同步。反正不管是哪一种方式,中间都不能断。
关于源码下载更多信息能够查看下面两个网站:
过清华大学开源软件镜像站:
https://mirrors.tuna.tsinghua...
google官网:
https://source.android.com/so...github
差很少下载最新的初始化包,你须要好几个小时,网速很差,甚至要10几个小时。那么在这个过程当中我就能够把后面同步和检出代码须要的的repo工具安装一下,在命令行中执行以下代码,(个人是mac,win的话,你们能够google一下对应的教程,应该会有不少)api
mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
下载完成之后会获得一个37g的以aosp-latest命名的tar文件,而后将其解压能够看到里面有一个.repo
的隐藏文件(mac 下载查看隐藏文件的快捷键Command+Shift+ .
)浏览器
接下来使用命令行进入到解压的根目录而后运行repo sync
,而后就能够同步到最新的分支,并检出其master分支。安全
固然你也能够不一样步直接使用 repo sync -l
来检出repo里面的源码项目。
检出后的效果是这样的:curl
其实之因此须要编译,这个和咱们的Android项目是一个道理,咱们从github上拉下来的开源Android项目也是没有.iml等配置文件的,须要咱们本身再编译一边,才能让这个项目里的个文件在AS关联起来。工具
那么在这里之因此不用编译,不是真的无需编译。而是有一位简书ID是difcareer的小伙伴已经帮咱们把各个版本须要的AS配置文件已经编译好,咱们只须要将它下载下来放到项目的根目录就ok了。
as配置文件git地址:
https://github.com/difcareer/...
注:
若是你忘了本身源码检出的版本能够经过以下方式查看:
根据目录'/build/core/version_defaults.mk' 打开version_defaults.mk文件,而后找到PLATFORM_SDK_VERSION
这个关键字的值,就能够在下表中找出相应的版本。
若是是28 固然就是Android 9.0了
准备工做已经作完了下面就能够像导入一个Android项目同样导入AOSP目录了。进入AOSP目录选择被识别出来的.ipr
文件,而后点击open便可。
这里有两个个问题须要注意一下:
File->Invalidate Cashes/Restart...
,让AS从新启动编译一下项目。
这个编译的状态差很少会持续10几分钟。而后将右边文件目录切换到Project模式下:
Scanning file to index....
不动
解决办法以下(Open module setting --> Modules --> 找到gen文件夹 --> 选择Resources
)
那么接下来咱们就能够自由的翱游在Android源码的海洋了,让咱们来看一下吧!
最后,要感谢一下「代码GG之家」的明哥,8年Android手机开发的老大哥。在源码阅读环境搭建和源码阅读方式与技巧上都给我很大的帮助。这里我把明哥在星球里的回答贴出来分享一下:
另外,我也强烈推荐明哥的「Android答疑解惑」星球。毕竟,成长的道路上,咱们须要弄清的不是距离起点有多远,而是距离下一个终点有多近。我相信明哥会是那个让可以告诉你离终点有多近的人。
系列文章
- 「Do.006」Android实战项目(1)——我想说“开始吧”
- 「Do.007」Android实战项目(2)——使用Github进行版本管理
- 「Do.008」Android实战项目(3)——Git 分支管理模型
- 「Do.009」Android实战项目(4)——AndroidStudio插件推荐(磨刀)
- 「Do.014」Android实战项目(5)—— gradle 配置release与debug环境分离
其余