cordova android8.0 以上真机下载更新失败

907 阅读1分钟

cordova打包项目后,使用cordova-plugin-file cordova-plugin-file-transfer cordova-plugin-file-opener2插件结合进行版本管理,在Android8.0及以上版本更新下载后,不能安装APP

别着急,cordova-plugin-file-opener2官方文档已经给出了说明。以下是官方文档原文

原因

由官方文档给出的说明,我们可以看出: cordova-plugin-file-opener2插件在使用的过程中存在两种限制条件

android apk 文件安装限制条件

  1. APK 权限限制:在Android 8+ 的设备上,您的应用程序必须具有“安装”操作包权限。
  2. 在Android7之前,您只能从外部分区安装APK。例如,您可以从cordova.file.externalDataDirectory安装程序,但是不能从cordova.file.dataDirectory安装程序。 Android 7+没有这个限制。

android 上的sdk卡限制

在Android上使用这个插件并不能保证打开sdk卡(外部存储卡)上的文件。这是因为底层Android库不支持从辅助外部存储设备读取文件。您的SDk卡是否被视为辅助外部设备取决于您所持有的手机本身设置。

解决方案

  1. cordova-plugin-file 操作文件时将APK文件下载(保存)到 cordova.file.externalDataDirectory对应的目录下
  2. 尽量不要调用sdk文件路径
  3. 给程序授予安装操作包权限(修改config.xml)
<platform name="android">
   <config-file parent="/manifest" target="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
       <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
   </config-file>
</platform>

cordova 相关文档

cordova环境配置(Android)

cordova 项目打包开发

cordova android8.0 以上真机下载更新失败

Cordova AJAX失败 status:0

jks和keystore的区别

cordova热更新和手动升级

cordova-plugin-statusbar

cordova-plugin-file-opener2