使用 Ubuntu22.04 编译 aosp 的问题,求助大佬

2022-06-29 09:13:32 +08:00
 JustPisces

我在运行. build/envsetup.sh && lunch aosp_hotdog-userdebug && mka bacon 后得到如下错误

FAILED: ninja: 'Android.bp', needed by 'out/soong/.bootstrap/build.ninja', missing and no known rule to make it

谷歌之后发现并没有我这类似的错误

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install git-core gnupg flex bison gperf build-essential sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib sudo apt-get install libc6-dev-i386 sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4 sudo apt-get install lib32z-dev ccache sudo apt-get install libssl-dev sudo apt-get install libncurses5

环境依赖装了如上,jkd8 也装了,实在找不到问题所在了 求助大佬们

5886 次点击
所在节点    Android
17 条回复
WebKit
2022-06-29 09:20:32 +08:00
现在也不需要安装 jdk 了,你的内存能够吗
JustPisces
2022-06-29 09:22:37 +08:00
@WebKit 内存是 16G swap 也分了 16G 之前使用 ubuntu18.04 可以正常编译,被我搞炸了系统后装了 22.04 ,然后就出这问题了
kaycloud
2022-06-29 09:48:24 +08:00
看是不是内存问题。我开发机 16G 内存,swap 也分配了 16G ,cpu 是 8 核的,但是如果用 make -j8 甚至-j6 都会挂,大概-j4 才能正常编译
JustPisces
2022-06-29 10:09:53 +08:00
@kaycloud 我没有加 -j 的参数,,不过我刚搜了一下 ubuntu 22.04 有一个低内存优化的功能,会将占用大量内存的进程给 kill 掉,我估计是那个原因,,晚上回家关掉试试看
https://answers.launchpad.net/ubuntu/+question/701605
这种东西是真坑
encro
2022-06-29 10:10:25 +08:00
经验告诉我们,发行版要低一个 lts 才可靠,比如现在出 22.04 了,用 20.04 就会兼容比较好。
JustPisces
2022-06-29 10:15:11 +08:00
@encro 我本来也想用 20.04 的 不过一看 22.04 界面好看,动画酷炫,就忍不住了 哈哈 如果搞不定 就降到 20.04 去了
encro
2022-06-29 11:02:25 +08:00
@JustPisces

是的,最近几年 gnome 还是挺给力的,不能用新版本是比较大的损失。
pagxir
2022-06-29 11:38:47 +08:00
其实你可以把编译环境套在非特权容器里 docker/lxc/lxd 里都可以。这样不影响图形界面也不影响编译。最近,我就最外层用了 alpine ,然后特权容器 archlinux 跑图像界面,然后再跑 kvm 的虚拟机,非特权容器跑编译。图像界面怎么搞,机器也不会启动不起来(外层有一个基本 alpine ,不带图形界面),也不影响编译环境。不过目前问题是,kvm 的 gvt-g 在 8250U 下好像有问题,导致里面的 win10guest 无法正常显卡加速。反而在 10700 能正常工作。
Buges
2022-06-29 11:58:59 +08:00
这种事情最好用 docker 、nix 等 deterministic 的环境,再要么就用官方文档完全一致的版本,以避免各种环境问题。
JustPisces
2022-06-29 12:01:11 +08:00
@pagxir 看起来好复杂 哈哈 好多东西涉及盲区了 我主要还是编译 rom 给自己用,linux 系统这块不太懂,不然也不会把系统搞炸了
654656413245
2022-06-29 13:33:43 +08:00
要看 lunch aosp_hotdog-userdebug 有没有执行成功

另外尝试 make 的时候不要指定 target ,直接 make
JustPisces
2022-06-29 14:14:37 +08:00
@654656413245 前两步都成功了 死在最后一步上的 make 的时候也没有指定-j 但是根据上面的回复 问题应该是处在 22.04 上新增的低内存优化功能上
changnet
2022-06-29 14:40:50 +08:00
Linux 内存不够 kill 进程我记得一直是有的,CentOS 6.5 就有了。如果是这个问题 dmesg 可以看到 kill 的信息
myki
2022-06-29 18:52:26 +08:00
sudo systemctl disable --now systemd-oomd
myki
2022-06-29 19:03:57 +08:00
把 oomd 关了之后在编译应该就可以了
FranzKafka95
2022-06-29 23:31:08 +08:00
首先要确保 repo sync 是完整拉取了整点源,可以通过 repo status 或者 repo info 进行检查,其次编译时第一次尽量全编译(直接 make),不要 m 或者 mmm 等,第三,编译时使用-j 参数,但不要超过你的系统核心限制,如果还不行, make clean 后再进行尝试
xiiix
2022-07-01 18:16:31 +08:00
内存不够的话 可以启用 swap 并保证物理内存加上虚拟内存超过 32G

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX