Flatpak打包(6)——构建一个简单的应用

全部文章目录:
Flatpak打包(1)——Flatpak 介绍
Flatpak打包(2)——Flatpak应用元素
Flatpak打包(3)——应用Flatpak
Flatpak打包(4)——构建第一个Flatpak
Flatpak打包(5)——开始配置
Flatpak打包(6)——构建一个简单的应用
Flatpak打包(7)——Flatpak Builder
Flatpak打包(8)——应用Sandbox(沙盒)
Flatpak打包(9)——应用分发
Flatpak打包(10)——可用运行时(Runtime)
Flatpak打包(11)——命令参考
Flatpak打包(12)——Flatpak-builder命令参考

flatpak实用程序提供了一组用于构建和分发应用程序的命令。这些命令允许创建新的Flatpak应用,可以在其中构建新的或现有的应用程序。
本节将介绍如何构建一个简单的应用程序,该应用程序在运行时不需要任何额外的依赖关系。为了完成这些示例,您应该先完成设置步骤(Getting Setup)。

创建应用

要创建一个应用程序,第一步是使用build-init命令。这会创建一个可以构建应用程序的目录,其中包含正确的目录结构和有关应用程序信息的元数据文件。build-init的格式是:

$ flatpak build-init DIRECTORY APPNAME SDK RUNTIME [BRANCH]
  • DIRECTORY是将被创建以包含应用程序的目录的名称
  • APPNAME是应用程序的D-Bus名称
  • SDK 是将用于构建应用程序的SDK 的名称
  • RUNTIME是应用程序所需的运行时的名称
  • BRANCH通常是将要使用的SDK和运行时的版本

例如,要使用GNOME 3.22 SDK构建GNOME Dictionary 应用程序,该命令将如下所示:

$ flatpak build-init dictionary org.gnome.Dictionary org.gnome.Sdk org.gnome.Platform 3.22

现在可以试试这个命令。在下一步中,将在生成的dictionary目录中构建一个应用程序。

构建

flatpak build用于使用sdk构建应用程序。此命令用于提供对沙箱的访问权限。例如,以下内容将在appdir沙盒(位于files目录中)中创建一个文件:

$ flatpak build dictionary touch /app/some_file

(最好在继续之前删除此文件。)
build命令允许使用传统的configure,make和make install在flatpak中构建已有的应用程序。可以用GNOME Dictionary来试试这个。
首先,下载源文件,提取它们并切换到生成的目录:

$ wget https://download.gnome.org/sources/gnome-dictionary/3.20/gnome-dictionary-3.20.0.tar.xz
$ tar xvf gnome-dictionary-3.20.0.tar.xz
$ cd gnome-dictionary-3.20.0/

那么您可以使用build命令在以前创建的dictionary 目录中构建和安装源代码:

$ flatpak build ../dictionary ./configure --prefix=/app
$ flatpak build ../dictionary make
$ flatpak build ../dictionary make install
$ cd ..

:此处make的时候会有一个bug,提示错误:

...
make[3]: Entering directory '/home/zhangsl/Desktop/qtiplot/gnome-dictionary-3.20.0/libgdict'
  CC       libgdict_1_0_la-gdict-enum-types.lo
In file included from gdict-enum-types.c:6:0:
./gdict-client-context.h:84:1: error: unknown type name ‘GdictContext’
 GdictContext *        gdict_client_context_new          (const gchar        *hostname,
 ^~~~~~~~~~~~
make[3]: *** [Makefile:656: libgdict_1_0_la-gdict-enum-types.lo] Error 1
make[3]: Leaving directory '/home/zhangsl/Desktop/qtiplot/gnome-dictionary-3.20.0/libgdict'
make[2]: *** [Makefile:535: all] Error 2
make[2]: Leaving directory '/home/zhangsl/Desktop/qtiplot/gnome-dictionary-3.20.0/libgdict'
make[1]: *** [Makefile:484: all-recursive] Error 1
make[1]: Leaving directory '/home/zhangsl/Desktop/qtiplot/gnome-dictionary-3.20.0'
make: *** [Makefile:416: all] Error 2

参考https://git.gnome.org/browse/gnome-dictionary/commit/?id=d529e2dd056f05cb1115c2f68bb6f773b4b14948可知,解决方法如下:

--- a/libgdict/gdict-client-context.h           
+++ b/libgdict/gdict-client-context.h           
@@ -19,7 +19,7 @@                               
 #ifndef __GDICT_CLIENT_CONTEXT_H__             
 #define __GDICT_CLIENT_CONTEXT_H__             

-#include <glib-object.h>                       
+#include "gdict-context.h"                     

 #define GDICT_TYPE_CLIENT_CONTEXT              (gdict_client_context_get_type ())               
 #define GDICT_CLIENT_CONTEXT(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDICT_TYPE_CLIENT_CONTEXT, GdictClientContext))   

因为这些都在沙箱中运行,所以sdk中的编译器和其他工具用于构建和安装,而不是主机系统上的那些工具。

完成构建

一旦构建了应用程序,就需要使用build-finish命令来指定对主机不同部分的访问,例如联网和图形套接字。该命令还用于指定用于运行应用程序的命令(通过修改元数据文件完成)以及创建应用程序的exports目录。例如:

$ flatpak build-finish dictionary --socket=x11 --share=network --command=gnome-dictionary

在这一点上,已经成功地建立了一个flatpak应用并准备好运行。要测试应用程序,您需要将Dictionary 导出到存储库,添加该存储库,然后安装并运行该应用程序:

$ flatpak build-export repo dictionary
$ flatpak --user remote-add --no-gpg-verify --if-not-exists tutorial-repo repo
$ flatpak --user install tutorial-repo org.gnome.Dictionary
$ flatpak run org.gnome.Dictionary


这里我在执行安装命令的时候会出现一个错误:

$ flatpak --user install tutorial-repo org.gnome.Dictionary
error: Error searching remote tutorial-repo: Can't find ref org.gnome.Dictionary

出现原因是没有在同一目录内构建所有的flatpak应用,即所有的flatpak应用均应在同一目录中构建。
这会导出应用程序,创建一个名为tutorial-repo的存储库,将Dictionary应用程序安装在每个用户的安装区域并运行它。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值