Flutter开发安卓应用未上架应用商店,如何实现应用更新?
针对少量用户的Flutter安卓应用更新方案(无需上架Play Store)
自建简易更新服务
- 核心思路:搭建一个简单的静态服务存放最新APK和版本配置文件(如
version.json),在Flutter应用中加入版本检查逻辑,实现主动更新提示。 - 具体实现:
- 准备静态服务器:可以用本地电脑临时搭建(比如执行
python -m http.server 8000),或者用免费静态存储服务托管文件。 - 上传文件:将最新APK和
version.json(包含版本号、下载地址等信息)上传到服务器。 - 应用内检查逻辑:用
http请求版本配置,对比本地应用版本(通过package_info_plus获取),若有新版本则弹窗提示用户下载APK,并引导开启「安装未知应用」权限完成更新。 - 代码示例:
import 'package:http/http.dart' as http; import 'package:package_info_plus/package_info_plus.dart'; import 'package:url_launcher/url_launcher.dart'; import 'dart:convert'; Future<void> checkAppUpdate(BuildContext context) async { try { final response = await http.get(Uri.parse('http://你的服务器地址/version.json')); if (response.statusCode != 200) return; final versionData = jsonDecode(response.body); final latestVersion = versionData['version']; final apkUrl = versionData['apk_url']; final packageInfo = await PackageInfo.fromPackageInfo(); final currentVersion = packageInfo.version; if (latestVersion.compareTo(currentVersion) > 0) { showDialog( context: context, builder: (_) => AlertDialog( title: const Text('发现新版本'), content: const Text('请下载安装最新版本'), actions: [ TextButton( onPressed: () async { if (await canLaunchUrl(Uri.parse(apkUrl))) { await launchUrl(Uri.parse(apkUrl)); } }, child: const Text('立即下载'), ), ], ), ); } } catch (e) { // 处理网络请求异常 } }
- 准备静态服务器:可以用本地电脑临时搭建(比如执行
- 优缺点:完全自主可控,成本极低;但需自行维护服务器,处理不同设备的下载、安装兼容性问题。
内测分发工具(类TestFlight)
- Firebase App Distribution:谷歌官方内测分发工具,支持安卓/iOS。上传APK后添加测试用户邮箱,用户通过邀请链接安装应用,新版本发布后会自动推送更新通知,无需上架应用商店,用户数量限制足够覆盖少量用户场景。
- 蒲公英/Fir.im:国内常用内测分发平台,上传APK后生成下载链接或二维码,用户扫码即可安装。后台可配置版本更新信息,应用内加入检查逻辑就能触发更新提示,操作简单易上手。
- 这类工具无需自行搭建服务,自带更新推送、用户管理功能,适合个人或小团队快速实现内测更新。
局域网内部分发(适合极小范围用户)
- 如果用户都在同一局域网内,可直接通过局域网分享APK:
- 在电脑上用Python启动临时HTTP服务:
python -m http.server 8000,将APK放在当前目录。 - 告知用户在浏览器输入你的电脑IP+端口(如
http://192.168.1.100:8000/app.apk)下载安装。 - 更新时只需替换服务器上的APK,通知用户重新下载即可。
- 在电脑上用Python启动临时HTTP服务:
- 优点是无需外网,操作简单;缺点是用户必须在同一局域网,更新需手动通知。
内容的提问来源于stack exchange,提问作者aoiTenshi
相关产品推荐
相关产品推荐

