uniapp离线打包热更新失败-AndroidStudio离线打包apk后无法下载打开-热更新失败-plus.runtime.install失败
效果图
仅安卓
前言
1.plus.runtime.install一直fail(20240808), uni.openDocument可以打开本地apk文件
2.权限问题需小心
跑通前提
1.先确定apk地址有效,浏览器中手动下载可安装
2.确保已添加离线打包AndroidStudio的“android.permission.INSTALL_PACKAGES”权限
参考https://uniapp.dcloud.net.cn/tutorial/app-permission-android.html
3.
核心代码
const downloadTask = uni.downloadFile({url: 'https://xxxx/demo.apk',success: (res) => {if (res.statusCode === 200) {runApk(res.tempFilePath)}}
})downloadTask.onProgressUpdate((res) => {// 总大小 - 字节// res.totalBytesExpectedToWrite// 已下载 - 字节// res.totalBytesWritten// 进度 - 百分比 0-100// res.progress
})const runApk = (local_path = '') => {uni.openDocument({filePath: local_path,showMenu: true,success: (res) =>{// 打开成功},fail: (e) =>{// 打开失败},})
}
题外话
1.plus.io.convertLocalFileSystemURL( uni.downloadFile结果.tempFilePath )获取绝对路径,
在uni.openDocument中无效 - 不执行也不报错
2.plus.io.LocalURL(*) 什么参数都不执行,也不报错
3.uniapp打包后图片偶尔缺失 - 因为电脑可用内存不够,项目编译不够内存空间,造成偶尔的static资源没法完整打包进去
plus.runtime.install 安装失败,并且失败回调的参数 error一直为null
https://ask.dcloud.net.cn/question/57909
https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.install
https://blog.csdn.net/lzz123987csdn/article/details/136730680
加了离线打包的权限也不行 <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
https://uniapp.dcloud.net.cn/tutorial/app-permission-android.html
// 获取应用信息 - uniapp获取manifest文件内容
// https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.getProperty
const getAppInfo = async () => {// APP更新检查 > 获取应用信息return new Promise((resolve, reject) => {plus.runtime.getProperty( plus.runtime.appid, ( wgtinfo ) => {resolve(wgtinfo)})})
}
/*** APP-PLUS下载地址* * 处理:uni.downloadFile 》 success 》 res.tempFilePath* 获得:_doc/uniapp_temp_172308307703610/download/expert-v1.0.2.apk* * 处理:plus.io.convertLocalFileSystemURL(res.tempFilePath)* 获得:/storage/emulated/0/Android/data/com.amd.expert/apps/__UNI__78B9194/doc/uniapp_temp_172308307703610/download/expert-v1.0.2.apk* 参考:https://www.html5plus.org/doc/zh_cn/io.html#plus.io.convertLocalFileSystemURL* * 处理:plus.io.LocalURL( convertLocalFileSystemURL结果 )* 获得:file:///storage/emulated/0/Android/data/com.amd.expert/apps/__UNI__78B9194/doc/uniapp_temp_172308307703610/download/expert-v1.0.2.apk* 参考:https://www.html5plus.org/doc/zh_cn/io.html#plus.io.LocalURL*/
推荐
baidu.rudon.cn 没有广告的百度首页