当前位置:首页 > 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以上版本的未知来源安装权限。

uniapp 安卓更新

// 弹窗提示下载
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+设备,需要在代码中动态请求安装权限:

    uniapp 安卓更新

    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文件。此方法不适用于原生模块更新。

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 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp使用npm

uniapp使用npm

uniapp中使用npm的方法 uniapp支持通过npm安装和管理第三方依赖包,以下是具体操作步骤: 安装Node.js环境 确保本地已安装Node.js(建议使用LTS版本),安装后会自动包含…

uniapp多环境配置

uniapp多环境配置

多环境配置的必要性 在UniApp开发中,多环境配置能有效区分开发、测试、生产等不同环境的API地址、密钥等参数,避免手动修改代码导致的错误。 创建环境配置文件 在项目根目录下创建env.js或co…

uniapp面试问啥

uniapp面试问啥

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

uniapp指南

uniapp指南

开发环境搭建 下载HBuilderX作为官方推荐的开发工具,支持Windows和Mac系统。安装后创建uni-app项目,选择模板(如默认模板、Hello Uni-app等)。确保Node.js版本在…

uniapp adb

uniapp adb

在UniApp中使用ADB的方法 ADB(Android Debug Bridge)是Android开发中常用的调试工具,可用于UniApp项目的真机调试、日志查看等操作。以下是具体使用方法: 连…