|
1 | | -# DPIS |
2 | | -<img src="https://raw.githubusercontent.com/Xposed-Modules-Repo/io.github.kwensiu.dpis/refs/heads/main/icon.png" height='70px'> |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | -中文说明 | [English](./README.en.md) |
8 | | - |
9 | | -DPIS 是一个基于 LSPosed/Xposed 的 Android 模块,用于按应用独立调整显示参数(虚拟宽度 + 字体大小),在不改全局系统显示设置的前提下,优化单应用观感。 |
10 | | - |
11 | | -## 核心能力 |
12 | | - |
13 | | -- 按应用配置虚拟宽度(`dp`) |
14 | | -- 按应用配置字体大小(`50-300%`) |
15 | | -- 宽度与字体均支持 `伪装` / `替换` 两种模式 |
16 | | -- 应用列表支持搜索与筛选(全部应用 / 已配置应用) |
17 | | -- 支持系统层 Hook 开关与安全模式 |
18 | | - |
19 | | -## 环境要求 |
20 | | - |
21 | | -- Android 8.0+(`minSdk 26`) |
22 | | -- 已 Root 设备 |
23 | | -- 已安装并启用 LSPosed/Xposed 环境 |
24 | | - |
25 | | -## 快速开始 |
26 | | - |
27 | | -1. 在 LSPosed 中启用 DPIS 模块。 |
28 | | -2. 在作用域中勾选目标应用。常规场景不需要勾选 `system`。 |
29 | | -3. 打开 DPIS,给目标应用设置: |
30 | | - - 虚拟宽度(`dp`) |
31 | | - - 字体大小(`50-300%`) |
32 | | - - 宽度模式与字体模式(`伪装` / `替换`) |
33 | | -4. 保存后重启目标应用进程生效;必要时重启设备。 |
34 | | - |
35 | | -如果你使用 `伪装` 模式,请额外在 LSPosed 中勾选 `system` 作用域;`替换` 模式通常不需要。 |
36 | | - |
37 | | -## 模式说明 |
38 | | - |
39 | | -| 模式 | 特点 | 适用场景 | 注意事项 | |
40 | | -| --- | --- | --- | --- | |
41 | | -| `伪装` | 更接近系统原生链路,显示通常更自然 | 追求系统级一致性 | 依赖系统层 Hook;部分应用不支持 | |
42 | | -| `替换` | 直接重写字段,生效更直接 | 大多数常规应用 | 可能出现布局错位或缩放异常 | |
43 | | - |
44 | | -## 系统层 Hook 与安全模式 |
45 | | - |
46 | | -- `关闭`:仅使用目标应用进程内覆写。建议搭配 `替换` 模式。 |
47 | | -- `开启`:启用完整 `system_server` 入口,适合调试与对照。 |
48 | | -- `开启 + 安全模式`:限制为低风险入口(`activity-start`),推荐作为默认配置。 |
49 | | - |
50 | | -如果你要使用 `伪装` 模式,请先确保 LSPosed 作用域已勾选 `system`。`替换` 模式通常可以只勾选目标应用。 |
51 | | - |
52 | | -## 日志与调试 |
53 | | - |
54 | | -- `日志输出` 默认建议关闭(降低性能开销)。 |
55 | | -- 开启后,`system_server` 高频入口会按采样窗口与去重策略输出。 |
56 | | -- 字体调试统计与悬浮窗仅用于诊断,不影响正常生效链路。 |
57 | | - |
58 | | -## 构建与测试 |
59 | | - |
60 | | -```powershell |
61 | | -./gradlew :app:assembleModern101Debug :app:assembleCompat100Debug |
62 | | -./gradlew :app:testAllDebugUnitTests |
63 | | -``` |
64 | | - |
65 | | -可选安装(Windows PowerShell): |
66 | | - |
67 | | -```powershell |
68 | | -./gradlew :app:assembleModern101Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/modern101/debug/app-modern101-debug.apk" } |
69 | | -./gradlew :app:assembleCompat100Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/compat100/debug/app-compat100-debug.apk" } |
70 | | -``` |
71 | | - |
72 | | -## 项目结构 |
73 | | - |
74 | | -```text |
75 | | -app/ Android 主模块 |
76 | | - src/main/java/ 共享生产代码 |
77 | | - src/main/res/ 共享资源与界面 |
78 | | - src/modern101/java/ libxposed API 101 专用代码 |
79 | | - src/compat100/java/ legacy Xposed API 兼容代码 |
80 | | - src/test/java/ 单元测试 |
81 | | -docs/ 当前有效文档 |
82 | | -docs/archive/ 历史归档文档 |
83 | | -refs/ 本地参考资料(LSPosed / AOSP / libxposed) |
84 | | -``` |
85 | | - |
86 | | -## 版本说明 |
87 | | - |
88 | | -| 版本 | 文件名 | 适用环境 | |
89 | | -| --- | --- | --- | |
90 | | -| 标准版 | `DPIS_{version}.apk` | LSPosed(libxposed API 101+) | |
91 | | -| 兼容版 | `DPIS_{version}_legacy.apk` | 传统 Xposed / 不支持 libxposed API 101 的框架 | |
92 | | - |
93 | | -两个版本面向相同的用户功能目标,区别主要在于与 Xposed 框架的对接方式、下载入口与更新行为。优先使用标准版,仅在标准版无法加载时使用兼容版。 |
94 | | - |
95 | | -兼容版(`legacy`)请始终以主仓库 Releases 为准。LSPosed / Xposed 模块仓库仅同步标准版 APK。 |
96 | | - |
97 | | -标准版与兼容版不可共存。二者包名相同,交叉安装会相互覆盖,并可能导致已有配置或状态被重置。 |
98 | | - |
99 | | -## 文档导航 |
100 | | - |
101 | | -- 当前文档入口:[docs/README.md](docs/README.md) |
102 | | -- 英文说明文档:[docs/README.en.md](docs/README.en.md) |
103 | | -- 历史文档归档入口:[docs/archive/README.md](docs/archive/README.md) |
104 | | - |
105 | | -## 许可证 |
106 | | - |
107 | | -DPIS 以 [GPL-3.0-or-later](LICENSE) 许可发布。 |
108 | | - |
109 | | -## 引用与致谢 |
110 | | - |
111 | | -DPIS 在实现和演进过程中,参考了以下开源项目的思路与实践,感谢这些项目及其贡献者: |
112 | | - |
113 | | -- [libxposed/api](https://github.com/libxposed/api) |
114 | | -- [LSPosed](https://github.com/LSPosed/Lsposed) |
115 | | -- [AdClose](https://github.com/zjyzip/AdClose) |
116 | | -- [App Settings(Xposed-Modules-Repo)](https://github.com/Xposed-Modules-Repo/ru.bluecat.android.xposed.mods.appsettings) |
117 | | -- [InstallerX-Revived](https://github.com/wxxsfxyzm/InstallerX-Revived) |
118 | | -- [InxLocker](https://github.com/Chimioo/inxlocker) |
119 | | -- [视界调节](https://www.coolapk.com/feed/70930481?s=OGJiYmE1YjEyYmQ1MmZnNjllOTNiNWF6a1610b3) |
120 | | - |
121 | | -## 免责声明 |
122 | | - |
123 | | -DPIS 运行于 Root/LSPosed 环境,存在稳定性与兼容性风险。请先备份重要数据,并自行评估使用风险。 |
| 1 | +# DPIS |
| 2 | +<img src="https://raw.githubusercontent.com/Xposed-Modules-Repo/io.github.kwensiu.dpis/refs/heads/main/icon.png" height='70px'> |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | +[](https://qun.qq.com/universal-share/share?ac=1&authKey=IMGMoVIeXPmgs81WgvJEgurLGCeuV%2FWKh8wSxZIXIqtvAA6U%2BJLMtwzG0lrZj7CG&busi_data=eyJncm91cENvZGUiOiIxMDgxNzg0Njc2IiwidG9rZW4iOiI4RkllZjhUVnhGYlVXcEhHZDhyWHdzcDRkRDlGKzlBL0NId1lkMTN2WFJ4SStHa2Y1bmJMM1dlemY5eEFxdmg4IiwidWluIjoiMTA3MDU3NTUyMSJ9&data=8HydkH9NGrhzp1pPhpOFSYT4Qp1aeQZZDN-Y1nk8cp-RBsmsBnRwQ_vN2qXfmhqtTc_LXfOpR6Gv9UCswKRjKg&svctype=4&tempid=h5_group_info) |
| 7 | + |
| 8 | + |
| 9 | +中文说明 | [English](docs/README.en.md) |
| 10 | + |
| 11 | +DPIS 是一个基于 LSPosed/Xposed 的 Android 模块,用于按应用独立调整显示参数(最小宽度 + 字体大小),在不改全局系统显示设置的前提下,优化单应用观感。 |
| 12 | + |
| 13 | +## 核心能力 |
| 14 | + |
| 15 | +- 按应用配置最小宽度(`dp`) |
| 16 | +- 按应用配置字体大小(`50-300%`) |
| 17 | +- 宽度与字体均支持 `系统` / `兼容` 两种模式 |
| 18 | +- 应用列表支持搜索与筛选(全部应用 / 已配置应用) |
| 19 | +- 支持系统层 Hook 开关与安全模式 |
| 20 | +- 支持在应用详情中按应用自定义字体兼容链路(含 Flutter / HyperOS native 等补充链路) |
| 21 | + |
| 22 | +## 环境要求 |
| 23 | + |
| 24 | +- Android 8.0+(`minSdk 26`) |
| 25 | +- 已 Root 设备 |
| 26 | +- 已安装并启用 LSPosed/Xposed 环境 |
| 27 | + |
| 28 | +## 快速开始 |
| 29 | + |
| 30 | +1. 在 LSPosed 中启用 DPIS 模块。 |
| 31 | +2. 在作用域中勾选目标应用。常规场景不需要勾选 `system`。 |
| 32 | +3. 打开 DPIS,给目标应用设置: |
| 33 | + - 最小宽度(`dp`) |
| 34 | + - 字体大小(`50-300%`) |
| 35 | + - 宽度模式与字体模式(`系统` / `兼容`) |
| 36 | +4. 保存后重启目标应用进程生效;必要时重启设备。 |
| 37 | + |
| 38 | +如果你使用 `系统` 模式,请额外在 LSPosed 中勾选 `system` 作用域;`兼容` 模式通常不需要。 |
| 39 | + |
| 40 | +## 模式说明 |
| 41 | + |
| 42 | +| 模式 | 特点 | 适用场景 | 注意事项 | |
| 43 | +| --- | --- | --- | --- | |
| 44 | +| `系统` | 更接近系统原生链路,显示通常更自然 | 追求系统级一致性 | 依赖系统层 Hook;部分应用不支持 | |
| 45 | +| `兼容` | 通过应用进程内兼容链路直接调整缩放,生效更直接 | 大多数常规应用 | 可能出现布局错位或缩放异常 | |
| 46 | + |
| 47 | +> 说明:旧版本 UI 中的“伪装 / 替换”已改名为“系统 / 兼容”。 |
| 48 | +
|
| 49 | +字体 `兼容` 模式默认启用 Resources、TextView 与 Paint 兜底链路,并通过调度与来源标记尽量避免重复放大。若某个应用出现缩放异常,可在目标应用详情页打开“自定义链路”,按应用关闭具体链路;修改会在目标应用进程下次启动时生效。 |
| 50 | + |
| 51 | +## 系统层 Hook 与安全模式 |
| 52 | + |
| 53 | +- `关闭`:仅使用目标应用进程内覆写。建议搭配 `兼容` 模式。 |
| 54 | +- `开启`:启用完整 `system_server` 入口,适合调试与对照。 |
| 55 | +- `开启 + 安全模式`:限制为低风险入口(`activity-start`),推荐作为默认配置。 |
| 56 | + |
| 57 | +如果你要使用 `系统` 模式,请先确保 LSPosed 作用域已勾选 `system`。`兼容` 模式通常可以只勾选目标应用。 |
| 58 | + |
| 59 | +## 日志与调试 |
| 60 | + |
| 61 | +- `日志输出` 默认建议关闭(降低性能开销)。 |
| 62 | +- 开启后,`system_server` 高频入口会按采样窗口与去重策略输出。 |
| 63 | +- 字体调试统计与悬浮窗仅用于诊断,不影响正常生效链路。 |
| 64 | + |
| 65 | +## 构建与测试 |
| 66 | + |
| 67 | +```powershell |
| 68 | +./gradlew :app:assembleModern101Debug :app:assembleCompat100Debug |
| 69 | +./gradlew :app:testAllDebugUnitTests |
| 70 | +``` |
| 71 | + |
| 72 | +可选安装(Windows PowerShell): |
| 73 | + |
| 74 | +```powershell |
| 75 | +./gradlew :app:assembleModern101Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/modern101/debug/app-modern101-debug.apk" } |
| 76 | +./gradlew :app:assembleCompat100Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/compat100/debug/app-compat100-debug.apk" } |
| 77 | +``` |
| 78 | + |
| 79 | +## 项目结构 |
| 80 | + |
| 81 | +```text |
| 82 | +app/ Android 主模块 |
| 83 | + src/main/java/ 共享生产代码 |
| 84 | + src/main/res/ 共享资源与界面 |
| 85 | + src/modern101/java/ libxposed API 101 专用代码 |
| 86 | + src/compat100/java/ legacy Xposed API 兼容代码 |
| 87 | + src/test/java/ 单元测试 |
| 88 | +docs/ 当前有效文档 |
| 89 | +docs/archive/ 历史归档文档 |
| 90 | +refs/ 本地参考资料(LSPosed / AOSP / libxposed) |
| 91 | +``` |
| 92 | + |
| 93 | +## 版本说明 |
| 94 | + |
| 95 | +| 版本 | 文件名 | 适用环境 | |
| 96 | +| --- | --- | --- | |
| 97 | +| 标准版 | `DPIS_{version}.apk` | LSPosed(libxposed API 101+) | |
| 98 | +| 兼容版 | `DPIS_{version}_legacy.apk` | 传统 Xposed / 不支持 libxposed API 101 的框架 | |
| 99 | + |
| 100 | +两个版本面向相同的用户功能目标,区别主要在于与 Xposed 框架的对接方式、下载入口与更新行为。优先使用标准版,仅在标准版无法加载时使用兼容版。 |
| 101 | + |
| 102 | +兼容版(`legacy`)请始终以主仓库 Releases 为准。LSPosed / Xposed 模块仓库仅同步标准版 APK。 |
| 103 | + |
| 104 | +标准版与兼容版不可共存。二者包名相同,交叉安装会相互覆盖,并可能导致已有配置或状态被重置。 |
| 105 | + |
| 106 | +## 文档导航 |
| 107 | + |
| 108 | +- 当前文档入口:[docs/README.md](docs/README.md) |
| 109 | +- 英文说明文档:[docs/README.en.md](docs/README.en.md) |
| 110 | +- 历史文档归档入口:[docs/archive/README.md](docs/archive/README.md) |
| 111 | + |
| 112 | +## 许可证 |
| 113 | + |
| 114 | +DPIS 以 [GPL-3.0-or-later](LICENSE) 许可发布。 |
| 115 | + |
| 116 | +## 引用与致谢 |
| 117 | + |
| 118 | +DPIS 在实现和演进过程中,参考了以下开源项目的思路与实践,感谢这些项目及其贡献者: |
| 119 | + |
| 120 | +- [libxposed/api](https://github.com/libxposed/api) |
| 121 | +- [LSPosed](https://github.com/LSPosed/Lsposed) |
| 122 | +- [AdClose](https://github.com/zjyzip/AdClose) |
| 123 | +- [App Settings(Xposed-Modules-Repo)](https://github.com/Xposed-Modules-Repo/ru.bluecat.android.xposed.mods.appsettings) |
| 124 | +- [InstallerX-Revived](https://github.com/wxxsfxyzm/InstallerX-Revived) |
| 125 | +- [InxLocker](https://github.com/Chimioo/inxlocker) |
| 126 | +- [视界调节](https://www.coolapk.com/feed/70930481?s=OGJiYmE1YjEyYmQ1MmZnNjllOTNiNWF6a1610b3) |
| 127 | + |
| 128 | +## 免责声明 |
| 129 | + |
| 130 | +DPIS 运行于 Root/LSPosed 环境,存在稳定性与兼容性风险。请先备份重要数据,并自行评估使用风险。 |
0 commit comments