uni-app android apk迭代更新覆盖安装及wgt热更新后,异常结束应用再次启动时会卡启动页面或白屏

uni-app android apk迭代更新覆盖安装及wgt热更新后,异常结束应用再次启动时会卡启动页面或白屏

操作步骤:

  • wgt热更新-断电强制关闭设备-打开应用

预期结果:

  • 应用正常启动

实际结果:

  • 应用卡启动页面、白屏

bug描述:

android apk完整云打包后,首次安装一切正常, 一旦迭代更新覆盖安装、wgt热更新后,应用程序在强制关闭、断电关闭、异常结束应用情况下,再次打开应用会卡启动页面、白屏,清理缓存、数据后恢复正常。 更新后如果打开应用情况下重启一次设备,上述问题不存在,其他情况(正常关机,正常关闭应用)问题依旧。 求官方修复一下,谢谢!


### 表格
| 信息项          | 内容                     |
|-----------------|--------------------------|
| 产品分类        | uniapp/App               |
| PC开发环境操作系统 | Windows                  |
| PC开发环境操作系统版本号 | win10 21390.2025         |
| HBuilderX类型   | 正式                     |
| HBuilderX版本号 | 3.1.22                   |
| 手机系统        | Android                  |
| 手机系统版本号   | Android 7.1.1            |
| 手机厂商        | rk3288                   |
| 手机机型        | rk3288                   |
| 页面类型        | vue                      |
| 打包方式        | 云端                     |
| 项目创建方式    | HBuilderX                |

更多关于uni-app android apk迭代更新覆盖安装及wgt热更新后,异常结束应用再次启动时会卡启动页面或白屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

这种情况只能清除缓存,就像手机升级系统一样,突然断电就变砖。 wgt热更新这个时机也很难判定理论上这种情况很低

更多关于uni-app android apk迭代更新覆盖安装及wgt热更新后,异常结束应用再次启动时会卡启动页面或白屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html


唉,应用场景是通过断电控制设备开关,所以一旦wgt更新后,下次断电后启动应用就一定会白屏

回复 EthanQuick: 请问这种情况有解决吗

回复 EthanQuick: 大佬解决了么,我也遇到这个问题, 好像是由于getStorageSync引起的。。我打算不读缓存,改成读本地数据库 不知道能不能好。。

我这边也有同样的问题。问题原因是:更新程序后,新的缓存好像没能完整的保存到系统中。异常断电后,在重新上电,应用卡在loading页面,应该是uniapp这个loading处对缓存的判断有问题。如果能解决uniapp底层对缓存的判断是否完整,如果不完整重新缓存,这个问题应该可以解决。目前开发者无法知道loading页面,底层做了啥,这就是一个大的bug。希望官方能解决,我这边可以提供一套开发板给你们做测试。

我也一样,打了apk重新安装就好了,后续可以正常用wgt更新,但是不知道什么原因不一定什么时候就又出现了

这是一个典型的应用启动资源加载异常问题,通常与wgt热更新后的资源版本管理机制有关。

问题分析: 当应用异常结束(强制关闭、断电)后再次启动,系统可能加载了不完整的资源缓存。wgt热更新后,新旧资源版本在异常退出时可能产生冲突,导致启动时无法正确加载必要的资源文件,从而卡在启动页或白屏。

解决方案:

  1. 检查manifest.json配置

    • 确保appid一致
    • 验证versionNameversionCode正确递增
  2. 优化应用启动逻辑App.vueonLaunch中添加资源完整性检查:

    onLaunch: function() {
      // 检查wgt更新是否完整
      if(异常退出标识){
        plus.runtime.restart(); // 强制重启应用
      }
    }
    
  3. wgt更新后处理 在wgt更新成功后,主动清理可能存在的旧缓存:

    plus.runtime.install(wgtPath, {
      force: true
    }, function() {
      // 更新成功后重启
      plus.runtime.restart();
    });
回到顶部