uni-app HBuilderX3.99打包apk后下载更新无法跳转到安装页面
uni-app HBuilderX3.99打包apk后下载更新无法跳转到安装页面
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
HBuilderX类型:
正式
HBuilderX版本号:
3.99
手机系统:
Android
手机系统版本号:
Android 8.1
手机厂商:
华为
手机机型:
nova3
页面类型:
vue
vue版本:
vue2
打包方式:
云端
操作步骤:
this.downloading = true var downloadApkUrl = “https://image-1300435352.cos.ap-beijing.myqcloud.com/healthbank-uni/update/养生星球.apk”; dtask = plus.downloader.createDownload(downloadApkUrl, {}, function(d, status) { // 下载完成 console.log(1111,d) if (status == 200) { console.log(3333,status) plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(error) { console.log(error) uni.showToast({ title: ‘安装失败’+error, duration: 1500 }); }) } else { uni.showToast({ title: ‘更新失败’, duration: 1500 }); } });
预期结果:
跳转安装页面
实际结果:
报错
bug描述:
打包apk,plus.runtime.install无法跳转到安装页面提示WGT安装包中manifest.json文件不存在。代码没有改动,之前hb版本可以自动更新
更多关于uni-app HBuilderX3.99打包apk后下载更新无法跳转到安装页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html
安装apk需添加以下权限:
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
请参考:
https://uniapp.dcloud.net.cn/tutorial/app-permission-android.html
更多关于uni-app HBuilderX3.99打包apk后下载更新无法跳转到安装页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html
权限都添加了,还有就是plus.downloader.createDownload下载apk,提示下载成功但是在手机文件里找不到apk文件。这是正常的吗?
我刚才试一下之前打包的apk,通过plus.downloader.createDownload可以下载下来,在手机文件可以找到。hb版本更新后就有这个问题了。这个怎么处理
在使用 uni-app 和 HBuilderX 3.99 打包 APK 后,如果下载更新后无法跳转到安装页面,可能是以下几个原因导致的。以下是一些可能的解决方案:
1. 检查下载路径和文件权限
- 确保下载的 APK 文件路径正确,并且文件已成功下载到设备的存储中。
- 检查是否在
AndroidManifest.xml中正确配置了文件读写权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> - 在 Android 6.0 及以上版本,还需要动态请求文件读写权限。
2. 检查文件 MIME 类型
- 在跳转到安装页面时,确保使用了正确的 MIME 类型。通常 APK 文件的 MIME 类型为
application/vnd.android.package-archive。 - 示例代码:
plus.runtime.openFile(filePath, {}, function(err) { if (err) { console.error('打开文件失败:' + err.message); } });
3. 检查文件路径是否正确
- 确保
filePath是正确的文件路径。可以使用plus.io接口来获取文件的绝对路径。 - 示例代码:
var filePath = plus.io.convertLocalFileSystemURL('/storage/emulated/0/Download/your_app.apk'); plus.runtime.openFile(filePath, {}, function(err) { if (err) { console.error('打开文件失败:' + err.message); } });
4. 检查 Android 8.0 及以上版本的安装权限
- 在 Android 8.0(API 26)及以上版本,安装 APK 需要
REQUEST_INSTALL_PACKAGES权限。确保在AndroidManifest.xml中添加了以下权限:<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
5. 检查 HBuilderX 配置
- 确保 HBuilderX 的配置正确,特别是打包时的
manifest.json文件配置。检查是否有任何配置错误或遗漏。
6. 调试和日志
- 在代码中添加日志,检查文件下载和路径是否正确。可以通过
console.log或plus.nativeUI.toast来输出调试信息。 - 示例代码:
console.log('文件路径:' + filePath);
7. 测试不同 Android 版本
- 在不同的 Android 版本上测试,确保问题不是特定于某个 Android 版本。
8. 使用第三方插件
- 如果以上方法无法解决问题,可以考虑使用第三方插件来处理 APK 的下载和安装。例如,使用
cordova-plugin-file和cordova-plugin-file-opener2插件。
示例代码
以下是一个完整的示例代码,用于下载 APK 并跳转到安装页面:
function downloadAndInstallApk(url) {
var filePath = plus.io.convertLocalFileSystemURL('/storage/emulated/0/Download/your_app.apk');
var downloadTask = plus.downloader.createDownload(url, { filename: filePath }, function(d, status) {
if (status == 200) {
plus.runtime.openFile(filePath, {}, function(err) {
if (err) {
console.error('打开文件失败:' + err.message);
}
});
} else {
console.error('下载失败:' + status);
}
});
downloadTask.start();
}
// 调用函数
downloadAndInstallApk('https://yourdomain.com/your_app.apk');

