文档管理中心
|

HarmonyOS 5

Hbuilder X 打包后运行到鸿蒙云真机出现白屏,如果只有一个页面就没有问题,多个页面就有白屏

已解决
【问题描述】:Hbuilder X 打包后运行到鸿蒙云真机出现白屏,如果只有一个页面就没有问题,多个页面就有白屏;不同版本的云真机都会出现这个问题;请问怎么解决

【版本信息】:

、无真机,用的云真机(不同的云真机测试都一样;例如nova14pro)

【复现代码】:无法提供,

点赞
收藏
回复
16
分享
举报
浏览583 发布于2025-10-30 08:43湖北
全部评论
最多点赞
最新发布
最早发布
|
采纳答复

开发者你好,白屏的问题是因为JS引擎在执行代码的时候报错了,可能是方法不支持也可能是写法上存在兼容性问题,可以参考这篇文章uni-app调试说明,最重要的是文章最后部分的说明。

以下是uni-app白屏问题定位参考方案:

【问题定位】

步骤 动作 难度 作用 约束
1 观察HBuiler控制台日志 简单,快速 修改显性报错 不适用于有桥接ArkTS插件的情况
2 运行到浏览器,检查F12是否报错 简单,快速 修改显性报错 不适用于有桥接ArkTS插件的情况
3 通过deveco检查应用报错 简单,快速 主要确认应用启动错误 /
4 通过JSVM调试查看是否有报错 中等 修改显性报错 /
5 通过DevTools查看子页/元素是否加载 中等 定界父页面还是子页面的问题 /
6 二分法排查:修改pages.json旁路部分页面 复杂,困难 定界 /
7 通过JSVM调试调试JS代码 复杂,困难 代码调试 /

定位步骤:

  1. 排查以下3种场景。

    条件编译未命中HarmonyOS平台。

    页面元素受v-if、v-show、样式影响没有渲染,可通过DevTools查看元素是否挂载到DOM树上。

    请求数据的方法未执行。

  2. 观察HBuilder报错。

  3. 运行到浏览器,通过F12查看是否有报错。

  4. 打开deveco,过滤应用和日志级别,检查关键错误。

  5. 通过JSVM调试查看页面是否有报错。

  6. pages.json中注释页面,通过二分法定界。
    收起
    自动换行
    深色代码主题
    复制
    {
      "pages": [     
        {
          "path": "pages/index/index",
          "style": {
            "navigationStyle":"custom"  ,
            "navigationBarTitleText": "index"
          }
        },
        {
          "path": "pages/index2/index2",
          "style": {
            "navigationStyle":"custom"  ,
            "navigationBarTitleText": "index2"
          }
        },
        {
          "path" : "pages/webview/webview",
          "style" : {
            "navigationBarTitleText" : "huawei"
          }
        }
      ]
    }

  7. 通过JSVM调试调试JS代码。
    在JSVM调试中能看到app-service.json包含了uniapp逻辑转译后的代码。参考第4步,可主动打断点调试。

【分析结论】
通过HbuilderX、浏览器开发者工具、DevEco Studio的日志可以获取一些明显的错误信息然后解决。uni-app插件可能在JS引擎未执行加载页面的代码时就运行出错导致白屏,可以在JSVM调试时提前勾选遇到异常自动断点即可定位到运行出错前的代码。最后还没解决可以通过二分法注释关键文件定界白屏原因。

【常见FAQ】
Q:JSVM调试加载不出源码怎么办?
A:请参考解决方案

  • 如果还是不能加载源码,可能是在加载源码前就抛出异常,可按JSVM调试的4、5、6步骤,打开调试页面,勾选Pause on uncaught exceptions和Pause on caught exceptions。可自动断点在异常抛出之前的位置。

Q:运行hdc命令报错提示找不到hdc命令。
A:hdc命令工具在DevEco Studio目录下,路径为:${DevEco Studio安装目录}\sdk\default\openharmony\toolchains。将此路径配置为环境变量即可。

Q:devtools调试JS代码,根据堆栈信息定位到Vue全局对象app报错undefined,下一步如何分析?
A:观察报错的第一场景,如果是媒体资源(图片,视频等),在项目中搜索该媒体资源是否作为对象导出,导出后在css、JS中使用不当,也会导致加载全局对象app异常,从而项目出现白屏问题。

【背景知识】

  1. uniapp项目页面使用webview渲染,js业务逻辑运行在uniapp定制的jsvm中。两者实现由uniapp官方开发,当前闭源。
页面渲染 逻辑执行
运行时 大部分是webview渲染,少量ArkUI渲染 JSVM
主要运行内容 html,css 业务逻辑:app-config-service.js,app-service.js
体现 通过显示布局边界看出,顶部NavigationBar是ArkUI渲染,下方主体内容是webview渲染。 可通过HarmonyOS提供的JSVM调试工具连接JSVM,对逻辑执行进行调试。

  1. 开发态uniapp项目的目录结构如下:
序号 文件 入口 作用
1 index.html / 项目入口
2 main.js 由index.html拉起 uniapp的入口文件
3 App.vue 由main.js拉起 uniapp的主组件
4 manifest.json 全局配置文件 应用的全局配置文件,指定应用的名称、图标、权限等
5 pages.json 被合并到app-config-service.js中,由uniapp框架拉起 配置页面的路径、窗口样式、导航栏、tabbar等
展开全部
14
1楼回复于2025-10-31 02:00 来自广东
  • 赵勇123456
    没有真机;电脑用不了模拟器;只能用华为云真机,老师;可以通过拉会议给指导一下该问题吗
    2025-10-31 07:03 来自湖北
  • 指针不迷茫回复赵勇123456
    开发者你好,请问你云调试里选择的云真机API版本是多少?是否能够提供下云调试的日志和录屏,我们这里先尝试复现一下。 另外检查过代码混淆问题,是默认关闭的吗?
    2025-11-03 01:53 来自广东
  • 赵勇123456回复指针不迷茫
    目前是直接Hbuilder X打包运行到云调试的,没有用到鸿蒙编译器,云真机API是所有;应该涉及不到混淆吧;日志贴到评论区
    2025-11-03 08:01 来自湖北
  • 展开剩余11条回复
日志
attachmenttype
2025-11-03 16_00_10.txt
download
2楼回复于2025-11-03 08:04 来自湖北
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要提问题

了解社区公约,与您携手共创和谐专业的开发者社区。