【解决方案】鸿蒙 / 矿鸿系统 Shell 无故退出问题(息屏导致)详解

平台环境

  • OpenHarmony 版本:4.1 release
  • 开发板:DAYU / RK3568
  • 调试工具:hdc

在使用 OpenHarmony 4.1 Release(矿鸿系统)进行开发时,遇到这样的问题:

🚨 Shell 会在一段时间后自动退出,严重影响调试和测试效率。

根本原因:系统息屏导致 shell 会话被关闭。

本文将从 修改系统配置、设置电源模式、替换配置文件、代码控制常亮 四种方法,讲解如何解决此问题。


一、修改源码实现全局不息屏

如果你正在编译自己的系统镜像(如 OHOS 源码构建),可以直接修改系统电源配置文件,实现在所有模式下“不息屏”。

修改路径:

base/powermgr/power_manager/services/native/profile/power_mode_config.xml

关键参数解释:

Switch ID功能说明
101DisplayOffTime 息屏时间
102系统自动睡眠时间
115屏幕亮度

DisplayOffTime表示息屏的,因此只需要修改DisplayOffTime 对应的id:101即可

<switch id="101" value="xxx"/>value 改为 -1,即表示不设置息屏时间 = 永不息屏

修改示例:

<proxy id="600"> <!-- 正常模式 --><switch id="101" value="-1" recover_flag="0"/>...
</proxy>

建议你对所有模式(id 600~603)都设置 value="-1",这样即使切换电源模式,也不会息屏。

修改后的文件

<!--Power Mode Definitions:        // 电源模式定义MODE_NORMAL = 600,             // 正常模式MODE_POWER_SAVE = 601,         // 省电模式MODE_PERFORMANCE = 602,        // 性能优先MODE_EXTREME_POWER_SAVE = 603, // 超级省电
-->
<!--Action Definitions:         // 行为定义DisplayOffTime = 101,       // 息屏时间控制SystemAutoSleepTime = 102,  // 系统自动睡眠时间控制AutoAdjustBrightness = 103, // 亮度自动调整时间控制AutoWindowRotation = 107,   // 窗口自动旋转时间控制SystemBrightness = 115,     // 系统亮度调节VibratorsState = 120,       // 马达(震动)状态
-->
<switch_proxy version="1"><proxy id="600"><switch id="101" value="-1" recover_flag="0"/><switch id="102" value="0" recover_flag="0"/><switch id="103" value="-1" recover_flag="0"/><switch id="107" value="1" recover_flag="0"/><switch id="115" value="102" recover_flag="0"/><switch id="120" value="1" recover_flag="0"/></proxy><proxy id="601"><switch id="101" value="-1" recover_flag="0"/><switch id="102" value="5000" recover_flag="0"/><switch id="103" value="-1" recover_flag="0"/><switch id="107" value="-1" recover_flag="0"/><switch id="115" value="50" recover_flag="0"/><switch id="120" value="-1" recover_flag="0"/></proxy><proxy id="602"><switch id="101" value="-1" recover_flag="0"/><switch id="102" value="-1" recover_flag="0"/><switch id="103" value="-1" recover_flag="0"/><switch id="107" value="1" recover_flag="0"/><switch id="115" value="255" recover_flag="0"/><switch id="120" value="1" recover_flag="0"/></proxy><proxy id="603"><switch id="101" value="-1" recover_flag="0"/><switch id="102" value="1000" recover_flag="0"/><switch id="103" value="-1" recover_flag="0"/><switch id="107" value="-1" recover_flag="0"/><switch id="115" value="25" recover_flag="0"/><switch id="120" value="-1" recover_flag="0"/></proxy>
</switch_proxy>

二、通过命令行修改电源模式(临时方案)

如果你不想重编系统镜像,也可以临时修改电源模式,使其使用“性能优先模式”来避免息屏。

操作步骤:

# 进入 shell
hdc shell# 设置为性能优先模式
power-shell setmode 602

成功输出如下:

Set Mode: 602
Set Mode Success!

⚠️ 注意:该设置在系统重启后会恢复,需重新执行。

三、替换设备上的 power_mode_config.xml 文件(持久化方案)

若你无法编译系统但希望持久生效,可以将修改后的 XML 文件推送至设备 /vendor 目录。

步骤:

  1. 修改本地 XML 文件:
    power_mode_config.xml 中,将所有 <switch id="101" value="xxx"/> 设置为 -1

  2. 获取写权限:

hdc shell "mount -o remount,rw /"
  1. 准备目录(如不存在):
hdc shell
mount -o rw,remount /vendor
cd /vendor/etc
mkdir power_config
exit
  1. 推送 XML 文件:
hdc file send power_mode_config.xml /vendor/etc/power_config/
  1. 重启设备使其生效:
hdc shell reboot

修改生效后,无需每次开机都重新设置,除非你重新刷机覆盖了 vendor 分区

四、应用内控制屏幕常亮(适用于 JS/TS 应用)

如果你只希望在当前应用运行时保持屏幕常亮,可在代码中调用 setWindowKeepScreenOn

示例代码(ArkTS):

private async keepScreenOn(status: boolean) {let context = getContext(this) as common.BaseContextlet windowClass = await window.getLastWindow(context)let isScreenOn = await windowClass.getWindowProperties().isKeepScreenOnif (!isScreenOn) {await windowClass.setWindowKeepScreenOn(status)}console.info("屏幕常亮状态:" + isScreenOn)
}

建议在页面生命周期中调用:

onPageShow() {this.keepScreenOn(true) // 页面显示时保持常亮
}onPageHide() {this.keepScreenOn(false) // 页面隐藏时取消
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91576.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Data Analysis TTAD=>CNN-BiGRU-MSA

TTAO 预处理、CNN-BiGRU-MSA 模型 时序数据回归分析时序数据分析方法&#xff0c;特点&#xff1a;TTAO 预处理&#xff1a;通过三角拓扑结构增强时序特征的局部和全局关系混合模型架构&#xff1a;CNN 层提取局部特征模式BiGRU 捕获双向时序依赖多头自注意力机制进行序列建模…

python-字典、集合、序列切片、字符串操作(笔记)

一、字符串常见操作&#xff08;重点&#xff09;​1.​2.字符串无法修改#错误示范 str1"djskds" str1[2]"3"3.​str1"abcand" # 输出3 print(str1.index("and"))4.​str1"abcand" newStrstr1.replace("and",&quo…

【Android】EditText使用和监听

三三想成为安卓糕手 一&#xff1a;用户登录校验 1&#xff1a;EditText文本输入框<EditTextandroid:id"id/et_user_name"android:layout_width"match_parent"android:layout_height"wrap_content"android:inputType"number"androi…

SQL 中根据当前时间动态计算日期范围

在 SQL 中写“动态时间”通常是指根据当前时间动态计算日期范围&#xff0c;而不是写死固定日期。以下是几种常见写法&#xff08;以 SQL Server / MySQL / PostgreSQL 为例&#xff09;&#xff1a;1. 获取当前时间-- SQL Server SELECT GETDATE() AS now-- MySQL SELECT NOW(…

react-redux 类组件的 connect

store 目录下 store/reducer.js import * as actionTypes from ./constantsconst initalState {counter: 100,banners: [],recommends: [] }/*** 定义reducer函数&#xff1a;纯函数* param 参数一&#xff1a;store中目前保存的state* param 参数二&#xff1a;通过 dispatch…

数据分布是如何影响目标检测精度

文章目录一、研究背景与目标模型效果提升数据集优化二、研究问题明细各方向的关联性与核心逻辑1. 高质量数据集的高效筛选与主动学习应用2. 基于推理结果的数据补充与增强方向优化3. 多类别场景下目标尺度与模型精度的关联性4. 损失函数与数据增强对精度的量化影响5. 目标类型专…

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南 在AI大模型技术飞速发展的今天,企业需要将现有Java接口快速适配为模型计算协议(MCP,Model Calculation Protocol)服务,以便与大模型生态无缝对接。然而,手动逐个转换接口不仅耗时耗力,还容易因人为疏忽导致错误…

Eclipse Debug 配置指南

Eclipse Debug 配置指南 引言 Eclipse 作为一款功能强大的集成开发环境(IDE),在Java开发者中享有盛誉。在开发过程中,调试功能是必不可少的。本文将详细介绍如何在Eclipse中配置调试环境,以便更高效地进行代码调试。 1. 开发环境准备 在开始配置Eclipse调试环境之前,…

modelscope ProxyError: HTTPSConnectionPool(host=‘www.modelscope.cn‘, port=443)

目录 Windows CMD&#xff1a; powershell Linux / macOS / Git Bash&#xff1a; win11 设置全局系统变量代理 modelscope ProxyError: HTTPSConnectionPool(hostwww.modelscope.cn, port443) 报错&#xff1a; requests.exceptions.ProxyError: HTTPSConnectionPool(host…

Python学习之——序列化与反序列化

Python学习之——序列化与反序列化yaml & json & xmlyamljsonPython自带Json库xml一个综合示例pickle & msgpack & marshalpicklemsgpackmarshal自定义导出py文件一个导出py文件的示例yaml & json & xml YAML & JSON &XML 如何选择 yaml Py…

设计模式之代理模式:掌控对象访问的优雅之道

代理模式&#xff1a;掌控对象访问的优雅之道 引言&#xff1a;设计模式的重要性 在软件开发中&#xff0c;设计模式是解决常见问题的可复用方案&#xff0c;它们如同建筑师的蓝图&#xff0c;为开发者提供了经过验证的最佳实践。在23种经典设计模式中&#xff0c;代理模式因其…

sqli-labs靶场通关笔记:第18-19关 HTTP头部注入

第18关 User-Agent注入登录正确的用户名密码&#xff0c;它会将User-Agent的信息回显到页面上。猜测UA头可能存在注入点。利用bp抓包&#xff0c;在UA头后面加一个单引号&#xff0c;发现报错了。观察报错信息&#xff0c;显示nearxx,admin)&#xff0c;推测后面应该还有两个参…

基于按键开源MultiButton框架深入理解代码框架(三)(指针的深入理解与应用)

文章目录3、分析代码3.3 按键的插入3.4 按键的删除3.5 继续分析状态机核心理解4、写在最后的总结5、思想感悟篇6、慈悲不渡自绝人3、分析代码 3.3 按键的插入 // Button handle list headstatic Button* head_handle NULL;/*** brief Start the button work, add the handle…

ACOUSLIC-AI挑战报告:基于低收入国家盲扫超声数据的胎儿腹围测量|文献速递-医学影像算法文献分享

Title题目ACOUSLIC-AI challenge report: Fetal abdominal circumferencemeasurement on blind-sweep ultrasound data from low-income countriesACOUSLIC-AI挑战报告&#xff1a;基于低收入国家盲扫超声数据的胎儿腹围测量01文献速递介绍胎儿生长受限&#xff08;FGR&#xf…

集群聊天服务器各个类进行详解

1.dh.h类定义概要类名&#xff1a; MySQL功能&#xff1a; 简化MySQL的连接、查询和更新操作&#xff0c;提供接口给上层应用使用。成员变量private:MYSQL *_conn;_conn&#xff1a;指向MYSQL结构体的指针&#xff0c;用于代表数据库连接实例。由mysql_init()初始化&#xff0c…

电缆安全双保险:不止防盗,更能防触电的塔能智慧照明守护方案

城市照明、地下车库以及园区路灯所涉及的电缆安全问题&#xff0c;向来都是运维管理方面颇为棘手的难题。在传统的运维管理模式之下&#xff0c;电缆一旦被盗&#xff0c;那么所造成的影响可不小&#xff0c;一方面会带来直接的经济损失&#xff0c;另一方面还极有可能因为线路…

Leetcode刷题营第二十九,三十题:二叉树的中序以及后序遍历

94.二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#x…

Rabbitmq Direct Exchange(直连交换机)可以保证消费不被重复消费吗,可以多个消费者,但是需要保证同一个消息,不会被投递给多个消费者

在 RabbitMQ 中&#xff0c;默认情况下&#xff0c;不能保证消息不被重复消费&#xff0c;但可以通过 队列绑定方式 消费者竞争机制 来确保 同一消息只被一个消费者处理。以下是几种可行的方案&#xff1a;方案 1&#xff1a;单队列 竞争消费者模式&#xff08;默认行为&…

常用的OTP语音芯片有哪些?

唯创知音在 OTP 语音芯片有着26年的历史&#xff0c;有着丰富的技术积累与产品迭代历程。1999 年&#xff0c;唯创知音在广州成立&#xff0c;彼时便开始在电子领域积极探索。2000 年&#xff0c;公司敏锐捕捉到语音芯片行业的发展潜力&#xff0c;正式进军该领域。经过数年技术…

分布式光伏发电系统中的“四可”指的是什么?

在分布式光伏电站规模爆发式增长的今天&#xff0c;“看不见、管不住、调不动”的难题却成为行业痛点。如何让散布各处的光伏电站真正成为稳定高效的“绿色能量站”&#xff1f;2025年《分布式光伏发电开发建设管理办法》大型工商业项目&#xff08;≥6MW&#xff09;明确要求具…