
本文以构建OnePlus8T(Kebab)的非官方(其实和官方没差啦)KaleidoscopeOS为基础展开。
构建环境:Ubuntu Server 20.04 LTS
1. 您需要准备的
1-1 设备要求:
a. 至少16GB的运行内存,并设置至少8GB的swap交换分区。
b. 系统为Linux,当然也可以是WSL,可以是物理机,虚拟机,服务器,本文使用服务器Ubuntu20.04作为示范。
c. 至少300GB的硬盘存储空间,源码完全同步需约120GB硬盘空间,在编译过程中释放的文件可能回使硬盘占用达到270GB左右,所以300GB的硬盘大小是必须的
d. 稳定的网络环境(懂的都懂)
e. 一颗强劲的CPU(当然不强也行,就是时间久一点)。
f. 一双灵巧的双手,聪慧的大脑和谷歌使用技巧。
OnePlus8T由于有官方维护者提供DeviceTree,故无需重新制作,这里只提供大概思路。
如果你的机型恰好有LineageOS的官方支持,那么你可以根据LineageOS和KaleidoscopeOS两个项目共有的官方维护设备的tree的区别进行修改(ify)。
如果你的设备很不幸没有没有被LineageOS官方支持,也不必灰心,您也可以看看有没有其他ROM的支持,同样的,您可以让该ROM和KaleidoscopeOS两个项目共有的官方维护设备的tree的区别进行修改(ify)。
如果您非常不幸,没有任何第三方ROM支持,您可以自己尝试编写tree,当然如果您没有能力编写,也可以请教各位dalao帮忙,具体参见本文最后一部分。
以 OnePlus8T 为例,需要准备的有:/device/oneplus/kebab , /device/oneplus/sm8250-common , /kernel/oneplus/kebab , /vendor/oneplus/kebab , /vendor/oneplus/sm8250-common
请注意,以上各tree可以在https://github.com/Kscope-Devices 获取,请注意,最新版本源码需拉取Sunflowerleaf 分支
git clone -b sunflowerleaf <link.git>
2. 准备构建
2-1 配置环境
a. 安装所需软件包
apt-get update && apt-get upgrade -y
apt-get install -y openjdk-8-jdk git gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses-dev libncurses5 ×11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip bc imagemagick ccache schedtool libssl-dev jq patchelf
b. 配置git信息
git config –global user.name “在此处替换成你的名字”
git config –global user.email “在此处替换成你的邮箱”
c. 下载repo(二选一)
i. 官方源
ii. 清华源
d. 建立项目文件夹并进入。
mkdir KaleidoscopeOS && cd KaleidoscopeOS
2-2 使用KaleidoscopeOS初始化本地仓库。
2-3. 坐和放宽。
此过程速度取决于您的网络,可能会会非常漫长,请耐心等待。
3. 开始构建
3-1 您需要将在1-2部分中获得的tree放入对应目录,然后执行
3-2 选择构建版本。
lunch
//输入要构建的版本,如28
//熟练之后您可以使用lunch kscope_<codename>-<buildtype> 格式命令直接构建,如 lunch kscpoe_kebab-user
3-3 开始构建。
4. 常见问题
Q1:网络连接良好但下载失败/拉取代码失败/同步失败…
Q2:选择构建版本时报错 frameworks/native/build/phone-xhdpi-6144-dalvik-heap.mk:19: error: _nic.PRODUCTS.[[device/oneplus/kebab/kscope_kebab.mk]]: “vendor/oneplus/addons/camera/camera-vendor.mk” does not exist.
18:03:02 dumpvars failed with: exit status 1 , 找不到对应文件 `
Q3:构建时其他报错 “vendor(device)/xxx/xxx/xxx/xxx.mk” does not exist.18:03:02 dumpvars failed with: exit status 1
A3:请自行搜索相关库进行补充,比如"vendor/oneplus/addons/camera/camera-vendor.mk"需要寻找
vendor_oneplus_addons_camera 库。
Q4:做好的包到哪里找?
A4:请到项目文件夹中out/target/product/<device_name>下寻找。
Q5:做好的包带root吗?
Q6:一共生成两个zip(一个ota.zip,一个unofficial.zip),有什么区别?
Q7:怎么刷进去
建议使用adb sideload刷入,刷前记得双清。
Q8:其他问题