[toc]
为什么
还是闲的吗? 肯定不是啦。我买的手机是酷派s1: 821+4+64 才一千多块钱,在2017年底也是超级划算的。但是酷派快要倒闭了。没有人出rom,只能靠同胞le pro3的包漂过来呀。
error7 解决方案
在 lineage-15.1-20180312-nightly-zl1-signed.zip\META-INF\com\google\android 里面有一个文件updater-script 这个就是刷机之前的检测脚本
assert(getprop("ro.product.device") == "le_zl0" || getprop("ro.build.product") == "le_zl0" ||
getprop("ro.product.device") == "le_zl1" || getprop("ro.build.product") == "le_zl1" ||
getprop("ro.product.device") == "LEX720" || getprop("ro.build.product") == "LEX720" ||
getprop("ro.product.device") == "LEX722" || getprop("ro.build.product") == "LEX722" ||
getprop("ro.product.device") == "LEX727" || getprop("ro.build.product") == "LEX727" ||
getprop("ro.product.device") == "zl0" || getprop("ro.build.product") == "zl0" ||
getprop("ro.product.device") == "zl1" || getprop("ro.build.product") == "zl1" || abort("E3004: This package is for device: le_zl0,le_zl1,LEX720,LEX722,LEX727,zl0,zl1; this device is " + getprop("ro.product.device") + "."););
assert(leeco.verify_modem("2017-01-06 01:40:06") == "1");
这里的assert就是检测机制,删除就行了,期间以下的代码是运行脚本的,完成就设置进度条为1set_progress(1);
ui_print("Target: LeEco/ZL1_NA/le_zl1:6.0.1/WEXNAOP5802101261S/letv01261206:user/release-keys");
//屏幕上打印
ifelse(is_mounted("/system"), unmount("/system"));
//system 区卸载
package_extract_dir("install", "/tmp/install");
// 创建临时区
set_metadata_recursive("/tmp/install", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644);
//
set_metadata_recursive("/tmp/install/bin", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755);
//
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
//刷机时的system区系统复制
run_program("/tmp/install/bin/backuptool.sh", "backup");
// 执行备份
unmount("/system");
// 复制完了再卸载system区
show_progress(0.750000, 0);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");
show_progress(0.020000, 10);
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/tmp/install/bin/backuptool.sh", "restore");
// 运行shell 参数是restore
unmount("/system");
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.200000, 10);
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/tmp/install/bin/deunify.sh", "");
unmount("/system");
set_progress(1.000000);
重要的语法
mount:挂载的,一般system挂载
run_program:运行命令的,有时候要su权限,
刷机包里面的故事
一般都是zip的,使用压缩软件解压后看到以下:
然后就是系统打包的文件system.new.dat.br 在android8.0时代 取代了system.dat.br,我们可以使用https://bayden.com/dl/Brotli.exe 这个软件生成system.new.dat,
命令如下:.\Brotli.exe --decompress --in .\system.new.dat.br --out system.new.dat
- 然后看到system.new.dat 变得变得很大1.4g大概,然后用另外一个软件进行转成system.img 然后解压即可
https://forum.xda-developers.com/android/software-hacking/windows-tool-android-unpack-repack-dat-t3614840 - 然后又看到这个system.img 有4.2个g,mad坑,然后就是解压system.img就行了
介绍一下rom刷机机制
把我们上面到system.img这一步的镜像直接挂载然后复制即可完成了刷机.
https://wjjer.github.io/2017/08/30/Rom%E7%A7%BB%E6%A4%8D/
发表回复