温馨提示×

Debian上Flutter应用的打包方法

小樊
32
2025-12-20 06:13:04
栏目: 智能运维

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)的两种方式:
    1. 使用社区插件 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/
    2. 手动制作简易 .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 与目标设备架构匹配。

0