Flutter 构建为Linux snap 包

383 阅读2分钟

官网地址

docs.flutter.dev/deployment/…

以下内容基本来自官网,可直接前往官网查看

Prerequisites(先决条件)

安装组件

sudo snap install snapcraft --classic
sudo snap install multipass --classic
sudo snap install lxd

lxd执行初始化

执行sudo lxd init(所有项目直接按回车使用默认值即可)


sudo lxd init 

配置lxd 组

sudo usermod -a -G lxd <your username>

例如我的用户名是alan,则执行以下命令

sudo usermod -a -G lxd alan

创建snapcraft.yaml文件

在project root(项目的根目录下)创建/snap/snapcraft.yaml文件

内容为:

# 程序名称
name: super-cool-app 
# 程序版本号
version: 0.1.0 
# 程序的粗略描述
summary: Super Cool App
# 程序的详细描述
description: Super Cool App that does everything!
#以下三个保持不变即可
confinement: strict
base: core18
grade: stable
# 格式为 dubs-<你的程序名称>
slots:
  dbus-super-cool-app: # adjust accordingly to your app name
    interface: dbus
    bus: session
    # 格式为 你的程序包名
    name: org.bar.super_cool_app # adjust accordingly to your app name and
    
apps:
  # 程序名称
  super-cool-app:
    # 程序对应的执行命令
    command: super-cool-app
    # flutter 打包使用到的分支(为Git master分支)
    extensions: [flutter-master] # Where "master" defines which Flutter channel to use for the build
    plugs:
    - network
    slots:
    # 格式为 dubs-<你的程序名称>
      - dbus-super-cool-app
parts:
  # 程序名称
  super-cool-app:
    source: .
    plugin: flutter
    flutter-target: lib/main.dart # The main entry-point file of the application

新增桌面图标

在/<项目根目录>/snap/gui目录下新增<图标名称>.png

新增desktop 桌面快捷方式

在/<项目根目录>/snap/gui目录下新增 <自定义应用名称>.desktop 内容如下

[Desktop Entry]
# 快捷方式显示的名称,自定义
Name=ChatGpt Client
# 提示内容,自定义
Comment=Chat with ChatGpt Client
# 可执行文件 ,snapcraft.yaml中指定的name
Exec=chatgpt_client
# 图标位置
Icon=${SNAP}/meta/gui/desktop名称.png # replace name to your app name
Terminal=false
Type=Application
Categories=Education; #adjust accordingly your snap category

注意: desktop文件和图标文件名称需要保持一致

打包

snapcraft --use-lxd

安装

没有发布到snap 应用商店,需要使用 --dangerous参数进行安装

snap install --dangerous *.snap