ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RK3568 默认锁屏、永不休眠没生效?让走 TaoToken 的 Codex 对照 defaults.xml 排查

RK3568 默认锁屏、永不休眠没生效?让走 TaoToken 的 Codex 对照 defaults.xml 排查 RK3568 Android11 默认锁屏与永不休眠不生效用 Codex 对照 defaults.xml 逐层排查RK3568 Android11 SDK 的固件默认项改造看起来只是改几个字段实际动手后经常出现「不锁屏生效了但屏幕还是 60 秒灭」「右键返回和浅睡 wake_lock 互相打架」这类说不清哪一层没生效的问题。这篇从排障视角出发把原来「自己逐个文件比对」的步骤换成用走 TaoToken 的 Codex 来对照源码树排查。TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册后创建 Key把 Base URL 填 https://taotoken.net/api就能在本地对着 RK3568 源码树把四项默认项挨个复核。一、原问题与场景两处 defaults.xml 的 overlay 覆盖关系RK3568 Android11 SDK 默认会锁屏、定时休眠休眠时进入深度睡眠。实际项目里大多数客户设备是长时间运行、不熄屏所以需要在固件层改默认项。原文涉及四个改动点默认不锁屏frameworks/base/packages/SettingsProvider/res/values/defaults.xml里把def_lockscreen_disabled由false改true。默认永不休眠device/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml里把def_screen_off_timeout由60000改0x7fffffff。鼠标右键为返回frameworks/native/services/inputflinger/reader/mapper/accumulator/CursorButtonAccumulator.cpp里把AMOTION_EVENT_BUTTON_SECONDARY改成AMOTION_EVENT_BUTTON_BACK。浅度睡眠在 device 目录的.rc文件里写echo noSuspend /sys/power/wake_lock。痛点集中在第 1、2 项frameworks/base下的 defaults.xml 和device/rockchip/rk356x/overlay下的同名 defaults.xml 存在 overlay 覆盖关系。改完刷机后常见现象是「不锁屏生效了但屏幕仍按 60 秒灭」——说明def_lockscreen_disabled那层生效了但def_screen_off_timeout被 overlay 里的旧值或字段名拼写问题盖掉了。另一类现象是「右键返回和浅睡 wake_lock 互相打架」——.rc里 wake_lock 插入位置不对或者 CursorButtonAccumulator.cpp 的 diff 打在了错误分支上。这类问题的本质是你改的文件不一定是你以为生效的那一层。Android 的 overlay 机制会按优先级合并资源device/rockchip/rk356x/overlay下的同名文件优先级高于frameworks/base下的默认值。如果只改了frameworks/base而没同步 overlay或者 overlay 里字段名拼错比如def_screen_off_timeout写成def_screen_off_timeout_ms编译能过但运行时读到的还是旧值。二、TaoToken 前置拿 Key 并配通 CodexTaoToken 在这里只提供 Key 和统一接入的模型通道真正读文件、比对配置、给出修改建议的是 Codex。所以前置步骤只有两步第一步注册并创建 Key打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册账号进入控制台创建 API Key。Key 的格式是YOUR_API_KEY后面配置时替换成你自己的。第二步配置 Codex 的 Base URLCodex 的配置文件通常是~/.codex/config.toml或项目级config.toml。把 Base URL 指向 TaoToken 的 API 地址# ~/.codex/config.toml model gpt-4o # 或你选定的模型 ID base_url https://taotoken.net/api api_key YOUR_API_KEY如果你用的是 Claude Code 而不是 Codex配置在settings.json里字段是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: YOUR_API_KEY } }配通后Codex 会话就能读取你本地 RK3568 源码树里的文件对照 overlay 优先级、字段名拼写与.rc插入位置逐条判断哪一步被覆盖。三、可复制配置把两个 defaults.xml 和 CursorButtonAccumulator.cpp 的 diff 一起贴进 Codex这一步是排障的核心。不要只贴一个文件要把所有可能互相覆盖的文件一起贴进去让 Codex 对照判断。准备三个片段片段 Aframeworks/base/packages/SettingsProvider/res/values/defaults.xml的相关行!-- frameworks/base/packages/SettingsProvider/res/values/defaults.xml -- bool namedef_lockscreen_disabledtrue/bool integer namedef_screen_off_timeout60000/integer片段 Bdevice/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml的相关行!-- device/rockchip/rk356x/overlay/.../defaults.xml -- integer namedef_screen_off_timeout0x7fffffff/integer片段 CCursorButtonAccumulator.cpp的 diff -110,7 110,8 uint32_t CursorButtonAccumulator::getButtonState() const { if (strcmp(targetProduct, box) 0 || strcmp(targetProduct, atv) 0) { result | AMOTION_EVENT_BUTTON_BACK; } else { - result | AMOTION_EVENT_BUTTON_SECONDARY; result | AMOTION_EVENT_BUTTON_BACK; } }片段 Ddevice 目录.rc文件里 wake_lock 的插入位置# device/rockchip/rk356x/xxx.rc on boot echo noSuspend /sys/power/wake_lock在 Codex 会话里这样提问这是 RK3568 Android11 SDK 的四个改动片段。请对照 overlay 优先级判断def_lockscreen_disabled和def_screen_off_timeout分别在哪个文件生效overlay 里的同名文件是否会覆盖 frameworks/base 下的值def_screen_off_timeout的值0x7fffffff在 overlay 里是否正确覆盖了60000字段名有没有拼写问题CursorButtonAccumulator.cpp 的 diff 是否打在了正确的分支上AMOTION_EVENT_BUTTON_BACK是否会影响其他按键.rc里echo noSuspend /sys/power/wake_lock的插入位置是否在on boot之后会不会和右键返回的 input 事件冲突Codex 会逐条给出判断比如指出def_screen_off_timeout在 overlay 里必须和frameworks/base下的字段名完全一致否则编译不报错但运行时读不到或者指出.rc里的 wake_lock 如果插在on init阶段可能早于 power 服务初始化导致锁不上。四、验证请求与成功结果配置和提问都完成后用一次实际请求验证 Codex 是否能正确读取本地文件并给出判断。验证方式一让 Codex 直接读文件在 Codex 会话里输入读取我本地frameworks/base/packages/SettingsProvider/res/values/defaults.xml和device/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml对比def_screen_off_timeout的值告诉我哪个会生效。如果 Codex 能返回两个文件的实际内容并指出 overlay 优先级说明 Base URL 和 Key 配通了。验证方式二检查编译产物刷机后用 adb 检查实际生效的值adb shell settings get system screen_off_timeout adb shell settings get secure lockscreen.disabled如果screen_off_timeout返回2147483647即0x7fffffff说明 overlay 生效了如果返回60000说明 overlay 没覆盖成功需要回到 Codex 会话里检查字段名和文件路径。成功结果的特征Codex 能准确指出两个 defaults.xml 的覆盖关系并告诉你改哪个文件才生效。刷机后adb shell settings get system screen_off_timeout返回2147483647。鼠标右键触发返回事件且设备熄屏后外设电源不断开浅度睡眠生效。五、本篇常见错排查错误 1只改了 frameworks/base 下的 defaults.xml没改 overlay现象不锁屏生效了但屏幕还是 60 秒灭。 原因def_lockscreen_disabled在 frameworks/base 下改 true 后overlay 里没有同名覆盖所以生效但def_screen_off_timeout在 overlay 里有旧值60000覆盖了 frameworks/base 下的修改。 排查在 Codex 会话里同时贴两个文件让它对比字段名和值。错误 2overlay 里字段名拼写错误现象编译通过刷机后screen_off_timeout还是 60000。 原因overlay 里写成了def_screen_off_timeout_ms或def_screen_off_timeout少了某个字母编译不报错但运行时读不到。 排查让 Codex 逐字符对比两个文件里的字段名。错误 3CursorButtonAccumulator.cpp 的 diff 打在了错误分支现象右键返回没生效或者左键也变成了返回。 原因diff 打在了if (strcmp(targetProduct, box) 0 ...)分支里而不是else分支。 排查把完整 diff 贴进 Codex让它检查和-行的位置。错误 4.rc 里 wake_lock 插入位置不对现象浅度睡眠没生效设备还是进入深度睡眠。 原因echo noSuspend /sys/power/wake_lock插在了on init阶段早于 power 服务初始化。 排查让 Codex 检查.rc文件的on boot和on init段落确认插入位置。错误 5右键返回和 wake_lock 冲突现象右键返回生效后设备偶尔无法进入浅睡。 原因input 事件触发了 wake_lock 的释放逻辑或者.rc里的 wake_lock 被其他服务覆盖。 排查在 Codex 会话里同时贴 CursorButtonAccumulator.cpp 的 diff 和.rc片段让它判断两者是否有事件冲突。六、语义一致 CTA排障和接入相关的配置问题建议先到 TaoToken 控制台创建 Key再对照接入文档确认 Base URL 和字段名。如果你需要长期在 RK3568 源码树上做这类默认项改造和 overlay 排查可以了解 Coding Plan把 Codex 会话固定下来每次改完直接贴 diff 让它对照判断。相关入口创建 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite模型对话验证https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewriteCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite配通后你就能在本地对着 RK3568 源码树把「默认不锁屏 / 永不休眠 / 右键返回 / 浅度睡眠」四项挨个复核确认是改错文件还是改错值。
返回列表