本来就想顺便玩玩结果用了4部手机了.jpg
设备:红米4X(santoni)
系统:MIUI开发版 9.10.11 架构:ARM64
咕咕咕中,问题真的好多啊
准备工作
安装ADB和FastBoot
- 从 Google 下载Windows版的压缩包;
- 解压缩下载的压缩包到你习惯的文件夹(比如
C:\Users\YourName\Tools\PlatformTools\
); - 将解压缩的文件夹添加到系统
Path
环境变量。
解锁 bootloader
- 在
设置>我的设备>全部参数
中点击3次MIUI版本,再点击3次MIUI版本,开启开发者模式; - 下载 小米解锁工具,确保账号有权限解锁;
- 在
设置>更多设置>开发者选项>设备解锁状态
中,插入SIM卡并绑定账号。具体步骤可以参考小米社区; - 在
设置>更多设置>开发者选项>USB调试
中启用USB调试。 - 下载 小米刷机工具 ,不用下载任何包,在
fastboot
下解压运行后按提示安装驱动,然后这玩意就没用了;似乎只有在
fastboot
模式下用小米来装驱动才行,此前不知道怎么回事一直没驱动。 - 在电脑终端内输入
adb shell reboot -p
,手机弹窗允许调试点击“确定”,手机关机; - 关机状态下,按住
音量-
再按电源键
,开机进入 fastboot; - 运行小米解锁工具,登录账户并确认解锁。
刷入第三方 Recovery
这里选择使用 PitchBlack Recovery 因为好看
准备
- 确保你的设备已经解锁;
- 确保PC端有
adb
和fastboot
; - 从 PitchBlack Recovery 下载适用于红米4X的 Recovery;
- 从 TeamWin Recovery 翻到“Download Links:” 处,下载适用于红米4X的 Recovery。(我这边是欧洲的镜像比较快,自行选择)
从TWRP刷入PBRP
因为以前是小米的 Recovery ,直接安装 PitchBlack 没有搞太明白,所以先刷入 TWRP。
- 到下载TWEP的目录,在PC终端执行
fastboot boot twrp-<version>-santoni.img
,从TWRP中启动; - 在手机进入TWRP后,点击
Wipe>Format Data
并输入yes
后执行; - 点击
Back
返回到主界面,点击Advanced>ADB Sideload
启动 ADB 旁加载; - 到下载PBRP的目录,从PC终端执行
adb sideload .\PBRP-santoni-<version>-OFFICIAL.zip
; - 手机终端出现
---Installation finished!---
字样即为刷入完成; - 按下
音量-
重启至 PitchBlack Recovery。
编译 LineageOS
准备工作
准备一台装有 64位的 Ubuntu 20.04 (或Ubuntu Server 20.04)的电脑,可以考虑使用虚拟机或云服务器,为了避免麻烦,建议使用Ubuntu Server完成。编译的时间取决于性能。LineageOS官方的要求是200G存储空间,并且内存越小编译越慢。
为了速度我就直接拿服务器编译了。
DELL PowerEdge R620
Intel® Xeon® Processor E5-2670 v2 X2
MT DDR3 REG-ECC PC8500R 16GB X4
HGST 600GB 15K SAS X3 (Raid5)
Ubuntu server 20.04.02
Ubuntu 发行版的光盘可以从 清华大学开源软件镜像站 下载。
安装服务器过程略过,由于我在tty下使用所以语言选择了英语。
建议在安装时候配置国内源,比如清华源(
https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
)。
环境配置
通过SSH连接上服务器之后就可以进一步进行环境的配置了(当然你在tty内配置也不是不行)。
安装platform Tools
- 【可能需要代理】使用 wget 下载 Linux 版的 platform Tools:
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
; - 使用 apt 安装 zip:
apt install zip
; - 解压缩 platform Tools :
unzip platform-tools_<version>-linux.zip
; - 编辑
~/.profile
,添加:添加完成后运行1 2 3 4
# add Android SDK platform tools to path if [ -d "$HOME/platform-tools" ] ; then PATH="$HOME/platform-tools:$PATH" fi
source ~/.profile
更新环境。
安装依赖
- 使用 apt 安装依赖:
apt install zip bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
;对于 Ubuntu 20.04 以前的操作系统来说,还需要安装 libwxgtk3.0-dev:
apt install libwxgtk3.0-dev
- 如果希望构建 lineageOS 15,则需要安装OpenJDK8:
apt install openjdk-8-jdk
创建目录
mkdir -p ~/bin
;mkdir -p ~/android/lineage
。
安装repo命令
- 下载repo:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
; - 更改权限:
chmod a+x ~/bin/repo
; - 将
~/bin
添加到环境变量,在~/.profile
中添加:1 2 3 4
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
- 运行
source ~/.profile
更新环境。
配置Git
- 使用
apt install git
安装 Git; - 配置你的邮箱和用户名:
1 2
git config --global user.email "you@example.com" git config --global user.name "Your Name"
开启缓存
开启缓存可以加快构建
- 设置环境变量
1 2
export USE_CCACHE=1 export CCACHE_EXEC=/usr/bin/ccache
- 设置ccache,编辑
~/.profile
,加入:1
ccache -M 32G
- 使用
source ~/.profile
使配置生效
配置LineageOS仓库
红米4X可以选择如下两个分支:
- lineage-15.1(需要OpenJDK-8)
- lineage-16.0
- 进入目录:
cd ~/android/lineage
; - 安装python(由于Ubuntu自带python,安装
python-is-python3
)即可; - 【可能需要代理】初始化项目:
repo init -u https://github.com/LineageOS/android.git -b lineage-<version>
如果无法下载可以考虑添加环境变量
REPO_URL=https://github.com/GerritCodeReview/git-repo
; - 【可能需要代理】使用
repo sync
下载源代码;这步好艰难…要下很长时间
配置设备相关
输入
|
|
下载红米4X(santoni)的配置文件和内核。
部分机型需要一个vendor目录。如果你收到了一个关于vendor的错误,到 GitLab 下载。放入
~/android/lineageos/vendor/xiaomi
后,再次执行breakfast santoni
即可。 经尝试上述方法在后来引起了错误,所以参考官方文档,从LineageOS的包里导出该文件,首先下载 LineageOS 16.0 for santoni (这个包的来历我也不知道,应该是以前镜像的官方build),使用unzip path/to/lineage-*.zip system/*
解压,并将system
目录移动到~/android/system_dump/
,到~/android/lineage/device/xiaomi/santoni
目录执行./extract-files.sh ~/android/system_dump/
导出。
编译LineageOS
执行
|
|
报错
1
ninja: error: '/home/nidb/android/lineageos/out/target/common/obj/JAVA_LIBRARIES/WfdCommon_intermediates/javalib.jar', needed by '/home/nidb/android/lineageos/out/target/product/santoni/dex_bootjars/system/framework/boot.prof', missing and no known rule to make it
很是绝望。参考 StackOverflow 发现或许是缺了 Wfd,在Github找到这个仓库 ,克隆该项目替换,没有作用。
考虑使用
make
直接编译,因为脚本中含有 python2,所以卸载python-is-python3
,然后apt install python2
;
尝试使用lunch
,make -j10
。
报错ninja: error: 'prebuilts/lineage-sdk/api/9.txt'
,参考 XDA 克隆https://github.com/LineageOS/android_prebuilts_lineage-sdk
到prebuilts
解决。
编译到一大半报错ninja: build stopped: subcommand failed.
原因是被Linux系统限制,使用ulimit -c unlimited
解除。