You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Android系统源码中smallest width的初始值

修改Android系统源码定制Smallest Width初始值

要定制smallest width(以下简称sw)的初始值,核心是修改系统中计算或赋值sw的逻辑,而非依赖开发者选项或adb命令。以下是具体实现步骤:

一、定位核心代码文件

smallestWidthDp的初始化逻辑主要在DisplayManagerService中,不同Android版本的文件路径略有差异:

  • Android 10及以上:frameworks/base/services/core/java/com/android/server/display/DisplayManagerService.java
  • 旧版本(如Android 8/9):frameworks/base/services/core/java/com/android/server/wm/DisplayManagerService.java

二、修改方式(二选一)

方式1:直接硬编码固定值

找到buildDisplayInfoLocked方法中计算smallestWidthDp的代码段,替换为自定义固定值:

// 原计算逻辑(示例)
displayInfo.smallestWidthDp = Math.min(displayInfo.logicalWidthDp, displayInfo.logicalHeightDp);

// 修改为自定义值,比如600dp
displayInfo.smallestWidthDp = 600;

方式2:通过设备配置文件动态配置

如果需要保留机型适配灵活性,可通过设备overlay配置文件自定义:

  1. 在设备专属overlay目录(如device/[厂商]/[机型]/overlay/frameworks/base/core/res/res/values/config.xml)添加配置项:
<integer name="config_customSmallestWidthDp">600</integer>
  1. 回到DisplayManagerService的buildDisplayInfoLocked方法,读取该配置并替换计算逻辑:
// 读取自定义配置
int customSw = context.getResources().getInteger(com.android.internal.R.integer.config_customSmallestWidthDp);
// 优先使用自定义值,无配置则保留原计算逻辑
displayInfo.smallestWidthDp = customSw > 0 ? customSw : Math.min(displayInfo.logicalWidthDp, displayInfo.logicalHeightDp);

三、验证修改效果

  1. 重新编译系统源码并刷入设备
  2. 进入「开发者选项」查看「最小宽度」值,或通过命令验证:
adb shell dumpsys display | grep smallestWidthDp

输出结果应显示你设置的初始值。

注意:部分定制ROM可能会有额外的逻辑覆盖sw值,需结合具体厂商的代码调整。

内容的提问来源于stack exchange,提问作者user24483231

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:55:08