KaleidoscopeOS(万花筒) 非官方构建简单指北

本文转载自:https://www.akr-developers.com/d/609-kaleidoscopeos

官方下载站:https://kaleidoscope.ink/download.html

Github:https://github.com/Project-Kaleidoscope

本文以构建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. 一双灵巧的双手,聪慧的大脑和谷歌使用技巧。

1-2 准备Tree

OnePlus 8T 由于有官方维护者提供 DeviceTree ,故无需重新制作,这里只提供大概思路。

如果你的机型恰好有 LineageOS 的官方支持,那么你可以根据 LineageOS 和 KaleidoscopeOS 两个项目共有的官方维护设备的 tree 的区别进行修改。

如果你的设备很不幸没有没有被 LineageOS 官方支持,也不必灰心,您也可以看看有没有其他 ROM 的支持,同样的,您可以让该 ROM 和 KaleidoscopeOS 两个项目共有的官方维护设备的tree的区别进行修改。

如果您非常不幸,没有任何第三方 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. 官方源

mkdir ~/.bin  
PATH=~/.bin:$PATH
curl [https://storage.googleapis.com/git-repo-downloads/repo](https://storage.googleapis.com/git-repo-downloads/repo) > ~/.bin/repo
chmod +x ~/.bin/repo

ii. 清华源

mkdir ~/.bin  
PATH=~/.bin:$PATH
curl [https://mirrors.tuna.tsinghua.edu.cn/git/git-repo](https://mirrors.tuna.tsinghua.edu.cn/git/git-repo) -o repo
chmod +x repo

d. 建立项目文件夹并进入。

mkdir KaleidoscopeOS && cd KaleidoscopeOS

2-2 使用KaleidoscopeOS初始化本地仓库。

repo init -u [https://github.com/Project-Kaleidoscope/android\_manifest.git](https://github.com/Project-Kaleidoscope/android_manifest.git) -b sunflowerleaf  
repo sync

2-3. 坐和放宽。

​ 此过程速度取决于您的网络,可能会会非常漫长,请耐心等待。

3. 开始构建

3-1 您需要将在1-2部分中获得的tree放入对应目录,然后执行

. build/envsetup.sh

3-2 选择构建版本。

lunch  
//输入要构建的版本,如28
//熟练之后您可以使用lunch kscope\_<codename>-<buildtype> 格式命令直接构建,如 lunch kscpoe\_kebab-user

3-3 开始构建。

mka bacon

4. 常见问题

Q1: 网络连接良好但下载失败/拉取代码失败/同步失败…

A1: 请检查是否连接到国际互联网。

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 , 找不到对应文件

A2: 该部分在gitlab开源 https://gitlab.com/libxzr/vendor_oneplus_addons_camera

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吗?

A5: 不带。

Q6: 一共生成两个zip(一个ota_**_.zip,一个unofficial_**_.zip),有什么区别?

A6: 没有区别,md5都一样,两个都能用。

Q7: 怎么刷进去?

A7: 建议使用adb sideload刷入,刷前记得双清。

Q8: 其他问题

提问好去处:
xda: https://www.xda-developers.com/
akr社区: https://www.akr-developers.com/
github: https://github.com/
当然你也可以到Chatroom和Channel中向大佬提问,提问前请阅读《提问的艺术》https://github.com/betaseeker/How-To-Ask-Questions