x***@163.com
x***@163.com
  • 发布:2026-03-14 18:37
  • 更新:2026-03-23 11:49
  • 阅读:173

鸿蒙bug:uni.onThemeChange不执行,提示canIUse ...CryptoExtension supported is false

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 IoT 企业版 LTSC 24H2

HBuilderX类型: 正式

HBuilderX版本号: 5.03

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: nova 14

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.onThemeChange( (res) => {
console.log('测试');
console.log(res);
});

操作步骤:

uni.onThemeChange( (res) => {
console.log('测试');
console.log(res);
});

预期结果:

手机切换"深色模式"时,执行输出提示:测试和res结果.

实际结果:

手机切换"深色模式"时,uni.onThemeChange内代码未执行.每个页面都会报错:canIUse SystemCapability.Security.Huks.CryptoExtension supported is false

bug描述:

鸿蒙升级到新版6.0.0.130后一直报错:canIUse SystemCapability.Security.Huks.CryptoExtension supported is false;手机切换"深色模式"时uni.onThemeChange函数在鸿蒙商完全无用.uni.onThemeChange( (res) => {
console.log('测试');
console.log(res);
}); 这段代码在鸿蒙端不会执行.

2026-03-14 18:37 负责人:无 分享
已邀请:
x***@163.com

x***@163.com (作者)

我想说的是手机切换"深色模式"时,uni.onThemeChange代码不执行的问题.不是主题适配问题.代码完全没变,这是升级最新版的鸿蒙系统后出现的问题.
这个错误 canIUse SystemCapability.Security.Huks.CryptoExtension supported is false 也是升级新版鸿蒙出再的问题.

  • DCloud_UNI_yuhe

    你好,能够提供一下可以复现的项目吗?

    2026-03-17 17:36

  • x***@163.com (作者)

    回复 DCloud_UNI_yuhe:

    uni.onThemeChange( (res) => {

    console.log('测试');

    });

    这个全局监听代码,手机升级新版鸿蒙之后就不执行了.是真手机端,不是模拟器上.

    uni.onThemeChange(function (res) {

    console.log(res.theme);

    });官网演示代码也一样不执行.

    2026-03-18 20:52

  • DCloud_UNI_yuhe

    回复 x***@163.com: 真机哪个 API 版本?模拟器哪个 API 版本?

    2026-03-19 17:28

  • x***@163.com (作者)

    回复 DCloud_UNI_yuhe: 真机:nova 14 harmony 6.0.0.130 (api:22),模拟器:harmony 6.0.0(api:20),uni.onThemeChange()这个监控函数都不执行.

    2026-03-20 08:18

  • 无双的英雄

    回复 DCloud_UNI_yuhe: 这个问题我也能复现,也是cli项目没有修改任何样式代码,将CLI和HbuildX同时升级到最新的就能复现此问题。目前为了显示正常,把cli和HBuildX同时回退到去年的4.87版本可以暂时修复此问题。

    2026-03-24 16:21

  • DCloud_UNI_yuhe

    回复 无双的英雄: 请提供一下一个最简的可以复现的项目

    2026-03-24 16:39

  • 无双的英雄

    回复 DCloud_UNI_yuhe: 用官方提供的示例项目,使用不同版本的HbuildX启动即可复现: https://ext.dcloud.net.cn/plugin?name=hello-darkmode

    2026-03-24 16:50

  • DCloud_UNI_yuhe

    回复 无双的英雄: 可以看下下面我昨天发布的截图, 尝试更新 deveco 版本

    2026-03-24 18:46

  • 无双的英雄

    回复 DCloud_UNI_yuhe: 我用的真机实测而不是模拟器,这里移步说明:https://ask.dcloud.net.cn/question/218856

    2026-03-24 22:50

  • x***@163.com (作者)

    回复 无双的英雄: 我退回HBuildX 4.85 代码也能正常执行了.就是升级新版HBuildX 5.03带来的问题.无双的英雄:非常感谢!

    2026-03-25 20:37

  • x***@163.com (作者)

    回复 x***@163.com: 我更新到最新版HBuildX 5.0.5,还是一样的问题.代码不执行.只能退回到4.87了.

    2026-03-25 21:21

  • 无双的英雄

    回复 x***@163.com: 新版有解决办法了,在App.vue页面增加代码 plus.nativeUI.setUIStyle('auto') ,然后一切正常了

    2026-03-31 20:06

DCloud_UNI_yuhe

DCloud_UNI_yuhe

你好,我使用 6.0.2.636 api 22 进行测试, 运行正常 , 看起来此内容并不影响 onThemeChange , 推荐您先通过 hello-darkmode示例项目运行

  • x***@163.com (作者)

    onShow(() => {

    uni.onThemeChange(({ theme }) => {

    console.log('测试是否执行')

    console.log('onThemeChange', theme)

    })

    });vue3这段代码在nova 14 真机上测试,这里面的代码,放在任何地方都不会执行.你们官放发布的"统一应用软件",在nova 14真机上,切换系统的"深色模式"时,也不能适配深色模式了.

    2026-03-24 09:34

Ask小助手

Ask小助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

这个Bug反馈的内容基本完整,但存在关键信息缺失,且报错信息与功能问题可能存在混淆。以下是我的详细评审意见:

反馈内容完整性评价:

  1. 环境信息:提供了较完整的运行环境(HBuilderX 5.03正式版、HarmonyOS 6.0.0、Vue3),但缺少关键的manifest.json配置信息。根据知识库文档,App端使用暗黑模式需要在manifest.json中开启相关配置,反馈中未提及是否已配置"darkmode": true

  2. 代码示例:提供的代码示例过于简单,虽然能直接运行,但缺少上下文(如在哪个生命周期中调用、是否先判断了当前主题模式等)。

  3. 复现步骤:描述不够详细。仅提供代码未说明如何操作复现(如:是通过系统设置切换主题?还是期望启动时触发?)。根据知识库,uni.onThemeChange需要在系统主题切换时才会触发回调,启动时不会自动触发。

  4. 报错信息分析:反馈中提到的canIUse SystemCapability.Security.Huks.CryptoExtension supported is false报错与uni.onThemeChange功能无直接关联,该报错指向鸿蒙系统的密钥管理(Huks)能力,可能是鸿蒙6.0.0.130版本的新限制或证书配置问题。这部分报错信息需要单独排查,不应与主题切换回调问题混为一谈。

Bug是否成立的判断:

根据知识库文档,HarmonyOS平台在HBuilderX 4.81-alpha版本已修复运行期间onThemeChange不触发的问题。用户使用的5.03版本理论上已包含该修复。

但需注意以下前提条件(来自知识库):

  • App端需要开启暗黑模式,参考文档uni-app 暗黑模式
  • 该回调仅在系统主题切换时触发,启动时不会触发

需要用户补充的信息:

  1. 请提供manifest.json中harmonyos节点下的完整配置,确认是否已添加"darkmode": true配置。

  2. 请确认测试方式:是通过系统设置手动切换深色/浅色模式来测试的吗?还是在App启动时期望自动触发?(启动时不会触发,需监听系统切换)

  3. 关于CryptoExtension报错,知识库中暂未找到相关信息,建议检查:

    • 鸿蒙项目的签名证书配置是否正常
    • 是否在harmony-configs中配置了特殊的权限
    • 该报错是否影响App正常启动(如不影响,可能是系统级别的能力检测,可暂时忽略)

建议的验证步骤:

建议先按照hello-darkmode示例项目验证功能是否正常。如果示例项目运行正常,请对比检查贵项目的manifest.json配置差异。

如确认配置无误仍无法触发,建议升级到最新的HBuilderX Alpha版本(当前知识库显示最新为5.02,但用户已使用5.03正式版)进行验证,或提供一个可复现的demo项目以便进一步排查。

内容为 AI 生成,仅供参考

要回复问题请先登录注册