Flatpak打包(6)——构建一个简单的应用
2018-02-14 19:17
274 查看
创建应用
构建
完成构建
全部文章目录:
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命令参考
本节将介绍如何构建一个简单的应用程序,该应用程序在运行时不需要任何额外的依赖关系。为了完成这些示例,您应该先完成设置步骤(Getting Setup)。
DIRECTORY是将被创建以包含应用程序的目录的名称
APPNAME是应用程序的D-Bus名称
SDK 是将用于构建应用程序的SDK 的名称
RUNTIME是应用程序所需的运行时的名称
BRANCH通常是将要使用的SDK和运行时的版本
例如,要使用GNOME 3.22 SDK构建GNOME Dictionary 应用程序,该命令将如下所示:
现在可以试试这个命令。在下一步中,将在生成的
(最好在继续之前删除此文件。)
build命令允许使用传统的configure,make和make install在flatpak中构建已有的应用程序。可以用GNOME Dictionary来试试这个。
首先,下载源文件,提取它们并切换到生成的目录:
那么您可以使用build命令在以前创建的dictionary 目录中构建和安装源代码:
注:此处
参考https://git.gnome.org/browse/gnome-dictionary/commit/?id=d529e2dd056f05cb1115c2f68bb6f773b4b14948可知,解决方法如下:
因为这些都在沙箱中运行,所以sdk中的编译器和其他工具用于构建和安装,而不是主机系统上的那些工具。
在这一点上,已经成功地建立了一个flatpak应用并准备好运行。要测试应用程序,您需要将Dictionary 导出到存储库,添加该存储库,然后安装并运行该应用程序:
注:
这里我在执行安装命令的时候会出现一个错误:
出现原因是没有在同一目录内构建所有的flatpak应用,即所有的flatpak应用均应在同一目录中构建。
这会导出应用程序,创建一个名为tutorial-repo的存储库,将Dictionary应用程序安装在每个用户的安装区域并运行它。
构建
完成构建
全部文章目录:
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应用程序安装在每个用户的安装区域并运行它。
相关文章推荐
- 微信小程序入门之构建一个简单TODOS应用
- Flatpak打包(2)——Flatpak应用元素
- Flatpak打包(3)——应用Flatpak
- 4 - Swift之2 - 使用xcode7构建一个简单的应用并在IOS9设备上真机运行
- 构建一个简单的WCF应用
- 微信小程序入门之构建一个简单TODOS应用
- 构建一个简单的WCF应用
- 基于MINA构建简单高性能的NIO应用-一个简单的例子
- 构建一个简单的WCF应用
- 微信小程序入门之构建一个简单TODOS应用
- 构建一个简单的WCF应用
- webpack 入门(一个简单打包配置构建)
- 构建一个简单的WCF应用
- 通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用
- Flatpak打包(9)——应用分发
- 微信小程序入门之构建一个简单TODOS应用
- Angular5初探之--构建一个简单的单页应用,包含登录(login)和几个一级菜单
- Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
- 微信小程序入门之构建一个简单TODOS应用
- 构建一个简单的WCF应用——WCF学习笔记(1)