经过测试可用于Android 11 (lineageOS18.1)
Release Brotli v1.0.4 · google/brotli · GitHub
sdat2img/sdat2img.py at master · xpirt/sdat2img · GitHub
GitHub - xpirt/img2sdat: Convert sparse EXT4 image to sparse Android data image
img2sdat/img2sdat.py at master · xpirt/img2sdat · GitHub
[DEV] sdat2img 1.1 - img2sdat 1.7 ◦ Unpack/re-pack android DAT files | XDA Forums
请先解压出刷机包里面system.new.dat.br 和system.transfer.list备用
下面用的是shell的命令行示例,如果是windows的请自行转换
#用Brotli解压system.new.dat.br为system.new.dat
brotli --decompress system.new.dat.br --output=system.new.dat
#转换system.new.dat为system.img
./sdat2img.py system.transfer.list system.new.dat system.img
#经过转换的system.img已经是Linux识别的ext4分区文件,可以直接挂载
mkdir output
sudo mount -t ext4 -o loop system.img output接下来可以随意编辑output下的文件,对应的就是system.img里面的文件
经过编辑的文件请务必要确定对应的selinux上下文、及文件权限是不是正确的,否则刷机后无法访问或者无法开机
#利用正常selinux的文件恢复上下文
chcon --reference=(正常文件名) (修改过的文件名)#移除旧文件,也可以复制到别的位置
rm -f system.new.dat.br system.new.dat system.transfer.list
#解除挂载
umount output
#转换镜像为稀疏文件
./img2simg system.img system_2.img
#转换为dat文件
./img2sdat.py -o system_2.img -v 4 -o output
#压缩dat文件
cd output
brotli --quality=6 system.new.dat --output=system.new.dat.br
#现在output目录已经有四个文件了
#把下面三个文件直接替换刷机包内对应的文件
# system.new.dat.br
# system.patch.dat
# system.transfer.list
brotli 格式不太对,似乎是这样用?