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

4 回复

安装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.logplus.nativeUI.toast 来输出调试信息。
  • 示例代码:
    console.log('文件路径:' + filePath);
    

7. 测试不同 Android 版本

  • 在不同的 Android 版本上测试,确保问题不是特定于某个 Android 版本。

8. 使用第三方插件

  • 如果以上方法无法解决问题,可以考虑使用第三方插件来处理 APK 的下载和安装。例如,使用 cordova-plugin-filecordova-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');
回到顶部