当前位置:首页 > 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视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-col…

uniapp实现懒加载

uniapp实现懒加载

uniapp实现懒加载的方法 在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法: 使用uni.lazyLoad组件 uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页…

uniapp yuv

uniapp yuv

YUV 格式在 UniApp 中的应用 在 UniApp 中处理 YUV 格式数据通常涉及视频编解码、图像处理或摄像头数据采集。YUV 是一种颜色编码系统,常用于视频传输和图像处理,与 RGB 格式相…

房产uniapp

房产uniapp

房产类UniApp开发指南 UniApp作为跨平台开发框架,适用于快速构建房产类应用(如二手房交易、租房平台、新房展示等)。以下是关键开发要点和实现方法: 技术选型与框架配置 跨平台适配:使用Uni…

uniapp grid

uniapp grid

uniapp grid 布局实现方法 在 uniapp 中实现 grid 布局可以通过多种方式完成,包括使用内置组件、CSS Grid 或第三方插件。以下是几种常见的实现方法: 使用 uni-gri…