Flutter 双端(Windows + 安卓)打包全记录:一套代码出两个包
【摘要】 我做一个多协议下载器的界面用 Flutter,要同时出 Windows 桌面和安卓两个包。本文是真实打包流程记录:Go 引擎怎么编译、Flutter 怎么出双端、引擎怎么被界面拉起、以及几个跨端坑。
一、工程结构:Go 引擎 + Flutter 界面
- 后端 / 引擎:Go 写的下载引擎(HTTP / FTP / BT / 磁力等协议),编译成二进制,监听本机
127.0.0.1:17888提供 REST + WebSocket; - 界面:Flutter 一套代码,同时打 Windows 和安卓。
两者解耦:界面只跟本机 17888 端口通信,引擎是独立进程。
二、Go 引擎编译
go build -o engine ./cmd/engine
# Windows 交叉
GOOS=windows GOARCH=amd64 go build -o engine.exe ./cmd/engine
⚠️ 这项目必须用默认 CGO 动态编译,不能用 CGO_ENABLED=0(详见我另一篇 CGO 翻车文——纯静态会发损坏文件)。Windows 版需随包 3 个 MinGW DLL。
三、Flutter 界面构建
flutter pub get
flutter analyze # 提交前必跑,当前 Flutter 3.47.6 零问题
# Windows
flutter build windows --release
# 安卓
flutter build apk --release
四、引擎怎么被界面拉起(关键)
- Windows:Flutter 启动先
GET http://127.0.0.1:17888/api/health,不通就从自身目录启动engine.exe --port 17888; - 安卓:Go 引擎经
gomobile编成 AAR,在前台 Service 里起127.0.0.1:17888,Flutter 直连。需权限FOREGROUND_SERVICE/POST_NOTIFICATIONS/ 存储。
五、签名与安装包
Windows 安装包(Inno Setup / msix)与应用签名需自行配置;安卓出 app-release.apk 后自行签名分发。
六、踩坑与提醒
- 安卓前台服务权限漏一个,引擎起不来;
flutter analyze务必绿了再出包,能拦掉大部分低级错;- 引擎与界面是两套进程,版本要对齐,避免接口契约不匹配(另一篇专讲这个)。
【总结】 一套 Flutter 代码出双端,省的是 UI 成本;真正要操心的是"引擎和界面怎么在各端被拉起、怎么通信"。把这条链路跑通,跨端就不是问题。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)