历史原因

MIUI13开始,深色模式的强制反色改为了白名单模式
白名单里的大多为热门大厂软件,小众软件以至于无法强制反色,晚上真的是亮瞎眼
至于为什么改,看看小米社区环境就知道了


破解思路

既然有白名单,就要有地方存白名单的信息,我们可以从白名单文件下手,添加我们要强制反色的软件
从深色这一词(dark)以及为线索,开始搜索文件名
/system/etc/文件夹下发现了ForceDarkAppSettings.json文件,这就是MIUI13的白名单文件(MIUI14改到了/system_ext/etc/forcedarkconfig/文件夹下)


文件结构分析

我们先看看白名单文件部分内容

1
2
3
4
5
6
[
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.sina.weibo", "showInSettings": true},
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.ss.android.article.news", "showInSettings": true},
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.snda.wifilocating", "showInSettings": true},
]

白名单文件里是一个Json,由一个大的List包含着一个个Map
List没啥说的
Map的数据我们拿第一个分析

1
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.sina.weibo", "showInSettings": true}
名字 值说明 数据类型
defaultEnable 是否启用 布尔值
overrideEnableValue 覆盖等级 整数
packageName 反色软件包名 字符串
showInSettings 是否在设置显示 布尔值

那么如果我要添加一个软件在白名单里面,那么就添加一次MapList里面

例如这样:

1
2
3
4
5
6
7
8
[
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "Com.bilibili.app.blue", "showInSettings": true},
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "tv.danmaku.bili", "showInSettings": false},
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.sina.weibo", "showInSettings": true},
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.ss.android.article.news", "showInSettings": true},
{"defaultEnable": true, "overrideEnableValue": 0, "packageName": "com.snda.wifilocating", "showInSettings": true},
]

  • 哔哩哔哩概念版 强制反色,并且在设置显示
  • 哔哩哔哩 强制反色,但是并不在设置显示

保存修改

目前据大部分新手机都是EROFS文件系统,旧手机是EXT4文件系统
EROFS就算有ROOT权限都不能修改系统,EXT4有ROOT权限就能修改
所以当你修改后保存,且给予了修改软件ROOT时,无法保存,那么你就是EROFS文件系统
最简单的解决方法就是制作Magisk模块挂载修改过的文件,以达到修改目的白名单文件的目的


对比

修改前 修改后
Screenshot-2023-03-13-21-11-08-311-com-android-se.jpg Screenshot-2023-03-13-21-11-08-311-com-android-se.jpg

懒人修改法

软件 爱玩机工具箱 有一键添加所有软件到白名单,并且制作Magisk模块刷入,懒人福音
下载链接