KaleidoscopeOS(万花筒) 非官方构建简单指北
KaleidoscopeOS(万花筒) 非官方构建简单指北
本文以构建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 “在此处替换成你的名字” |
c. 下载repo(二选一)
i. 官方源
mkdir ~/.bin |
ii. 清华源
mkdir ~/.bin |
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 |
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