uni-app 云打包apk wgt在线更新plus.runtime.install闪退问题

uni-app 云打包apk wgt在线更新plus.runtime.install闪退问题

开发环境 版本号 项目创建方式
Windows win10 专业版 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:win10 专业版 22H2(操作系统内部版本 19045.2965)

HBuilderX类型:正式

HBuilderX版本号:4.45

手机系统:Android

手机系统版本号:Android 12

手机厂商:小米

手机机型:Redmi K30i 5G

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

操作步骤:

// 下载wgt文件  
downWgt() {  
    const wgtUrl = this.data.edition_url;  
    plus.nativeUI.showWaiting('下载wgt文件...');  
    plus.downloader  
        .createDownload(wgtUrl, { filename: '_doc/update/' }, (d, status) => {  
            try {  
                if (status == 200) {  
                    console.log('下载wgt成功:d====' + JSON.stringify(d));  
                    console.log('下载wgt成功:' + d.filename);  
                    this.suuData = JSON.stringify(d)  
                    plus.nativeUI.closeWaiting();  
                    return  
                        this.installWgt(d.filename); // 安装wgt包  
                } else {  
                    console.log('下载wgt失败!');  
                    plus.nativeUI.alert('下载wgt失败!');  
                }  
            } catch (error) {  
                console.error('执行安装wgt包时出错:', error);  
                plus.nativeUI.alert('执行安装wgt包时出错: ' + error.message);  
            } finally {  
                plus.nativeUI.closeWaiting();  
            }  
        })  
        .start();  
},  

// 更新应用资源  
installWgt(path) {  
    console.log('installWgt', path);  
    plus.nativeUI.showWaiting('安装wgt文件...');  
    plus.runtime.install(  
        path,  
        {  
            force: true //true表示强制安装,不进行版本号的校验;false则需要版本号校验,  
        },  
        function () {  
            plus.nativeUI.closeWaiting();  
            console.log('安装wgt文件成功!');  
            plus.nativeUI.alert('应用资源更新完成!', function () {  
                plus.runtime.restart();  
            });  
        },  
        function (e) {  
            plus.nativeUI.closeWaiting();  
            console.log('安装wgt文件失败[' + e.code + ']:' + e.message);  
            plus.nativeUI.alert('安装wgt文件失败[' + e.code + ']:' + e.message);  
        }  
    );  
},

预期结果:

云打包的apk也能正常安装更新

实际结果:

模拟器调试和真机调试正常安装;
云打包的apk在执行plus.runtime.install的时候闪退了,没有安装成功;

bug描述:

wgt更新
模拟器、真机调试都能正常更新;
云打包(国际账号)的apk能正常下载,运行到plus.runtime.install时会闪退;
换了好几台机型都是一样;
相关权限设置、安装代码如下:


更多关于uni-app 云打包apk wgt在线更新plus.runtime.install闪退问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

自定义基座是否可以呢 切换下安心打包或者传统打包的方式 看着不像是代码的问题

更多关于uni-app 云打包apk wgt在线更新plus.runtime.install闪退问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的云打包后热更新权限配置问题。云打包APK在安装wgt时闪退,通常是因为缺少必要的安装权限。

检查以下配置:

  1. Android权限配置:在manifest.json中确保添加以下权限:
"permissions": {
  "Install": {
    "request": "always"
  }
}
  1. 文件路径问题:云打包后文件系统路径可能不同,建议使用_doc/update/目录时确认文件确实下载成功。可以在下载完成后添加文件存在性检查:
plus.io.resolveLocalFileSystemURL(d.filename, (entry) => {
  this.installWgt(entry.toLocalURL());
}, (error) => {
  console.log('文件不存在:' + d.filename);
});
  1. 安装参数调整:尝试不使用force参数或设置为false,避免版本校验冲突:
plus.runtime.install(path, {}, success, error);
回到顶部