Debian上Flutter应用的打包方法
一 准备环境
- 安装 Flutter SDK 并加入 PATH(如将 ~/flutter/bin 加入环境变量),执行 flutter doctor 检查环境;按需安装 Android SDK/Android Studio 并完成许可协议接受(运行一次 flutter doctor --android-licenses)。
- 安装 Linux 桌面运行依赖(示例):sudo apt install -y curl git cmake unzip wget zsh libgtk-3-dev。
- 准备 Flutter 项目:flutter create my_app && cd my_app && flutter pub get。
- 启用 Linux 桌面支持:flutter config --enable-linux-desktop;如需图标可添加插件 flutter_launcher_icons 并执行生成命令。
二 打包为 Linux 可执行文件与 Debian 包
- 构建 Linux 可执行文件:flutter build linux,产物位于 build/linux/(包含可执行文件与资源)。
- 制作 Debian 安装包(.deb)的两种方式:
- 使用社区插件 flutter_build_debian
- 在项目根目录创建 debian.yaml,示例:
flutter_app:
command: my_app
arch: x64
parent: /usr/local/lib
nonInteractive: false
- 运行构建:flutter pub run flutter_build_debian,生成的 .deb 位于 build/debian/。
- 手动制作简易 .deb(示例)
- 目录结构:myapp-1.0.0/DEBIAN/control 与 myapp-1.0.0/usr/bin/my_app
- control 示例:
Package: myapp
Version: 1.0.0
Architecture: amd64
Maintainer: Your Name you@example.com
Description: A Flutter Linux app
- 构建与安装:
dpkg-deb --build myapp-1.0.0
sudo dpkg -i myapp-1.0.0.deb
- 分发与安装:将 .deb 提供给用户,使用 sudo dpkg -i xxx.deb 安装。
三 打包为 Android APK 并签名
- 生成签名密钥:
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
- 配置签名(推荐方式):在项目 android/app 下创建 key.properties,内容:
storePassword=密码
keyPassword=密码
keyAlias=my-key-alias
storeFile=…/keystore/my-release-key.jks
在 android/app/build.gradle 中读取该文件并配置 signingConfigs.release,然后在 buildTypes.release 中引用。
- 构建发布 APK:flutter build apk,产物位于 build/app/outputs/flutter-apk/(常见为 app-release.apk)。
- 安装测试:flutter install(连接设备时)。
四 打包为 iOS 的说明
- 在 Debian 上无法直接完成 iOS 打包与签名,需使用 macOS + Xcode 执行 flutter build ios 并在 Xcode 中归档与导出 IPA。也可考虑使用云端构建服务或 Mac 虚拟机方案。
五 常见问题与建议
- 运行 flutter doctor 报错:优先解决 Android 许可与 SDK 组件缺失问题(运行 flutter doctor --android-licenses)。
- 构建 Linux 失败:确认已启用 Linux 桌面支持并安装 GTK 3 等依赖。
- 生成的 .deb 安装依赖不满足:在 control 的 Depends 字段中显式声明所需依赖,或先用 apt 安装依赖后再安装 .deb。
- Android 发布包无法安装或闪退:确保使用正确的发布签名配置,并核对 abiFilters 与目标设备架构匹配。