uni-app 安卓app热更新后,plus.runtime.restart()后第一次打开新页面无法跳转,必须杀掉进程
uni-app 安卓app热更新后,plus.runtime.restart()后第一次打开新页面无法跳转,必须杀掉进程
操作步骤:
- 更新后第一次打开新页面无法跳转,必须杀掉进程重新进才可以
预期结果:
- 可以正常跳转页面不卡死
实际结果:
- 目前不能实现
bug描述:
- 安卓app热更新后, plus.runtime.restart() 后第一次打开新页面无法跳转,必须杀掉进程,试了好几个手机机型均有此问题
| 信息类别 | 信息内容 |
|------------------|------------------------------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC操作系统版本 | 版本12.6(21G15) |
| HBuilderX类型 | Alpha |
| HBuilderX版本 | 4.11 |
| 手机系统 | Android |
| 手机系统版本 | Android 14 |
| 手机厂商 | 小米 |
| 手机机型 | 小米 |
| 页面类型 | vue |
| Vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 安卓app热更新后,plus.runtime.restart()后第一次打开新页面无法跳转,必须杀掉进程的实战教程也可以访问 https://www.itying.com/category-93-b0.html
提供完整的示例,我们需要复现问题才确认具体问题
问题确实存在,我也遇到了。
uni.downloadFile + plus.runtime.install + plus.runtime.restart 用于升级apk,感觉plus.runtime.restart属于热重启,只能更新wgt类的资源,不能更新代码。
怀疑pages.json路由打包对应的app-config-service.js在重启时没被重载,强杀后重载就正常了。曾经有人提过APP模式通过加时间戳解决, https://ask.dcloud.net.cn/question/46791,不清楚如何来做。
官方有专门的测试人员吗?根据现象也很容易构造出问题。
已找到解决办法,android工程 dcloud_control.xml debug参数正式包需要和syncDebug参数一样,设置为false,坑不?
我前面一直有查这个debug参数,官网没有任何解释,只说调试开关,可能debug true时,会缓存pages.json编译出的app-config-service.js导致出现问题。
老哥,我没看到有这个配置文件啊?
我也遇到了这个问题,必现的热更新,我用的最新的版本4.28。APP打和wgt打包都是最新版本,第一次重启更新后就卡在启动界面。
使用的云打包
在 uni-app 开发中,使用 plus.runtime.restart() 进行热更新后,可能会导致某些页面无法正常跳转,特别是在 Android 设备上。这个问题通常与应用的启动流程或页面加载机制有关。以下是一些可能的解决方案和排查步骤:
1. 检查页面跳转逻辑
- 确保页面跳转的代码在
onLaunch或onShow生命周期中正确执行。 - 检查是否有异步操作(如网络请求)未完成,导致页面跳转被阻塞。
2. 延迟页面跳转
如果问题是由于重启后资源未完全加载导致的,可以尝试延迟页面跳转:
setTimeout(() => {
uni.navigateTo({
url: '/pages/newPage'
});
}, 1000); // 延迟 1 秒
3. 检查热更新逻辑
- 确保热更新完成后,所有资源已正确加载。
- 如果使用了自定义热更新逻辑,检查是否有未处理的异常或资源加载失败的情况。
4. 使用 plus.runtime.quit() 代替 restart()
在某些情况下,restart() 可能会导致应用状态异常。可以尝试先退出应用,然后重新启动:
plus.runtime.quit();
plus.runtime.launchApplication({
action: 'android.intent.action.MAIN'
});


