uni-app uni.canvasToTempFilePath在鸿蒙真机上运行直接崩溃,只有DevEco Studio有日志显示cppcrash

uni-app uni.canvasToTempFilePath在鸿蒙真机上运行直接崩溃,只有DevEco Studio有日志显示cppcrash

开发环境 版本号 项目创建方式
Mac macOS 15.6 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:macOS 15.6

HBuilderX类型:正式

HBuilderX版本号:4.76

手机系统:HarmonyOS NEXT

手机系统版本号:HarmonyOS 5.0.5

手机厂商:华为

手机机型:Mate 60 Pro

页面类型:vue

vue版本:vue3

打包方式:离线

项目创建方式:HBuilderX

操作步骤:
- 绘制图片

预期结果:
- 正常绘制

实际结果:
- 绘制

更多关于uni-app uni.canvasToTempFilePath在鸿蒙真机上运行直接崩溃,只有DevEco Studio有日志显示cppcrash的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

27 at emit (oh_modules/.ohpm/@dcloudio+uni-app-runtime@0d7xv0pcdxkinvekdlg0one4y89zl+nkn+hp3smonxk=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:61:11) 28 pc 00000000003a6d30 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::InterpreterAssembly::Execute(panda::ecmascript::EcmaRuntimeCallInfo*)+216)(38230492305256c23dcf27a2aba6f771) 29 pc 000000000069a610 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::RuntimeStubs::CallSpread(unsigned long, unsigned int, unsigned long)+516)(38230492305256c23dcf27a2aba6f771) 30 pc 0000000000443558 /system/lib64/module/arkcompiler/stub.an(RTStub_CallRuntime+40) 31 at emit (oh_modules/.ohpm/@dcloudio+uni-app-runtime@0d7xv0pcdxkinvekdlg0one4y89zl+nkn+hp3smonxk=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:1514:5) 32 at invokeSync (oh_modules/.ohpm/@dcloudio+uni-app-runtime@0d7xv0pcdxkinvekdlg0one4y89zl+nkn+hp3smonxk=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:2475:17)

更多关于uni-app uni.canvasToTempFilePath在鸿蒙真机上运行直接崩溃,只有DevEco Studio有日志显示cppcrash的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好 , harmony-configs 下有什么内容?

在鸿蒙真机上遇到 uni.canvasToTempFilePath 崩溃的问题,通常与系统底层图形库兼容性或 Canvas 上下文状态有关。根据你的环境信息(HarmonyOS NEXT 5.0.5 + 离线打包),建议按以下步骤排查:

  1. 检查 Canvas 上下文就绪状态
    在调用 uni.canvasToTempFilePath 前,确保 Canvas 已渲染完成。可通过 setTimeout 延迟执行或监听 canvasready 事件(若支持)。

  2. 验证 Canvas 尺寸与比例
    鸿蒙设备对 Canvas 尺寸敏感,避免设置过大的宽高(如超过屏幕物理分辨率)。建议通过 uni.getSystemInfo 动态获取屏幕尺寸后设置合理值。

  3. 降级 Canvas 类型
    尝试使用 type: '2d' 替代 type: 'webgl'(若适用),部分鸿蒙版本对 WebGL 支持不稳定:

    const context = uni.createCanvasContext('canvasId', this, { type: '2d' });
    
  4. 规避离线包兼容问题
    确认使用的原生插件与鸿蒙 NEXT 兼容。临时测试可切换为「云端打包」,排除本地 SDK 版本问题。

  5. 捕获异常与降级处理
    uni.canvasToTempFilePath 外包裹 try-catch,崩溃时启用备用方案(如显示默认图片):

    try {
      uni.canvasToTempFilePath({
        canvasId: 'canvasId',
        success: (res) => { /* ... */ }
      });
    } catch (e) {
      console.error('Canvas转换失败:', e);
      // 降级处理
    }
回到顶部