Android刷机笔记

注意
本文操作机型为 Xiaomi Redmi Note 5(whyred), 不支持 A/B 分区。

这两个工具的目录下一般有连接手机的相关驱动, 记得安装。

对于 OrangeFox:

  • 选择与 ROM 内核对应的 Recovery
  • 先刷入从 ZIP 包中解压得到的 recovery.img, 进入 Recovery 模式的 OrangeFox 后, 再刷入整个 ZIP 包

刷入命令:

1
2
3
4
adb reboot bootloader
fastboot devices
fastboot flash recovery twrp.img
fastboot reboot

一些 ROM 对于文件系统, 强制要求使用 F2FS, 如果使用了 ext4, 将会卡在开机界面, 或者循环开机。

可使用 TWRP 和 OrangeFox 等 Recovery 来格式化, 也可使用 fastboot 来完成。

通过 fastboot --help 发现可借助以下命令格式化指定分区:

1
fastboot format[:FS_TYPE[:SIZE]] PARTITION

其中 FS_TYPE 是对应的文件系统, PARTITION 则是指定的分区。

userdata 分区格式化成 f2fs:

1
fastboot format:f2fs userdata

cache 分区格式化成 f2fs:

1
fastboot format:f2fs cache

如果你的设备在格式化 cache 分区时报错:

1
2
3
4
5
6
# Fastboot
FAILED (remote: 'GetVar Variable Not found')
fastboot: error: Command failed

# TWRP
Cache 无效的分区

不要慌张, 有可能是你的设备没有划分 cache 分区。Google 对于 Android 各分区的 解释 中提到:

解释
cache 分区。此分区会存储临时数据, 如果设备使用 A/B (无缝) 更新, 则此分区是可选的。

那么之后所有关于 cache 分区的操作直接跳过就好。

一些使用 4.19 内核的类原生 OS , 比如 Evolution-X 和 LineageOS, 都使用了动态分区, 需要使用支持动态分区的 Recovery 来刷入 ROM, 比如上文 Recovery 中的 OrangeFoxLineageOS Recovery

刷入 ROM 时, 如果出现有关分区的报错, 忽视即可, 因为此时分区尚未设为动态类型。

更多系统参见 Telegram 频道: https://t.me/whyredupdates

https://xiaomifirmwareupdater.com/firmware/whyred/

官方文档: https://topjohnwu.github.io/Magisk/install.html

Magisk 有三种:

  1. 使用 Magisk 的 隐藏 Magisk 功能(随机包名)。由于上游文件位于 GitHub, 所以使用此功能时最好启用网络代理

  2. 在 Magisk 中 启用 Zygisk。如果是 Magisk 原版和 Magisk Alpha, 可在安装 Shamiko 模块后再重启

  3. 在 Magisk 中安装 Shamiko 模块, 然后重启手机

  4. Shamiko 默认使用黑名单模式, 不要打开 Magisk 的 遵守排除列表 开关, 不然会冲突

  5. 使用 Magisk 的 配置排除列表 功能。勾选需要对其隐藏 root 的应用(比如银行之类)的全部进程

  6. 在 Magisk 中安装 Zygisk-LSPosed 模块, 然后重启手机

  7. 安装 隐藏应用列表, 在 LSPosed 管理器中将其启用, 然后重启手机

  8. 配置隐藏应用列表, 设置黑名单。将 Magisk 和 LSPosed 模块以及一些使用 root 权限的敏感软件都列入隐藏名单, 应用于某些软件(银行之类)

https://github.com/apkunpacker/MagiskDetection

也就 MomoNativeTest 这两个软件的检测够强力, 别的不太行。

  • 哔哩哔哩 不要竖屏, 将哔哩哔哩中全屏播放的"竖屏视频"强制以"横屏播放器"播放, 最后更新于 2023/01/26
  • Fuck Coolapk R, 精简酷安, 最后更新于 2023/01/22
  • InstallerPlus, 在安装和卸载软件时提供更多信息
  • 灭霸, 调教软件
  • 隐藏应用列表, 使一些应用对另一些应用隐藏, 比如隐藏 root 应用和 LSPosed 模块
  • 知了, 精简知乎, 最后更新于 2023/06/21
1
adb shell getprop gsm.version.baseband
1
adb shell cat /proc/version
1
adb shell getenforce

若状态是 Permissive, 可将状态变成 Enforcing:

1
2
3
adb shell
su root
setenforce 1

参考 这篇文章, 一般先使用 Universal SafetyNet Fix, 不行的话再上 MagiskHidePropsConf, 再不行就用 XPrivacyLua

Play 商店设备未通过认证, 可 手动注册, 参考少数派的这篇 文章, 偶尔有用。 检查系统指纹命令:

1
2
adb shell getprop ro.build.fingerprint
# MIUI_12.0.3: xiaomi/whyred/whyred:9/PKQ1.180904.001/V12.0.3.0.PEICNXM:user/release-keys

将以下软件包名保存到文件中, 比如 list.txt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
com.miui.contentextension 
com.miui.fm 
com.mi.liveassistant 
com.xiaomi.vipaccount 
com.xiaomi.gamecenter.sdk.service 
com.android.quicksearchbox 
com.xiaomi.payment 
com.android.browser 
com.miui.systemAdSolution 
com.baidu.input_mi 
com.miui.userguide 
com.xiaomi.ab 
com.xiaomi.jr 
com.miui.huanji 
com.miui.hybrid 
com.mi.health 
com.mfashiongallery.emag 
com.miui.miservice 
com.miui.virtualsim 
com.miui.personalassistant 
com.miui.bugreport 
com.miui.voicetrigger 
com.mipay.wallet 
com.xiaomi.pass 
com.xiaomi.shop 
com.iflytek.inputmethod.miui 
com.miui.newhome 
com.miui.video 
com.miui.hybrid.accessory 
com.sohu.inputmethod.sogou.xiaomi 
com.miui.touchassistant 
com.xiaomi.youpin 
com.miui.securityinputmethod 
com.xiaomi.gamecenter 
com.miui.analytics 
com.xiaomi.scanner 
com.duokan.reader 
com.caf.fmradio 
com.miui.voiceassist 
com.sina.weibolite 
com.miui.smarttravel 
com.miui.fmservice 
com.xiaomi.mimobile.noti 
com.xiaomi.smarthome 
com.xiaomi.drivemode 
com.miui.newmidrive 
com.xiaomi.aiasst.service 
com.android.stk 
com.android.email 

这些软件的名称是:

软件名称软件包名
传送门com.miui.contentextension
收音机com.miui.fm
小米直播助手com.mi.liveassistant
小米社区com.xiaomi.vipaccount
游戏服务com.xiaomi.gamecenter.sdk.service
搜索com.android.quicksearchbox
米币支付com.xiaomi.payment
浏览器com.android.browser
msacom.miui.systemAdSolution
百度输入法小米版com.baidu.input_mi
用户手册com.miui.userguide
mabcom.xiaomi.ab
天星金融com.xiaomi.jr
小米换机com.miui.huanji
快应用服务框架com.miui.hybrid
健康com.mi.health
小米画报com.mfashiongallery.emag
服务与反馈com.miui.miservice
全球上网com.miui.virtualsim
智能助理com.miui.personalassistant
用户反馈com.miui.bugreport
语音唤醒com.miui.voicetrigger
小米钱包com.mipay.wallet
小米卡包com.xiaomi.pass
小米商城com.xiaomi.shop
讯飞输入法小米版com.iflytek.inputmethod.miui
内容中心com.miui.newhome
小米视频com.miui.video
HybridAccessorycom.miui.hybrid.accessory
搜狗输入法小米版com.sohu.inputmethod.sogou.xiaomi
悬浮球com.miui.touchassistant
小米有品com.xiaomi.youpin
小米安全键盘com.miui.securityinputmethod
游戏中心com.xiaomi.gamecenter
Analyticscom.miui.analytics
扫一扫com.xiaomi.scanner
阅读com.duokan.reader
f_m_testcom.caf.fmradio
小爱同学com.miui.voiceassist
微博极速版com.sina.weibolite
智能出行com.miui.smarttravel
收音机com.miui.fmservice
全球上网插件com.xiaomi.mimobile.noti
米家com.xiaomi.smarthome
驾车场景com.xiaomi.drivemode
小米云盘com.miui.newmidrive
AI虚拟助手com.xiaomi.aiasst.service
USIM卡应用com.android.stk
电子邮箱com.android.email

批量卸载 预装软件:

1
cat list.txt | cut -d ':' -f 2 | tr '\r' ' ' | xargs -r -n1 -t adb shell pm uninstall --user 0 

或者批量禁用 预装软件:

1
cat list.txt | cut -d ':' -f 2 | tr '\r' ' ' | xargs -r -n1 -t adb shell pm disable-user 

命令解释:

  • cut -d ':' -f 2: 使用 : 分隔符来切割输出, 并只保留第二列, 也就是包名
  • tr '\r' ' ': 将行末的 \r 字符替换为空格, 以便在 xargs 中使用换行符作为分隔符
  • xargs: 将前面的输出作为参数传递给后面的命令
  • -r 如果没有输入, 则不运行命令
  • -n1: 将每个参数单独传递给 adb xxx 命令
  • -t: 在运行每个命令之前先打印命令本身

从 ApkMirror 下载安装 Google Services Framework, Google Play Services, Google Play Store 即可。

注意
  • MIUI 魔改了 Android 系统 API, 会导致 apks(apkm) 安装失败, 就算用 root 权限安装也容易出问题, 所以在 ApkMirror 中下载软件时, 不要下载带有 split 的 apkm, 要下载 apk。
  • 从 Recovery 中刷入 GApps 可能出现 Play Store 闪退的情况。

MIUI 的蓝牙 AAC 黑白名单文件路径为 /system/etc/bluetooth/interop_database.conf, 比如将 OPPO Enco Air 添加至白名单:

1
2
3
4
[INTEROP_ENABLE_AAC_CODEC]
OPPO Enco Air = Name_Based
# Address_Based除对应蓝牙耳机MAC地址前六位
48:D8:45 = Address_Based

可在 Recovery 中通过 adb sideload 刷入 GApps, 推荐 BiTGApps, 也可选择 Mind The GappsThe Open GApps Project

注意
成功刷入 ROM 后, 先不要开机, 要在这时刷入 GApps。若是不小心开了机, 只能恢复出厂设置后再刷入 GApps。因为 SetupWizard 需要在设备首次启动时运行。

进入 Android Shell:

1
adb shell

常用命令:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 列出设备中已经安装的所有应用
pm list packages
# 列出包名中包含关键字的应用的完整包名
pm list packages "keyword"
# 列出所有已禁用的应用
pm list packages -d
# 列出所有已启用的应用
pm list packages -e
# 列出所有系统应用
pm list packages -s
# 列出所有第三方应用
pm list packages -3

# 列出系统上所有的用户
pm list users

# 列出该应用的所有数据位置
pm path package_name

# 清除指定应用的所有数据
pm clear package_name

# 卸载应用
# -k: 卸载应用且保留数据与缓存(不加-k则全部删除)
# --user 0: 为当前用户卸载
pm uninstall [-k] [--user 0] package_name

# 禁用应用
pm disable-user package_name
# 启用应用
pm enable package_name

更多 Package Manager 命令参见 https://developer.android.com/studio/command-line/adb?hl=zh-cn#pm

1
2
3
4
5
6
7
settings put global ntp_server ntp.aliyun.com
# settings put global ntp_server cn.ntp.org.cn
# settings put global ntp_server cn.pool.ntp.org
# settings put global ntp_server ntp.ntsc.ac.cn
# settings put global ntp_server ntp.tencent.com
# settings put global ntp_server time.apple.com
# settings put global ntp_server time.windows.com

设置完成后, 即使重启仍然有效, 系统更新后是否仍有效暂未检查。

检查配置:

1
2
3
settings get global ntp_server
# 或
settings list global | grep ntp
1
2
3
4
5
6
7
# 启用 Captive Portal
settings put global captive_portal_mode 1
# 使用 HTTPS 检测
settings put global captive_portal_use_https 1
# 设置检测地址
settings put global captive_portal_http_url http://connectivitycheck.platform.hicloud.com/generate_204
settings put global captive_portal_https_url https://connectivitycheck.platform.hicloud.com/generate_204

或使用其他检测地址:

1
2
3
4
5
6
# Xiaomi
settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204
settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204
# Vivo
settings put global captive_portal_http_url http://wifi.vivo.com.cn/generate_204
settings put global captive_portal_https_url https://wifi.vivo.com.cn/generate_204

设置完成后, 即使重启仍然有效, 系统更新后是否仍有效暂未检查。

检查配置:

1
settings list global | grep captive

罗列一些常用软件。

  1. ADM
  2. All-In-One Calculator
  3. Android System WebView
  4. Bitwarden
  5. Breezy-Weather, 几何天气 的二次开发
  6. Clash for Android: Release, Alpha
  7. F-Droid
  8. Fake Location
  9. Fcitx5 for Android
  10. Gboard, 推荐使用 Gboard Lite
  11. GitHub
  12. Google TTS
  13. LibChecker
  14. LineageOS Camera
  15. LineageOS Phone
  16. LineageOS Recorder
  17. LocalSend
  18. Microsoft Onedrive
  19. Microsoft Outlook Lite
  20. Microsoft To Do
  21. MT管理器
  22. PicMarker
  23. SAI, 安装含有 splits 的 apkm 和 apks 格式的安装包
  24. Simple Contacts Pro
  25. Simple Dialer
  26. Simple Gallery Pro
  27. Simple SMS Messenger
  28. Telegram
  29. Twilio Authy
  30. WPS Office Lite
  31. X浏览器
  32. 阿里云盘
  33. 百度网盘
  34. 白马地图
  35. 椒盐音乐
  36. 京东
  37. 酷安
  38. 蜜蜂便签
  39. 幕布
  40. QQ邮箱
  41. 淘宝
  42. 铁路12306
  43. 微信
  44. 小米计算器
  45. 小米万能遥控
  46. 邮储银行
  47. 支付宝
  48. 中国工商银行