HarmonyOS 鸿蒙Next代码静态检查
HarmonyOS 鸿蒙Next代码静态检查 为什么在模块下的resources配置了base/element/color.json和dark/element/color.json,且名字一样的色值,但代码检查报warn:The color values should be set for both dark and light color modes through ‘$r’.
问题:The color values should be set for both dark and light color modes through '$r
根据这个警告描述,看看是否会影响功能,如果不影响,可以不用理会;如果影响了功能则修改代码;
我的app刚上架,我也做了深浅色匹配,叫RSS Pro,你可以参考下,我的思路是在目录下单独建立了一个light目录,来适配浅色模式,这样应该就不会有警告了

希望能帮到你,望采纳!
更多关于HarmonyOS 鸿蒙Next代码静态检查的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
是不是引用的地方使用错误了。
正确引用:
Text('适配深/浅色模式的文本')
.fontColor($r('app.color.app_text_color')) // 自动匹配模式
HarmonyOS Next代码静态检查使用ArkTS语言规范,通过DevEco Studio内置工具实现。支持ArkTS语法检查、代码风格检测、潜在缺陷扫描(如空指针、资源泄漏)。集成华为安全编码规范,提供实时提示和批量扫描功能。检查规则针对鸿蒙API和ArkUI框架优化,可配置自定义规则集。
这个警告是因为在HarmonyOS Next中,为了确保应用在浅色和深色模式下都能正确适配,当你在base和dark目录下配置了同名的颜色资源(如color.json中定义了相同的颜色名但不同值)时,必须使用资源引用$r('app.color.xxx')的方式来使用该颜色,而不能直接使用硬编码的颜色值(如#FF0000)或仅通过$r引用单一模式。
核心原因:
静态检查器检测到你虽然配置了多模式的颜色资源,但在代码中可能直接使用了颜色值,或未以$r方式引用,这可能导致在模式切换时颜色不会动态变化,违反HarmonyOS Next的动态资源管理规范。
解决方法:
在代码中使用颜色时,确保统一通过$r('app.color.颜色名')引用,例如:
Text('示例文本')
.fontColor($r('app.color.my_text_color'))
这样系统会根据当前深浅模式自动匹配base或dark目录下的对应颜色值。
注意:
- 检查代码中所有使用该颜色的地方,替换为
$r引用。 - 如果已使用
$r引用仍报警告,请确认base和dark下的color.json中该颜色名是否正确定义,且文件路径符合规范(如resources/base/element/color.json)。
通过规范引用,可确保应用动态适配深浅模式,提升用户体验。

