Flutter 双端(Windows + 安卓)打包全记录:一套代码出两个包

举报
樊先生 发表于 2026/10/28 00:26:25 2026/10/28
【摘要】 我做一个多协议下载器的界面用 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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。