小米8刷了一批踩雷的陷阱
这个刷机的事情本来挺简单个事,但是我刷面具的时候,哪个面具是个坏包,之后的就触摸不正常了,就是点上去没有反应.很难受我又刷回去了miui然后再刷回来.本来是半个小时的事情,结果折腾一下午,晚上一点多才搞好.
整体思路很清就是眼睛瞎而已~因为是有10的底包.所以
注意解锁是在fastbbot下解锁,会丢失所有东西~
强烈建议刷机前把自己的小米账号退掉,就是我也不知道该怎么说,如果你在底包是miui的情况下进行内存块的刷写操作,你会发现sdcard这个目录是被加密的
淦,还有这种东西
miflash,点全部删除,保留是不清data分区.最后一个最不推荐.要重新解锁.
C:UsersyunswjDownloads浏览器dipper_images_V11.0.7.0.QEACNXM_20200310.0000.00_10.0_cn_d9c549214cdipper_images_V11.0.7.0.QEACNXM_20200310.0000.00_10.0_cn_d9c549214cdipper_images_V11.0.7.0.QEACNXM_20200310.0000.00_10.0_cn
线刷包,我不知道一堆东西套着压缩3遍是什么意思????
看看线刷包里面有什么
校验用的MD5
#!/usr/bin/env python
import os
import binascii
import xml.etree.cElementTree as ET
from xml.etree import ElementTree
from xml.dom import minidom
import re
import hashlib
def md5sum(filename, blocksize=65536):
h = hashlib.md5()
with open(filename, "rb") as f:
for block in iter(lambda: f.read(blocksize), b""):
h.update(block)
return h.hexdigest()
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
rough_string = ElementTree.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
def search_sec_level(filename):
with open(filename, "rb") as file:
try:
while True:
line = file.readline()
if line:
a = re.match(".*PLATFORM_SECURITY_PATCH :=", line)
if a != None:
break
else:
break
finally:
file.close()
return line[6:43]
def gen_md5_xml():
root_path = os.path.dirname(__file__)
path = os.path.join(root_path, 'images')
files = [os.path.join(path, f) for f in os.listdir(
path) if os.path.isfile(os.path.join(path, f))]
xml = os.path.join(root_path, "md5sum.xml")
root = ET.Element("root")
digests = ET.SubElement(root, "digests")
for file in files:
file = os.path.join(root_path, file)
digest = ET.SubElement(
digests, "digest", name=os.path.basename(file), hash="md5")
digest.text = md5sum(file)
sec_patch_level = ET.SubElement(root, "security-patch-level")
security = ET.SubElement(sec_patch_level, "level")
source_path = os.popen('echo $ANDROID_BUILD_TOP').read()
sec_path = os.path.join(source_path[:-1], 'build/core/version_defaults.mk')
security.text = search_sec_level(sec_path)
xml_str = prettify(root)
with open(xml, "w") as f:
f.write(xml_str)
# ------------------------------------------------------------------------------
if __name__ == "__main__":
gen_md5_xml()
里面是一段python脚本来校验的
运行一下,报错了.看看是什么情况
好像是缺了这个mk文件,比较长.局部截图了
https://android.googlesource.com/platform/build/+/master/Changes.md
这个是一份md格式的配置
不就是.....emmmm....makefile文件
bat是调用adb执行的命令
可以看的出来,bat的一开始都是做校验
对代码进行了对比
fastboot %* flash userdata %~dp0imagesuserdata.img || @echo "Flash userdata error" && exit /B 1
关键代码一行
还遇到了这个问题~
小米手机进入fastboot模式后,一连接刷机助手或者miflash就变成press any key to shutdown
解决方法:win10系统 连接的USB2.0接口,刷机成功。
下面代码用txt编辑保存,扩展名改成bat,右键管理员权限运行,完美解决fastboot掉的情况。
@echo off
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags18D1D00D0100" /v "osvc" /t REG_BINARY /d "0000" /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags18D1D00D0100" /v "SkipContainerIdQuery" /t REG_BINARY /d "01000000" /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags18D1D00D0100" /v "SkipBOSDescriptorQuery" /t REG_BINARY /d "01000000" /f
pause
成功~
???
@echo off
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags18D1D00D0100osvc
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags18D1D00D0100SkipContainerIdQuery
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags18D1D00D0100SkipBOSDescriptorQuery
pause
复原代码
@echo off
TITLE 小米8 一键刷入 Recovery工具
color 3f
mode con cols=90 lines=29
echo.
ECHO. =================================================
echo. 小米8 一键刷入 TWRP Recovery工具 by yunswj
echo.
echo.
echo.
echo --按任意键继续
echo.
ECHO. =================================================
pause >nul
CLS
ECHO. =================================================
echo.
echo 按下面所述步骤进入fastboot模式:
echo.
echo. 1.首先需要先解锁手机(BL解锁)
echo.
echo. 2.同时按住音量下和开机键不放直到显示米兔画面后松手
echo.
echo 3.屏幕会始终停留在米兔LOGO界面
echo.
echo. 4.完成上述步骤,将手机连接到电脑,按任意键继续
echo.
echo.
ECHO. =================================================
pause >nul
CLS
ECHO. =================================================
echo.
echo.
echo 是否看见如下提示:
echo.
echo.
echo xxxxx fastboot
echo.
echo.
echo 如果看到以上提示,证明手机与电脑连接正常,按任意键正式开始刷入
echo.
echo 否则请关闭此窗口,并检查驱动是否正确安装,手机是否正确连接
echo.
echo 导入recovery时,请一定保证手机和电脑的连接正常
echo.
ECHO. =================================================
echo.
echo.
fastboot.exe devices
pause >nul
CLS
ECHO. =================================================
echo.
echo.
echo 是否看见类似如下提示
echo.
echo.
echo. sending 'recovery' (15502 KB)...
echo. OKAY [ 0.500s]
echo. writing 'recovery'...
echo. OKAY [ 0.560s]
echo. finished. total time: 2.455s
echo.
echo 如果看到以上提示,按任意键正式开始导入
ECHO. =================================================
echo.
echo.
fastboot.exe flash recovery dipper.img
pause >nul
CLS
ECHO. =================================================
echo.
echo.
echo 是否看见类似如下提示,
echo.
echo. downloading 'boot.img'...
echo. OKAY [ 0.838s]
echo. booting...
echo. OKAY [ 0.025s]
echo. finished. total time: 0.864s
echo.
echo 如果看到以上提示,证明刷入成功,按任意键重启
echo.
echo 此时千万不要关闭此窗口
echo.
echo.
ECHO. =================================================
echo.
echo.
fastboot.exe boot dipper.img
pause >nul
CLS
ECHO. =================================================
echo.
echo.
echo 恭喜你成功刷入了recovery!!
echo.
echo 耐心稍等片刻,手机会自动重启,按任意键关闭此窗口
echo.
echo.
ECHO. =================================================
echo.
echo.
pause >nul
说的好,我用橙狐.把以上保存为bat.执行.把img和adb放在这个bat的目录下.
优化
去掉wifi叉号标记
在国内的网络环境下,通过wifi联网之后,原生的wifi图标上会默认显示一个「叉号」。虽然能够正常联网,但对于强迫症来说,还是觉得很碍眼。
对于这个问题,原理性的解释是:
谷歌原生安卓系统当连接到移动数据网络或者WIFI网络的时候,其NetworkMonitor模块会向特定的服务器发起一个http的请求并利用收到的响应进行网络状态判断。由于谷歌的服务器被GFW屏蔽,所以导致没有返回值,这个时候谷歌安卓系统就会在信号或者wifi上打一个感叹号或叉号。
可以通过换成v2ex的验证方式来解决。在命令提示符中执行:
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
然后开启飞行模式,再关闭飞行模式即解决!
执行命令:
~/test/pixel
➜ adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
~/test/pixel
➜
操作后:
果你想恢复的话,使用下面的命令:(未亲测)
adb shell settings delete global captive_portal_server
adb shell settings put global captive_portal_detection_enabled 1
adbpush文件时权限不够
在使用命令 adb push
将文件 twrp-pixel-installer-sailfish-3.2.3-1.zip
上传到手机时,可能由于权限问题而报错:
~/test/pixel
➜ adb push twrp-pixel-installer-sailfish-3.2.3-1.zip /
adb: error: failed to copy 'twrp-pixel-installer-sailfish-3.2.3-1.zip' to '/twrp-pixel-installer-sailfish-3.2.3-1.zip': remote couldn't create file: Read-only file system
twrp-pixel-installer-sailfish-3.2.3-1.zip: 0 files pushed. 22.7 MB/s (1048448 bytes in 0.044s)
我们可以通过 adb shell
命令来进入到手机的bash命令下,也可以直接在后面跟上bash命令来执行。进行验证:
adb shell
:
~/test/pixel
➜ adb shell
sailfish:/ $
sailfish:/ $ ls
ls: ./verity_key: Permission denied
ls: ./init.rc: Permission denied
ls: ./postinstall: Permission denied
ls: ./init.usb.configfs.rc: Permission denied
ls: ./init.zygote64_32.rc: Permission denied
...
...
或者
adb shell mkdir tmp
:
~/test/pixel
➜ adb shell mkdir tmp
mkdir: 'tmp': Read-only file system
发现,果然是当前用户的权限不够。
经过验证,发现当前用户对 /sdcard
目录是有权限进行文件或目录的操作的。
~/test/pixel
➜ adb shell
sailfish:/ $ cd sdcard/
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones
sailfish:/sdcard $ mkdir tmp
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones tmp
sailfish:/sdcard $ rm -rf tmp
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones
sailfish:/sdcard $ exit
Magisk更新
将 Magisk 从 v17.2
版本升级到 v19.3
版本。
可以从 Magisk 下载最新版本的Magisk的zip压缩包。
第一步 adb连接
要确保手机设备通过adb正确连接。如果提示为 offline
则需要重新设置手机的连接。
➜ adb devices
List of devices attached
FA6XXXXXXX53 offline
直到出现 device
时,说明手机正确连接了。
➜ adb devices
List of devices attached
FA6XXXXXXX53 device
一般出现 offline
的情况可能是usb数据线的问题,或者连接设置的问题。
这里我的解决方法是:
- 断开usb设备连接
- 执行命令
adb kill-server
来停止adb服务 - 执行命令
adb start-server
来重新运行adb服务 - 重新通过usb连接手机设备
- 打开
开发者选项
,重新勾选usb调试
,在弹出的窗口选择确定
- 再次执行命令
adb devices
,发现显示device
了
第二步 拷贝Magisk文件
通过 adb push
命令将新版的Magisk文件拷贝到手机设备中:
➜ adb push Magisk-v19.3.zip /sdcard/tmp/
Magisk-v19.3.zip: 1 file pushed. 21.0 MB/s (5348187 bytes in 0.243s)
这里我之前使用的是 Magisk-v17.2.zip
版本,现在要更新到 Magisk-v19.3.zip
版本。
第三步 进入Bootloader
执行 adb reboot bootloader
进入 Bootloader
界面。
第四步 进入临时Twrp
通过 twrp*.img
文件,启动进入临时Twrp:
➜ fastboot boot twrp-3.2.3-1-sailfish.img
ERROR: Couldn't create a device interface iterator: (e00002bd)
downloading 'boot.img'...
OKAY [ 0.712s]
booting...
OKAY [ 0.893s]
finished. total time: 1.605s
第五步 安装Magisk
进入 Twrp
页面后,滑动下面的 Swipe to Allow Modifications
滑条,进入Twrp操作页面。
选择 Install
– 找到目录 /sdcard/tmp/
– 选择 Magisk-v19.3.zip
文件,滑动 Swipe to confirm Flash
来安装。
安装完成后,点击下面的 Reboot System
按钮,进入下一步。
之后,直接点击中间的 Do Not Install
等待手机重启进入系统即可。
上一篇: 阴阳师》缚骨青姬典藏皮肤获取攻略
下一篇: 轶事女神夜之魅影》开场指南
推荐阅读