Flutter如何实现App内更新Android APK
在Flutter开发的Android应用中,如何实现App内自动更新APK的功能?需要支持下载新版本APK并静默安装,同时避免跳转到应用商店。请问有没有推荐的插件或方案?最好能提供关键代码示例和权限配置的注意事项。
2 回复
Flutter中实现Android APK应用内更新,可使用in_app_update插件。步骤如下:
- 添加依赖到
pubspec.yaml。 - 检查更新可用性:
AppUpdate.checkForUpdate()。 - 启动更新:
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);
}
主要步骤总结:
- 检查更新:从服务器获取最新版本信息
- 下载APK:使用下载管理器下载新版本
- 安装APK:调用系统安装界面
- 权限处理:确保有存储权限
注意事项:
- Google Play版本必须使用官方API
- 非Google Play版本需要处理文件权限
- 测试时注意版本号递增
- 考虑网络状态和用户提示
推荐优先使用官方应用内更新API,它更安全且符合Google Play政策。

