系统 Ubuntu 24.04.2 LTS
CPU Intel® Core™ i5-14600K × 20
内存 32.0 GiB
硬盘 1.0 TB
下载源代码
AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- 下载 repo 工具:
mkdir ~/bin
PATH=~/bin:$PATH
cd ~/bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
- 初始化仓库:
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r43
- 同步源码树(以后只需执行这条命令来同步):
repo sync
下载总计耗时25分钟
安装编译工具
参考官方文档:source.android.google.cn/docs/setup/…
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
# 找不到libncurses5,可以使用本机更高版本替代
sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6.4 /usr/lib/x86_64-linux-gnu/libncurses.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6.4 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
- libncurses.so.5
- libtinfo.so.5
这俩必须同时替换。。。或者采用更新安装源的方式:
编译Android
chen@chen:~/AOSP$ source build/envsetup.sh
chen@chen:~/AOSP$ lunch
修改 build/make/target/product/AndroidProducts.mk 文件,增加 sdk_phone_x86_64-eng 部分
执行 lunch sdk_phone_x86_64-eng
执行 m 编译
![[Pasted image 20250304001614.png]]
Build sandboxing disabled due to nsjail error
如标题所示,这个是在编译AOSP的时候可能会遇到的警告。这个错有两种情况:
在 Ubuntu24.04 上编译
根据链接 https://groups.google.com/g/android-building/c/DbDKuaIik3M 所说,ubuntu24.04上的一些修改,会导致编译时遇到这个错误。
临时解法是执行这个命令sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
如果想持久化生效的话,可以编辑文件/usr/lib/sysctl.d/10-apparmor.conf,将上面的key value添加进去,使用sysctl -p /usr/lib/sysctl.d/10-apparmor.conf 或者重启生效
在Docker里面编译
在Docker里面编译可能会遇到这个错误,解决办法是创建容器时,添加一个 --privileged 参数
‘%error-verbose’, use ‘%define parse.error verbose’
external/mesa3d/src/freedreno/ir3/ir3_parser.y:491.1-14: warning: deprecated dir ective: ‘%error-verbose’, use ‘%define parse.error verbose’ [-Wdeprecated] 491 | %error-verbose | ^~~~~~~~~~~~~~ | %define parse.error verbose groups.google.com/g/android-b…
解决方法:
sudo apt install bison
exit status 137
Android13 编译ninja failed with: exit status 137 解决办法: 1,增加交换内存 2,make -j4 限定一次只能执行4个作业