You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用upgrader或其他方案高效实现Flutter in_app_update应用内升级

Flutter 应用内更新实现方案

方案一:upgrader 快速接入(优先推荐)

适合全平台通用场景,无需自行处理原生逻辑,接入成本极低。

  • 第一步:添加依赖
    在pubspec.yaml的dependencies节点下添加配置,版本号替换为当前最新稳定版即可:
dependencies:
  upgrader: ^最新稳定版本号
  • 第二步:基础接入
    仅需在应用根节点包裹UpgradeAlert组件,启动应用时会自动检测版本弹出更新提示:
import 'package:upgrader/upgrader.dart';
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '应用内更新Demo',
      home: UpgradeAlert(
        // 配置强制更新,禁止用户关闭弹窗
        canDismissDialog: false,
        // 配置最低允许版本,低于该版本强制更新
        minAppVersion: '2.1.0',
        // 自定义弹窗文案
        dialogTitle: '发现新版本',
        dialogMessage: '当前版本存在安全风险,请更新到最新版本继续使用',
        updateButtonText: '立即更新',
        child: const HomePage(),
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(appBar: AppBar(title: const Text("首页")));
  }
}
  • 注意事项
    • 安卓端需要在AndroidManifest.xml中申请安装应用权限:<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    • iOS端会自动跳转至App Store对应应用页面,无需额外配置

方案二:in_app_update 官方商店更新流接入

仅支持通过Google Play、App Store分发的应用,走系统原生更新流程,更符合商店合规要求。

  • 第一步:添加依赖
    在pubspec.yaml的dependencies节点下添加配置,版本号替换为当前最新稳定版即可:
dependencies:
  in_app_update: ^最新稳定版本号
  • 第二步:端侧配置
    • 安卓端:android/app/build.gradle中的compileSdkVersion需至少设置为31,测试时需将测试包上传至Google Play内部测试/封闭测试轨道,本地debug包无法触发更新检测
    • iOS端:需在Xcode中配置正确的App Store Connect应用ID,测试时需使用TestFlight打包验证
  • 第三步:核心逻辑实现
import 'package:in_app_update/in_app_update.dart';

// 应用启动时调用该方法检测更新
Future<void> checkAppUpdate() async {
  InAppUpdateState updateState = await InAppUpdate.checkForUpdate();
  // 存在可用更新
  if (updateState.updateAvailability == UpdateAvailability.updateAvailable) {
    // 方案A:强制立即更新,弹窗无法关闭,更新完成前无法使用应用
    await InAppUpdate.performImmediateUpdate();
    // 方案B:柔性更新,用户可继续使用应用,后台静默下载完成后提示安装
    // await InAppUpdate.startFlexibleUpdate();
    // 柔性更新下载完成后调用该方法触发安装
    // await InAppUpdate.completeFlexibleUpdate();
  }
}

常见问题排查

  • upgrader无更新弹窗:确认pubspec.yaml中的version字段格式为x.y.z+build号,版本号规则符合语义化版本规范
  • in_app_update检测不到更新:确认测试包的包名、签名/证书、版本号和应用商店后台上传的包完全一致
  • 安卓安装更新失败:确认已开启应用的「安装未知应用」权限,targetSdkVersion不低于30

内容的提问来源于stack exchange,提问作者s4n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:00