KaleidoscopeOS(万花筒) 非官方构建简单指北
出于某平台自己的作死行径,以后会逐渐转移到三楼发布内容,感谢支持!
目前先陆续把某平台的图文给搬过来,欢迎关注[吐舌]
—————我是分割线————-
本文以构建OnePlus8T(Kebab)的非官方(其实和官方没差啦)KaleidoscopeOS为基础展开。
构建环境:Ubuntu Server 20.04 LTS
• 您需要准备的
1-1 设备要求:
a. 至少16GB的运行内存,并设置至少8GB的swap交换分区。
b. 系统为Linux,当然也可以是WSL,可以是物理机,虚拟机,服务器,本文使用服务器Ubuntu20.04作为示范。
c. 至少300GB的硬盘存储空间,源码完全同步需约120GB硬盘空间,在编译过程中释放的文件可能回使硬盘占用达到270GB左右,所以300GB的硬盘大小是必须的
d. 稳定的网络环境(懂的都懂)
e. 一颗强劲的CPU(当然不强也行,就是时间久一点)。
f. 一双灵巧的双手,聪慧的大脑和谷歌使用技巧。
1-2 准备Tree
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
• 准备构建
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 x11proto-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 > ~/.bin/repo
chmod +x ~/.bin/repo
ii. 清华源
mkdir ~/.bin
PATH=~/.bin:$PATH
curl 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 -b sunflowerleaf
repo sync
2-3. 坐和放宽。
此过程速度取决于您的网络,可能会会非常漫长,请耐心等待。
• 开始构建
3-1 您需要将在1-2部分中获得的tree放入对应目录,然后执行
. build/envsetup.sh
3-2 选择构建版本。
lunch
//输入要构建的版本,如28
//熟练之后您可以使用lunch kscope_- 格式命令直接构建,如 lunch kscpoe_kebab-user
3-3 开始构建。
mka bacon
• 常见问题
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/下寻找。
Q5:做好的包带root吗?
A5:不带。
Q6:一共生成两个zip(一个ota_***.zip,一个unofficial_***.zip),有什么区别?
A6:没有区别,md5都一样,两个都能用。
Q7:怎么刷进去
建议使用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
没有回复内容