Flutter如何实现App内更新Android APK

在Flutter开发的Android应用中,如何实现App内自动更新APK的功能?需要支持下载新版本APK并静默安装,同时避免跳转到应用商店。请问有没有推荐的插件或方案?最好能提供关键代码示例和权限配置的注意事项。

2 回复

Flutter中实现Android APK应用内更新,可使用in_app_update插件。步骤如下:

  1. 添加依赖到pubspec.yaml
  2. 检查更新可用性:AppUpdate.checkForUpdate()
  3. 启动更新:AppUpdate.performImmediateUpdate()(立即更新)或AppUpdate.startFlexibleUpdate()(灵活更新)。

灵活更新需调用AppUpdate.completeFlexibleUpdate()完成安装。

更多关于Flutter如何实现App内更新Android APK的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现Android APK应用内更新,主要有两种方式:

1. 使用官方应用内更新API(推荐)

Google Play Core库提供了官方的应用内更新功能:

添加依赖

dependencies:
  in_app_update: ^3.1.4

实现代码

import 'package:in_app_update/in_app_update.dart';

class AppUpdateManager {
  static Future<void> checkForUpdate() async {
    try {
      // 检查更新可用性
      final updateInfo = await InAppUpdate.checkForUpdate();
      
      if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
        // 灵活更新(后台下载)
        if (updateInfo.immediateUpdateAllowed) {
          await InAppUpdate.startFlexibleUpdate();
          await InAppUpdate.completeFlexibleUpdate();
        }
        // 立即更新(强制更新)
        else if (updateInfo.flexibleUpdateAllowed) {
          await InAppUpdate.performImmediateUpdate();
        }
      }
    } catch (e) {
      print('更新检查失败: $e');
    }
  }
}

2. 自定义更新方案(适用于非Google Play渠道)

下载APK文件

import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_downloader/flutter_downloader.dart';

class CustomUpdateManager {
  static Future<void> downloadAndInstall(String apkUrl) async {
    // 请求存储权限
    if (await Permission.storage.request().isGranted) {
      final taskId = await FlutterDownloader.enqueue(
        url: apkUrl,
        savedDir: '/storage/emulated/0/Download',
        fileName: 'app_update.apk',
        showNotification: true,
        openFileFromNotification: true,
      );
    }
  }
}

安装APK

import 'package:open_file/open_file.dart';

void installApk(String filePath) {
  OpenFile.open(filePath);
}

主要步骤总结:

  1. 检查更新:从服务器获取最新版本信息
  2. 下载APK:使用下载管理器下载新版本
  3. 安装APK:调用系统安装界面
  4. 权限处理:确保有存储权限

注意事项:

  • Google Play版本必须使用官方API
  • 非Google Play版本需要处理文件权限
  • 测试时注意版本号递增
  • 考虑网络状态和用户提示

推荐优先使用官方应用内更新API,它更安全且符合Google Play政策。

回到顶部