该错误通常与编译环境权限或配置问题有关,主要出现在Ubuntu 24.04或Docker容器中编译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或者重启生效
解决方案
方案1:Ubuntu 24.04系统修复
临时生效(重启后失效):
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
永久生效:
-
编辑配置文件:
sudo nano /usr/lib/sysctl.d/10-apparmor.conf -
添加以下内容:
kernel.apparmor_restrict_unprivileged_userns=0 -
应用配置:
sudo sysctl -p /usr/lib/sysctl.d/10-apparmor.conf # 或重启系统
-
在Docker里面编译
在Docker里面编译可能会遇到这个错误,解决办法是创建容器时,添加一个--privileged参数docker run --privileged -it
--user (id -u {USER}):(id -g {USER})
-v $PWD:/home/builder/code
-v /etc/passwd:/etc/passwd:ro
-v /etc/group:/etc/group:ro
android_mm_build:latest /bin/bash
⚠️ 注意:此参数会赋予容器接近主机root的权限,需确保镜像来源可信。