前言
当前Android的就业市场我想不用多说,干这块的大家都知道,可以说和最近炎热的天气形成了鲜明的对比。
其实不论那个行业感觉这几年真的都太难了,就重庆而言有人说每三个重庆人就有一个是失业的,虽然感觉有点夸张了,但是实际真的也差不太多的。
所以能多扩展一点自己的知识技能,也可以适当增加一点自己的竞争力,正好最近因为业务关系,重新对Framework这块做一个复习、学习。
正文
这次主要分享的是下载AOSP代码的环境准备、代码下载和基础编译几步。 官方链接:source.android.com/docs/setup/…
环境依赖
- 系统要求:Linux系统环境,这里推荐Ubuntu系统,建议使用 SSD,至少 200GB 可用空间,内存 16GB 以上;
- 网络要求:如果不走国内源,就需要你能访问外网的网络环境
- 软件要求:Python、Git、repo...
环境安装
Python
python需要注意一点就是建议直接安装Python3,python2.7啥的就不要安装了,如果安装的是Python2.7会限制git的版本,限制在2.20以下版本才可以很好兼容。
当然一般Ubuntu系统会自带python环境,可以优先检查一下预安装的是否符合需求,如果不符合可以先卸载后重装。
// 更新软件环境
sudo update
// 安装python3
sudo apt install python3
// 验证安装版本
python3 --version
Git
和python一样,可以先检查一下系统中是否存在git,如果不存在可安装。
// 更新软件
sudo update
// 检查当前是否已安装git
git --version
// 安装git
sudo apt install git
Repo
repo的安装就比上面的快速安装要稍微复杂一点点,具体操作如下:
创建相关目录并添加环境变量
mkdir -p ~/bin
PATH=~/bin:$PATH
下载repo脚本
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
// 上述地址如果你无法访问,可以用下面国内源
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
赋予repo可执行
chmod a+x ~/bin/repo
将repo添加到系统环境变量中(可选)
这里的配置主要是方便后续可以直接使用,不用重新配置。
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
下载源码
由于官方源大多数人都无法下载,所以这里直接使用国内的地址,清华的源:
不指定版本下载:
# 下载初始化包
wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
# 解压
tar xf aosp-latest.tar
# 进入解压目录
cd AOSP
# 同步最新代码
repo sync
注:这里不指定不是说就没法下载想要的Android版本了,初始化包更新下载解压后,也是可以自己切换目标分支,然后下载代码的。
指定Android版本下载
mkdir ~/aosp
cd ~/aosp
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r75
repo sync
由于Android AOSP源码是比较大的,所以下载过程耗时也相对较长,如果网络环境和磁盘读写速度较好,下载速度相对会快一些。
编译ROM
加载编译环境
source build/envsetup.sh
通过上述命令可以加载编译环境,让后续过程可以使用相应命令进行编译,不加载命令不可用。
选择编译目标
这里就可以选择你要编译的目标版本,包括user版本、debug版本,甚至模拟器版本都可以。
lunch sys_mssi_spm_64_cn-user
注: 如果你不知道有那些目标可以用来编译,可以直接只输入lunch命令,它会将当前源码中支持的所有目标都给罗列出来,你只需要选择你想要的就行了。
开始编译
直接使用make命令就可以发起编译。
// 这里的-j32就是使用多少线程进行编译,也可以不指定
make -j32
最后,编译时间和是否存在问题,受到你本地环境的限制,内存越大,磁盘读写速度快、整体性能高编译就较快,反之就很慢,好几小时到几十小时都是有可能的。
写在最后
近期个人将分享AOSP的一些小知识点,如果大家对某一个方向或者知识点感兴趣的,也可以私信、留言交流,个人优先考虑整理分享给大家~
本文首发于个人微信公众号【一念杂记】,欢迎关注获取更多个人分享:mp.weixin.qq.com/s/B5IrTTJXR…