Android重修之路:Framework开发之AOSP源码下载与编译

577 阅读3分钟

前言

当前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…