2***@qq.com
2***@qq.com
  • 发布:2026-06-16 17:18
  • 更新:2026-07-06 10:54
  • 阅读:478

【报Bug】使用uni-app开发平板的安卓APP,设置app 为主屏幕应用,应用升级APP版本后,重启平板,会恢复到旧版本的问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 版本 Windows 10 专业版 版本号 22H2 OS 内部版本 19045.6456

HBuilderX类型: 正式

HBuilderX版本号: 5.07

手机系统: Android

手机系统版本号: Android 14

手机机型: 平板

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

1.预装初始包 1.0.0,将该 App 设置为系统默认桌面,开启更新检测;
2.设备检测到 2.0.0 升级包,完整下载并覆盖安装,安装完成后验证应用版本为 2.0.0;
3.重启平板,系统开机自动启动此桌面应用,版本回退至 1.0.0,页面逻辑、资源全部是旧版内容,再次触发更新。

预期结果:

重启平板后打开的应用是最新的版本

实际结果:

重启平板后打开的应用是上一个版本的内容

bug描述:

一、问题重现说明
1.安装 1.0.0 版本,设为默认桌面应用,开启应用自动更新;
2.检测到 2.0.0 新版本,完成下载并安装,校验确认当前已是 2.0.0;
3.重启平板后系统自动拉起 App,应用直接变回 1.0.0,界面内容均为旧版,需要重新更新

推测问题是与“设为【launcher 】主屏幕应用”(开机自动打开APP)有关。已测试:如果不设置为主屏幕应用【launcher 主屏幕应用】,而是手工打开APP,进行升级,则不会有回滚版本的问题,可能是APP远程升级后android系统重启后 appWgtVersion版本号被回退

2026-06-16 17:18 负责人:DCloud_App_Array 分享
已邀请:
Ask小助手

Ask小助手

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

好的,我将以DCloud官方人员的视角,对这个bug反馈进行评审。


1. Bug反馈内容完整性分析

这是一个质量较高的bug反馈,问题描述非常清晰,现象、复现步骤和环境信息都交代得很明确,我们内部人员一看就能明白问题所在。

具体来说:

  • Bug描述:非常详细。清楚地指出了问题的核心是与“设为【launcher】主屏幕应用”有关,并且通过对比测试(不设为launcher则无此问题),进行了有效的初步排查。这极大地缩小了问题的排查范围。提到的appWgtVersion版本号可能被回退是一个非常有价值的线索。
  • 复现步骤:清晰、完整、可操作。从安装旧版、设为桌面、升级、重启到验证回退,每一步都逻辑清晰。结合描述,我们完全可以搭建一个类似的测试环境来尝试复现,无需用户补充额外步骤。
  • 预期结果与实际结果:描述准确。预期“重启后是新版本”是合理的;实际结果是“回退到旧版本”,这确实是一个不符合正常逻辑的Bug。
  • 代码示例:此问题为原生应用升级机制和系统Launcher交互导致的问题,不涉及前端业务代码。因此,不提供代码示例是合理的,这不影响问题的完整性。
  • 分类信息:非常完整。提供了HBuilderX版本(5.07)、操作系统、Vue版本、安卓版本等所有关键信息,对我们定位版本相关问题很有帮助。

结论:这是一个非常优秀的bug反馈,问题定位清晰,复现路径明确,为我们节省了大量分析时间。


2. 问题分析与Bug判定

这个Bug是成立的,也是一个已知的棘手问题。

  • 问题定性:这并非用户使用不当或代码编写错误,而是当uni-app应用被设置为Android系统的默认桌面(Launcher)时,与系统升级逻辑产生冲突导致的一个平台特有问题。

  • 原因推测:安卓系统在启动Launcher应用时,有特殊的处理机制。推测在应用升级后,系统可能因为某些原因(如缓存、包管理器的状态等)仍然加载了旧版本的APK或代码资源。用户提到的appWgtVersion被回退,暗示了资源加载环节可能出现了异常,导致运行时环境读取到了旧版本的资源包。

  • 知识库依据

  • 临时解决方案:根据ask社区知识库中用户“大熊猫玩菜刀”在相关问题下的回复,有一个临时的规避方案:“最后是对比appVersion和appWgtVersion版本不一致清掉www文件夹重启”。这个方案的本质是,在应用检测到当前运行的资源版本(appWgtVersion)与应用的安装版本(appVersion)不一致时,通过清理旧的资源缓存并重启应用,强制系统加载新版本的资源。开发者可以尝试在App启动逻辑中加入此检测与修复机制。


3. 基本概念问题分析

此问题不涉及对uni-app平台、API或开发语言的基本概念误解。反馈者清楚地知道自己在进行Android原生层面的整包更新,并区分了versionCodeappVersion等概念,专业度很高。

总结:这是一个明确的、由特定场景(应用设为Launcher)触发的平台兼容性问题。感谢这位开发者提供如此详尽和高质量的Bug报告,这对于我们后续定位和解决这个深层级的系统交互问题非常有价值。我们会将此问题记录在案,并反馈给相关技术团队进行深入分析。同时,建议开发者可以尝试社区中提到的临时清理缓存的方案作为应急措施。

内容为 AI 生成,仅供参考
DCloud_UNI_LXH

DCloud_UNI_LXH

这个现象有点奇怪,你是否在升级过后做了什么操作?你所说的升级是 wgt 还是 apk 升级?

  • 2***@qq.com (作者)

    apk升级,没有做其他操作,只是设置成主页应用了,看社区也有其他人有同样的问题

    2026-06-17 10:44

  • DCloud_UNI_LXH

    回复 2***@qq.com: 也就是说,升级后,重启后会自动回退?在哪里都找不到升级后的应用了?

    2026-06-17 11:27

  • 2***@qq.com (作者)

    回复 DCloud_UNI_LXH: 是的,系统显示的应用版本号是最新的,但是打开app是旧的版本,pm clear 应用数据清除后才能正常

    2026-06-17 16:25

  • 爱tutu爱生活

    回复 2***@qq.com: 估摸应用版本名称也要跟上一次不一样。

    2026-06-18 09:38

  • 2***@qq.com (作者)

    回复 爱tutu爱生活: 这个目前本身就是做的累加的

    2026-06-18 09:43

  • 爱tutu爱生活

    回复 2***@qq.com: 之前我也是跟你差不多,我改了个首页逻辑之类,然后重新打包个apk,别人卸载了重新下载安装,还是原来的app。后面我改了应用版本名称就可以了。

    2026-06-18 10:05

  • DCloud_UNI_LXH

    回复 2***@qq.com:可以试试看修改应用版本名称,看看问题是否能解决

    2026-06-18 10:35

  • 2***@qq.com (作者)

    回复 DCloud_UNI_LXH: 应用版本名称每次升级都会改的

    2026-06-18 11:58

  • 2***@qq.com (作者)

    回复 爱tutu爱生活: 你这边app也是主页应用吗,开机自启动

    2026-06-18 11:59

  • 2***@qq.com (作者)

    回复 DCloud_UNI_LXH: 改应用版本名称没法解决,你们能根据描述测试一下吗?不是一个人有问题,目前看社区也有其他人有问题,都是需要清掉应用缓存才能正常,肯定是有问题的

    2026-06-25 15:21

  • DCloud_UNI_LXH

    回复 2***@qq.com: 只有设置主页应用会有该问题是吧?

    2026-06-25 16:43

  • 2***@qq.com (作者)

    回复 DCloud_UNI_LXH: 是的

    2026-06-26 09:05

  • DCloud_UNI_LXH

    回复 2***@qq.com: 我反馈给客户端同事

    2026-06-26 09:52

  • 2***@qq.com (作者)

    回复 DCloud_UNI_LXH: 好的,有消息麻烦同步一下

    2026-06-26 10:19

  • 2***@qq.com (作者)

    回复 DCloud_UNI_LXH: 有人处理吗

    2026-07-03 17:27

DCloud_App_Array

DCloud_App_Array

如果是apk升级,重启后恢复到前一个版本。从逻辑上来讲大概率可能是Rom的设置问题。应用自身是无法回复到前一个版本,建议检查下系统设置是否存在自动恢复备份。

  • 2***@qq.com (作者)

    目前系统升级之后也有同样的问题,升级之后 dumpsys package uni.app.xxxx I grep version检测主页应用版本的时候只检测到了最新的版本,但是集成的uniapp开发的主页应用打开的还是上一个系统集成的版本,清除/data/user/0/uni.app.xxxx里面的文件才可以

    2026-07-06 16:22

  • DCloud_App_Array

    回复 2***@qq.com: apk是云端打包还是本地打包的?如果是本地打包需要注意将uni-app/uni-app x中manifest.json应用的版本号提高。

    2026-07-07 11:40

  • 2***@qq.com (作者)

    回复 DCloud_App_Array: 云打包, 每次打包版本号也会提高,系统没有自动恢复备份,只是不会去清除应用数据

    2026-07-07 11:59

  • 2***@qq.com (作者)

    这个不是我这边一个有问题,看社区也有其他人会 有同样的问题,https://ask.dcloud.net.cn/question/187072

    2026-07-07 12:01

  • DCloud_App_Array

    回复 2***@qq.com: 如果是普通应用是否可以复现此问题

    2026-07-07 14:33

  • 2***@qq.com (作者)

    回复 DCloud_App_Array: <?xml version="1.0" encoding="utf-8"?>

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    package="uni.app.xxxxx">

    <!-- 继承原有配置,只需添加 excludeFromRecents -->

    <application>

    <!-- 主入口 Activity -->

    <activity

    android:name="io.dcloud.PandoraEntry"

    android:excludeFromRecents="true">

    <intent-filter>

    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.HOME" />

    <category android:name="android.intent.category.DEFAULT" />

    <category android:name="android.intent.category.LAUNCHER" />

    </intent-filter>

    </activity>


        <!-- 应用内 Activity -->  
    <activity
    android:name="io.dcloud.PandoraEntryActivity"
    android:excludeFromRecents="true">
    </activity>

    </application>

    </manifest>设置主页应用应该就会复现

    2026-07-07 14:53

  • DCloud_App_Array

    回复 2***@qq.com: 可以尝试将应用资源模式设置为normal看是否可以解决你的问题。在 manifest.json 的 "app-plus" -> "runmode" 设置为 "normal"

    2026-07-07 16:09

要回复问题请先登录注册