当前位置:首页 > uni-app

uniapp 安卓更新

2026-03-05 15:57:05uni-app

uniapp 安卓更新实现方法

静默更新方案

manifest.json中配置版本号和下载地址,通过plus.runtime.getProperty获取当前版本号,与服务器最新版本对比。若需要更新,调用plus.runtime.install方法静默安装。

// 检查更新逻辑
uni.getSystemInfo({
  success: function(res) {
    if (res.platform === 'android') {
      const currentVersion = plus.runtime.version
      uni.request({
        url: 'https://your-api.com/version',
        success: (res) => {
          if (res.data.version > currentVersion) {
            plus.runtime.install(
              'https://your-cdn.com/app.apk',
              {force: true},
              () => console.log('安装成功'),
              (e) => console.error('安装失败:', e)
            )
          }
        }
      })
    }
  }
})

用户确认更新方案

创建自定义弹窗提示用户,通过uni.downloadFile下载APK后调用plus.runtime.install。需要处理Android 8.0以上版本的未知来源安装权限。

// 弹窗提示下载
uni.showModal({
  title: '发现新版本',
  content: '是否立即更新?',
  success: (res) => {
    if (res.confirm) {
      const downloadTask = uni.downloadFile({
        url: 'https://your-cdn.com/app.apk',
        success: (res) => {
          if (res.statusCode === 200) {
            plus.runtime.install(res.tempFilePath, {force: true})
          }
        }
      })
    }
  }
})

注意事项

  • AndroidManifest.xml需添加网络权限和安装权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
  • 对于Android 8.0+设备,需要在代码中动态请求安装权限:

    const main = plus.android.runtimeMainActivity()
    const Intent = plus.android.importClass('android.content.Intent')
    const Settings = plus.android.importClass('android.provider.Settings')
    const Uri = plus.android.importClass('android.net.Uri')
    const intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
    intent.setData(Uri.parse('package:' + main.getPackageName()))
    main.startActivityForResult(intent, 10086)

版本管理建议

  1. 服务器端应提供版本检查接口,返回最新版本号和下载地址
  2. 每次打包时递增manifest.json中的versionCode
  3. 建议使用CDN加速APK下载
  4. 对于重大更新可考虑强制更新策略

热更新方案(非整包更新)

通过wgt包实现资源更新,需使用plus.runtime.install安装wgt文件。此方法不适用于原生模块更新。

uniapp 安卓更新

uni.downloadFile({
  url: 'https://your-cdn.com/update.wgt',
  success: (res) => {
    plus.runtime.install(res.tempFilePath, {
      force: false
    }, function() {
      plus.runtime.restart()
    })
  }
})

标签: uniapp
分享给朋友:

相关文章

uniapp面试问啥

uniapp面试问啥

技术基础类问题 UniApp框架特性 跨端实现原理及条件编译的使用场景 如何理解"一次开发,多端运行"的优缺点 rpx与vw/vh单位的适配差异 Vue相关 生命周期在UniA…

base64转换方法uniapp

base64转换方法uniapp

Base64 转换方法(UniApp) 在 UniApp 中实现 Base64 编码和解码,可以通过原生 JavaScript 的 btoa 和 atob 方法,或使用第三方库如 base64-js。…

uniapp斑马

uniapp斑马

uniapp 斑马相关问题解答 uniapp 斑马打印机连接与使用 uniapp 支持通过蓝牙或网络连接斑马打印机,需要借助原生插件或第三方 SDK。以下为常见方法: 蓝牙连接方式 安装 uni-…

uniapp 用法

uniapp 用法

uniapp 基本概念 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持编译到 iOS、Android、H5 及小程序等多端。其核心特点是“一次开发,多端发布”,通过条件编译实现平台差异…

美颜uniapp

美颜uniapp

美颜功能在UniApp中的实现方法 在UniApp中实现美颜功能,可以通过以下几种方式: 使用第三方SDK或插件 腾讯云美颜SDK:提供直播推流场景下的美颜、滤镜、贴纸等功能,支持UniA…

uniapp有用

uniapp有用

Uniapp 的优势 Uniapp 是一款基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布,适用于 iOS、Android、Web、小程序等多个平台。其核心优势包括: 跨平台兼容…