编译 Havoc-UNOFFICIAL
编译 Havoc-UNOFFICIAL 镜像
更新
1
20.08.02 初始
资料来源:
https://www.akr-developers.com/d/107
https://www.htcp.net/5016.html
https://github.com/Havoc-OS/android_manifest
https://forum.xda-developers.com/Mi-9/development/rom-lineageos-17-1-clean-stock-t4041523
导语
最近把个人的设备升级了一番,告别了 Intel, AMD YES!(不仅仅是因为穷).入了二手的 Mi 9 (~这仅仅是因为穷~~).
zen2 简直不要再适合跑编译,加主板相对 Intel 便宜一半,性能还强.
Mi 9 的第三方 Rom 有 Havoc 的支持,但是却没有使用自己一直用的内核,刷完再刷内核,不如一步到位.
这篇是编译 Havoc-UNOFFICIAL
准备
硬件上
- 大于100G的硬盘剩余空间.SSD最好.
- Linux 环境,我是在 WSL2 上编译的.
i7以上配置.(4代i7+SSD编译时间3.5h参考),AMD 3600 大约 2 小时.
软件
- 网络环境.
其他
- 足够耐心,以及大半问题都是网络问题.
编译环境
依赖组件
1 | sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev |
额外组件,可能会使用.
1 | sudo apt install -y imagemagick libbz2-dev libssl-dev lzma ncftp bash-completion |
jdk(一般不用了),安装完成后输入java -version
,返回1.8
即正确安装.
1 | sudo apt install -y openjdk-8-jdk |
安装 repo
repo 是 google 用来管理 android 源码的工具,基于 git 实现.
1 | mkdir -p ~/bin |
ps
- 实在下载不下来,手动拖下来.
- 或者转清华源.
同步存储库
设置 git
等同于设置邮箱,用户名并配置 github 的 ssh-key.
初始化存储库
repo init,这个过程的错误大多是网络错误.
1 | mkdir -p ~/havoc |
同步源码
大部分人卡在这里了,依然是网络问题.
1 | repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags |
注解:
- -f : 强制
- –no-clone-bundle : 忽略 clone 失败的信息
- 源码大约几十 GB(具体多少忘记看了),需要很长一段时间了.
- 如果遇到同步失败,网络没问题情况下,执行
repo sync
即可,已经下载的数据不会再次重复.
编译
设置编译环境
有了源码,此时还需要 vendor kernel 和 device.这里有几种情况
- 如果有官方支持,那并不需要这一步,同步源码时,应该已经加载了.
- 这些可用在设备获取,但是我这是 wsl2,暂时不支持挂载 usb 设备,没戏.
- 这次编译的是 UNOFFICIAL,官方没有支持,但找到了 xda 维护 cephus-Havoc 的 github,ok 全齐了.
你可以手动克隆每个仓库,但是没必要.
在 repo\local_manifests\
下创建 cepheus.xml
,并写入以下内容:
1 | <manifest> |
再次
1 | repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags |
编译 Rom
设置ccache,这里设置缓存50G
1 | export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G" |
加载编译环境
1 | source build/envsetup.sh |
开始编译
1 | make bacon -j$(($(nproc) + 1)) 2>&1 | tee build.log |
首次编译包括内核等,大概 2h.第二次以后 0.75h.
结束
在 /out/target/product/
找到 Rom