清单¶
flatpack-builder
是一个JSON文件,用于描述构建一个应用的参数,以及构建每个模块所用的指令。这个文件被称为清单文件。
这个页面提供了如何使用清单文件的信息和指南,包括需要指定的最常用参数的详解。读这一章节之前要求已经学习过 构建你的第一个flatpak应用 并且熟悉 Flatpak Builder 。
清单文件应该使用应用ID命名。举个例子:GNOME Dictionary的清单文件应该命名为 org.gnome.Dictionary.json
.本页面使用这个清单文件,在 构建你的第一个flatpak应用 有对整个例子的介绍。
一个完整的属性列表可以在清单文件中指明,可以在 Flatpak Builder命令行参考文档 和 flatpak-manifest
找到。
基本属性¶
每个清单文件应该指明要构建应用的基本信息,包括 app-id
, runtime
, runtime-version
, sdk
和 command
。这些属性通常在文件的开头进行声明。
举个例子,GNOME Dictionary的清单文件包含:
"app-id": "org.gnome.Dictionary",
"runtime": "org.gnome.Platform",
"runtime-version": "3.26",
"sdk": "org.gnome.Sdk",
"command": "gnome-dictionary",
指明runtime和runtime版本可以在用户的系统上自动安装你的应用需要的运行时。
文件重命名¶
正如 Flatpak简介 中描述的,导出是对主机可用的应用文件,包含像 .desktop
文件和图标文件之类的。
flatpak导出的文件名字必须以应用ID为前缀,例如 org.gnome.Dictionary.desktop
。直接在应用源代码和资源中重命名这些文件是最佳方法。
如果无法使用应用ID重命名导出文件, flatpak-builder
允许在构建过程中重命名。可以通过在清单文件中指明下面的属性来实现:
rename-icon
- 重命名应用图标rename-desktop-file
- 重命名.desktop
文件rename-appdata-file
- 重命名AppData文件
每个属性都可以接受源文件重命名。 flatpak-builder
会自动重命名他们以匹配应用ID。注意这种重命名方法可能产生内部命名冲突,所以在文件树中进行重命名是最可靠的方法。
Finishing¶
flatpak应用默认运行在很有限的主机环境里面,但是应用需要访问沙箱之外的资源。finishing是用于指明应用沙箱权限的一步,用于访问外界资源。
finishing清单节点使用 finish-args
属性,可以在Dictionary的清单文件见到:
"finish-args": [
"--socket=x11",
"--share=network"
],
正如 构建你的第一个flatpak应用 中解释的,这两个属性为应用授予X11显示服务和网络的权限。权限的使用指南可以参考 沙箱权限 , 所有的 finish-args
选项可以查看 沙盒权限 。
cleanup¶
cleanup属性用于移除构建过程中产生的,却不想保留的文件,例如头文件或者开发文档。清单文件中两个参数用于这个操作。第一个,一个文件名模板列表:
"cleanup": [ "/include", "/bin/foo-*", "*.a" ]
第二个cleanup属性是一系列命令,在cleanup阶段执行:
"cleanup-commands": [ "sed s/foo/bar/ /bin/app.sh" ]
cleanup属性可以根据每个模块进行设置,在这种情况下,只会匹配该特定的模块产生的文件名。
模块¶
这个模块列表作为构建过程的一部分,指明了每个模块。其中一个模块是应用本身,其他的是依赖和库,作为flatpak的一部分进行绑定。当应用比较简单的时候,只有一到两个模块,因此有较短的模块节点,一些应用会有大量的模块需要绑定,因此会有较长的模块节点。
GNOME Dictionary的模块节点是较短的,因为它仅仅包含应用本身,大概如下所示:
"modules": [
{
"name": "gnome-dictionary",
"sources": [
{
"type": "archive",
"url": "https://download.gnome.org/sources/gnome-dictionary/3.26/gnome-dictionary-3.26.0.tar.xz",
"sha256": "387ff8fbb8091448453fd26dcf0b10053601c662e59581097bc0b54ced52e9ef"
}
]
}
]
可以看出,每个列出的模块有一个 name
(可以自由分配)和一个 sources
列表。每个source都有一个 type
,可用的type有:
archive
-.tar
or.zip
归档文件git
- Git 仓库bzr
- Bazaar 仓库file
- 本地文件(这些复制到源码目录)dir
- 本地目录 (这些将复制到源码目录)script
- 一个shell命令数组(这些都被放在shell脚本文件里)shell
- 再源码抽取期间运行的一组shell命令patch
- 补丁(用于源代码目录)extra-data
- 在安装时下载的数据;可以包含归档文件或者package文件
每种source类型有不同的属性,在 Flatpak Builder命令行参考文档 列出了。
实例清单文件¶
一个 完整的GNOME Dictionary清单文件 . 你也可以浏览 Flathub托管的所有清单文件 。