在先前的文章"如何把一个qmake的Ubuntu手机应用打包为一个snap应用"(http://www.linuxdiyf.com/linux/22344.html)中,我们介绍了如何把一个qmake的一个Ubuntu手机应用打包为一个snap的桌面应用.在今天的教程中,我们将展示如何把一个cmake的Ubuntu手机项目转换为一个snap的桌面应用.
1)通过Ubuntu SDK开发一个我们需要的手机应用
我们可以通过Ubuntu SDK来创建一个我们想要的项目.关于如何创建一个Ubuntu手机应用,这个不在我们的这个教程范围.这里将不再累述!
值得指出的是:在今天的教程中,我们将教大家如何把一个cmake的Ubuntu手机应用打包为一个snap的应用.这里,我们将利用之前我已经开发的一个项目作为例程来开始.我们在terminal下打入如下的命令:
$ git clone https://github.com/liu-xiao-guo/photos
下载后的源码结构如下:
liuxg@liuxg:~/snappy/desktop/photos$ tree -L 2
.
├── photos.wrapper
├── setup
│ └── gui
├── snapcraft.yaml
├── snappy-qt5.conf
└── src
├── app
├── CMakeLists.txt
├── manifest.json.in
├── photos.apparmor
└── po
就像我们上面展示的那样,在src的目录中有一个完整的可以执行的cmake手机应用.它的项目管理文件是CMakeLists.txt.在它的根目录下有一个文件叫做snapcraft.yaml文件.这个是用来打包我们的CMake手机应用,并使之成为一个可以在我们的16.04桌面上运行的snap应用.
2)为我们的cmake项目打包
在上节中,我们已经提到了我们项目的snapcraft.yaml文件.现在我们把这个文件展示如下:
snapcraft.yaml
name: photos-app
version: 1.0
summary: Ubuntu photos app
description: |
This is a demo app showing how to convert a cmake ubuntu phone app to a snap app
apps:
photos:
command: photos
plugs: [network,home,unity7,opengl]
parts:
photos:
plugin: cmake
configflags: [-DCMAKE_INSTALL_PREFIX=/usr, -DCLICK_MODE=off]
source: src/
build-packages:
- cmake
- gettext
- intltool
- ubuntu-touch-sounds
- suru-icon-theme
- qml-module-qttest
- qml-module-qtsysteminfo
- qml-module-qt-labs-settings
- qtdeclarative5-u1db1.0
- qtdeclarative5-qtmultimedia-plugin
- qtdeclarative5-qtpositioning-plugin
- qtdeclarative5-ubuntu-content1
- qt5-default
- qtbase5-dev
- qtdeclarative5-dev
- qtdeclarative5-dev-tools
- qtdeclarative5-folderlistmodel-plugin
- qtdeclarative5-ubuntu-ui-toolkit-plugin
- xvfb
stage-packages:
- ubuntu-sdk-libs
- qtubuntu-desktop
- qml-module-qtsysteminfo
- ubuntu-defaults-zh-cn
snap:
- -usr/share/doc
- -usr/include
environment:
plugin: copy
files:
photos.wrapper: bin/photos
snappy-qt5.conf: etc/xdg/qtchooser/snappy-qt5.conf
在这里,我不想再累述这里的每一个字段的意思.大家可以参阅我的文章"如何把一个qmake的Ubuntu手机应用打包为一个snap应用".特比值得指出的是,在我们的这个snapcraft.yaml文件中,我们定义了一个新的environment的part(它可以是我们喜欢的任何名称).在它里面,它使用了copy plugin.它把当前目录下的photos.wrapper拷入到bin/photos下.我们的command中的执行文件是photos。
我们可以直接在我们的项目根目录下打入如下的命令:
$ snapcraft
它即可把我们的应用打包为我们想要的snap应用包.
关于如何安装和运行我们的应用.这里我就不再累述.请大家参阅我文章"如何把一个qmake的Ubuntu手机应用打包为一个snap应用".
下面,我们把运行的结果的截图显示如下: