三星android15版热更新不好用在uni-app其它品牌版本的还没发现问题,仅三星的android15有这个问题

三星android15版热更新不好用在uni-app其它品牌版本的还没发现问题,仅三星的android15有这个问题

开发环境 版本号 项目创建方式
Windows 10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:4.57

手机系统:Android

手机系统版本号:Android 15

手机厂商:三星

手机机型:android 15的就有这个问题

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

uni.downloadFile({  
    url: res.data.downloadUrl, // 下载的热更新包地址  
    success: downloadResult => {                      
        console.log('下载后的临时路径', downloadResult.tempFilePath);  
        plus.runtime.install(downloadResult.tempFilePath, {force: true}, () => {  
            uni.hideLoading();  
            // 应用热重启,重新启动进入首页。  
            uni.showModal({  
                showCancel: false,  
                content: "更新成功需要重启",  
                success: dat => {  
                    if (dat.confirm) {  
                        plus.runtime.restart();  
                    }  
                }  
            });  
        }, (error) => {  
            uni.showModal({  
                content: JSON.stringify(error)  
            })  
        });  
    },  
    fail: err => {  
        uni.showToast({  
            title: "下载失败",  
            icon: 'none'  
        });  
    }  
});

操作步骤:

使用三星android15,手机测试热更新就会 走error的回调了

(error) => {  
    uni.showModal({  
        content: JSON.stringify(error)  
    }
}

预期结果:

三星的android15 ,热更新好用就行,能有一个解决方法

实际结果:

热更新的功能一直在用也都挺好用,这几天同事测试时用三星android15手机,热更新不好用,报错如图 {code:-1202,message:‘WGT安装包中manifest.json文件不存在’}

测试过程中发现好使的手机下载后的文件路径是

_doc/uniapp_temp_1757553674015/download/mifuhot1172.wgt

三星android15下载后的文件路径是

_doc/uniapp_temp_1757553674015/download/

以上测试结果是云打包后的效果,在本地真机模拟,自定义基座调试都是正常的(路径都是_doc/uniapp_temp_1757553674015/download/mifuhot1172.wgt),打包后,安装完测试,就是第二种(_doc/uniapp_temp_1757553674015/download/)

目前围绕这个问题也尝试几种方案(是目录还是文件来做处理,但是在三星上总是路径解析失败),请官方技术支持


![Image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20250916/71e0ac4c34335fcdcc7fb7cee3b311e4.png)

更多关于三星android15版热更新不好用在uni-app其它品牌版本的还没发现问题,仅三星的android15有这个问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

16 回复

验证了一下,在oppo手机上没有复现问题。
麻烦发一下详细的手机信息、一个简单的能复现的项目和一个简单能复现的apk包。

更多关于三星android15版热更新不好用在uni-app其它品牌版本的还没发现问题,仅三星的android15有这个问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


老师,oppo的兼容还好,三星的(s21, s22,s23,s25,s24,z flip,)这边测试了几部都不行,这样我把apk下载连接发出来,我先打个版,最好用三星测试

回复 z***@gmail.com: 能复现的项目发出来吧,我用我们自己的示例测试没问题。

回复 DCloud_Android_zl: 老师,这个地址下载下来,安装到三星android15的设备上,点击登录后就会热更新了

回复 z***@gmail.com: 我找了三星的手机能复现这个问题,需要你这边提供一个能复现的工程,我们这边排查问题

回复 DCloud_Android_zl: 我写一个简单的demo,那我怎么发给您

回复 z***@gmail.com: 你直接发群里就行了,我也在里面

回复 DCloud_Android_zl: 已解决,谢谢老师

这边自己写了一个原生的插件,已解决三星下载问题。 官方提供的plus.downloader.createDownload,uni.downloadFiles这两种方式,上述手手机主要是三星手机,都下载不了,但是走的还是成功的回调

怎么解决的,能提供一下方法吗,我也遇到同样的问题

这边自己写了一个原生的插件,解决的

老师您好,能提供一下原生插件吗?

发一个工程吧,我们这边排查一下问题。

回复 DCloud_Android_zl: 工程不方便发了,因为公司要求保密。您可以测试一下国外版的三星手机。安卓15以上,有谷歌服务框架的

这是一个典型的Android 15权限兼容性问题。三星在Android 15上对文件系统权限进行了更严格的限制,导致热更新包下载后无法正确识别文件路径。

从错误信息WGT安装包中manifest.json文件不存在和路径对比可以看出:

  • 正常设备:_doc/uniapp_temp_1757553674015/download/mifuhot1172.wgt(完整文件路径)
  • 三星Android 15:_doc/uniapp_temp_1757553674015/download/(只有目录路径)

解决方案:

  1. 检查文件下载完整性downloadFile的success回调中增加文件验证:
success: downloadResult => {
    const filePath = downloadResult.tempFilePath;
    plus.io.resolveLocalFileSystemURL(filePath, (entry) => {
        if(entry.isFile) {
            // 正常安装流程
            plus.runtime.install(filePath, {force: true}, successCallback, errorCallback);
        } else {
            uni.showModal({content: "文件下载不完整"});
        }
    });
}
  1. 使用绝对路径处理
const fullPath = `${downloadResult.tempFilePath}/mifuhot1172.wgt`;
plus.runtime.install(fullPath, {force: true}, () => {
    // 成功回调
}, (error) => {
    console.error('安装失败:', error);
});
回到顶部