在今天的文章中,我们将介绍如何把一个HTML5的应用打包为一个snap应用。我们知道有很多的HTML5应用,但是我们如何才能把它们打包为我们的snap应用呢?特别是在Ubuntu手机手机开发的时候,有很多的已经开发好的HTML5游戏。我们可以通过我们今天讲的方法来把先前的click HTML5应用直接打包为snap应用,并可以在我们的Ubuntu桌面电脑上进行运行。当然,今天介绍的方法并不仅限于Ubuntu手机开发的HTML应用。这里的方法也适用于其它的HTML5应用。
bzr branch lp:~liu-xiao-guo/debiantrial/wuziqi
$ tree . ├── manifest.json ├── wuziqi.apparmor ├── wuziqi.desktop ├── wuziqi.png ├── wuziqi.ubuntuhtmlproject └── www ├── css │ └── app.css ├── images │ ├── b.png │ └── w.png ├── index.html └── js └── app.js
$ snapcraft init
$ tree . ├── manifest.json ├── snap │ └── snapcraft.yaml ├── wuziqi.apparmor ├── wuziqi.desktop ├── wuziqi.png ├── wuziqi.ubuntuhtmlproject └── www ├── css │ └── app.css ├── images │ ├── b.png │ └── w.png ├── index.html └── js └── app.js
name: wuziqi version: '0.1' summary: Wuziqi Game. It shows how to snap a html5 app into a snap description: | This is a Wuziqi Game. There are two kind of chesses: white and black. Two players play it in turn. The first who puts the same color chesses into a line is the winner. grade: stable confinement: strict apps: wuziqi: command: webapp-launcher www/index.html plugs: - browser-sandbox - camera - mir - network - network-bind - opengl - pulseaudio - screen-inhibit-control - unity7 plugs: browser-sandbox: interface: browser-support allow-sandbox: false platform: interface: content content: ubuntu-app-platform1 target: ubuntu-app-platform default-provider: ubuntu-app-platform parts: webapp: after: [ webapp-helper, desktop-ubuntu-app-platform ] plugin: dump source: . stage-packages: - ubuntu-html5-ui-toolkit organize: 'usr/share/ubuntu-html5-ui-toolkit/': www/ubuntu-html5-ui-toolkit prime: - usr/* - www/*
parts: webapp: after: [ webapp-helper, desktop-ubuntu-app-platform ] plugin: dump source: . stage-packages: - ubuntu-html5-ui-toolkit organize: 'usr/share/ubuntu-html5-ui-toolkit/': www/ubuntu-html5-ui-toolkit prime: - usr/* - www/*
$ tree -L 3 . ├── bin │ ├── desktop-launch │ └── webapp-launcher ├── command-wuziqi.wrapper ├── etc │ └── xdg │ └── qtchooser ├── flavor-select ├── meta │ ├── gui │ │ ├── wuziqi.desktop │ │ └── wuziqi.png │ └── snap.yaml ├── snap ├── ubuntu-app-platform ├── usr │ ├── bin │ │ └── webapp-container │ └── share │ ├── doc │ ├── ubuntu-html5-theme -> ubuntu-html5-ui-toolkit │ └── webbrowser-app └── www ├── css │ └── app.css ├── images │ ├── b.png │ └── w.png ├── index.html ├── js │ ├── app.js │ └── jquery.min.js └── ubuntu-html5-ui-toolkit └── 0.1
$ snapcraft
$ sudo snap install wuziqi_0.1_amd64.snap --dangerous
$ snap install ubuntu-app-platform $ snap connect wuziqi:platform ubuntu-app-platform:platform
$ snap interfaces Slot Plug :account-control - :alsa - :avahi-observe - :bluetooth-control - :browser-support wuziqi:browser-sandbox :camera - :core-support - :cups-control - :dcdbas-control - :docker-support - :firewall-control - :fuse-support - :gsettings - :hardware-observe - :home - :io-ports-control - :kernel-module-control - :libvirt - :locale-control - :log-observe snappy-debug :lxd-support - :modem-manager - :mount-observe - :network downloader,wuziqi :network-bind socketio,wuziqi :network-control - :network-manager - :network-observe - :network-setup-observe - :ofono - :opengl wuziqi :openvswitch - :openvswitch-support - :optical-drive - :physical-memory-control - :physical-memory-observe - :ppp - :process-control - :pulseaudio wuziqi :raw-usb - :removable-media - :screen-inhibit-control wuziqi :shutdown - :snapd-control - :system-observe - :system-trace - :time-control - :timeserver-control - :timezone-control - :tpm - :uhid - :unity7 wuziqi :upower-observe - :x11 - ubuntu-app-platform:platform wuziqi - wuziqi:camera - wuziqi:mir
$ wuziqi