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

更多关于三星android15版热更新不好用在uni-app其它品牌版本的还没发现问题,仅三星的android15有这个问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
验证了一下,在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/(只有目录路径)
解决方案:
- 检查文件下载完整性
在
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: "文件下载不完整"});
}
});
}
- 使用绝对路径处理
const fullPath = `${downloadResult.tempFilePath}/mifuhot1172.wgt`;
plus.runtime.install(fullPath, {force: true}, () => {
// 成功回调
}, (error) => {
console.error('安装失败:', error);
});


