Chrome浏览器是一个非常重要的应用.它甚至成为我们平时工作而不可以缺失的工具.在今天的教程中,我们来展示如何把Chrome浏览器打包为一个snap应用.

我们知道,每当我们在电脑上安装我们的Chrome浏览器时,我们可以在如下的地址来下载我们的Chrome deb安装包:

https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

当然这是针对64位的机器来说的.我们如何在我们的snapcraft如何安装这个debian包呢?答案是使用dump plugin.为此,我们的snapcraft.yaml的内容如下:

snapcraft.yaml

name: mychrome # you probably want to 'snapcraft register <name>'
version: '0.2' # just for humans, typically '1.2+git' or '1.3.2'
summary: Chrome for snap # 79 char long summary
description: |This is chrome app in snap formatgrade: stable # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slotsapps: mychrome:command: desktop-launch $SNAP/opt/google/chrome/chromeplugs: [unity7,home,x11,opengl,network,network-bind,browser-support,process-control,fuse-support]parts:chrome:plugin: dumpsource: https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debstage-packages:- overlay-scrollbar-gtk2- libatk-adaptor- libgail-common- libcanberra-gtk-module- libnss3-tools- libglu1-mesa# language support- fonts-freefont-ttf- ttf-freefont- ttf-wqy-microhei- fonts-wqy-microhei# input method- fcitx- fcitx-frontend-gtk2 after: [desktop-gtk2]

在上面可以看出来,我们使用dump plugin来安装我们的google-chrome-stable_current_amd64.deb文件.

为了能够让我们的chrome正确运行,我们也同时把它所需要的其它的debian包一并打入到我们的snap包中.
    stage-packages:- overlay-scrollbar-gtk2- libatk-adaptor- libgail-common- libcanberra-gtk-module- libnss3-tools- libglu1-mesa# language support- fonts-freefont-ttf- ttf-freefont- ttf-wqy-microhei- fonts-wqy-microhei# input method- fcitx- fcitx-frontend-gtk2 
这些都是从Ubuntu Archive来的debian安装包,它们将最终被打入到我们的snap包中.也许有人问:为什么我们不可以用同样的方法(stage-packages)来打包我们的google-chrome-stable_current_amd64.deb?这里的原因就是它不来自于Ubuntu Archive,所以stage-packages不可以帮我们安装.在这里,我们由于在应用中需要中文的显示,所以我也把相应的语言字体包打入到我们的应用之中.对于其它语言的支持,开发者可以自己添加到语言的列表中.另外为了配合我们的输入法的输入,我也把相应的输入法的包打入到我们的最终的snap包中.
另外由于这个应用是一个gtk的应用,所有我们必须使用由desktop-gtk2所提供的desktop-launch来启动我们的应用.由于这个remote part必须是先于我们的chrome part,所有我们使用了after来调整在build过程中的先后顺序.
在这里值得注意的是我们使用两个非自动连接的plug/slot接口(interfaces):process-control及fuse-support.将来如果该应用发布到stable channel的话,并且我们不以--devmode的选项来安装,我们可以使用如下的命令来安装并需要做相应的手动连接:
$ sudo snap install mychrome
$ sudo snap connect mychrome:fuse-support ubuntu-core:fuse-support
$ sudo snap connect mychrome:fuse-support ubuntu-core:process-control

由于目前我的mychrom应用是发布到beta的channel里,并且还有个别的安全问题没有完全得到解决.我们可以使用--devmode来安装:

$ sudo snap install mychrome --beta --devmode

等安装完我们的chrome应用后,我们可以在我们的dash中找到相应的Chrome图标.我们可以直接使用这个图标来启动我们的应用:

我们项目的源码在:https://github.com/liu-xiao-guo/mychrome
在调试我们的应用时,我们可以在一个terminal中打入如下的命令:
$ sudo snap install snappy-debug
$ sudo snap connect snappy-debug:log-observe ubuntu-core:log-observe
$ sudo /snap/bin/snappy-debug.security scanlog mychrome

在另外一个terminal或在dash中直接启动我们的应用mychome,我们可以在上面的terminal中查看我们缺失的plugs或错误信息.通过这种方法可以帮助我们来调试我们的应用.

Snap Chrome浏览器及展示如何在snap中打入debian包相关推荐

  1. 本文将向您展示如何在 Flutter 中编码/解码 JSON

    本文将向您展示如何在 Flutter 中编码/解码 JSON. 导入dart:convert库: import 'dart:convert'; 使用: **json.encode()或jsonEnco ...

  2. Chrome浏览器保存微信公众号文章中的图片

    用chrome浏览器打开微信公众号文章中时,另存为图片时保存的是640.webp,不是图片本身,用IE则没有此问题.大部分chrome插件也无法保存图片. 经过多番尝试,找到一款插件可以批量保存微信公 ...

  3. Chrome浏览器的书签栏bookmarks bar 中显示移动设备书签mobile bookmarks

    文章目录 Chrome浏览器的书签栏bookmarks bar 中显示移动端书签mobile bookmarks 解决方法 参考链接 Chrome浏览器的书签栏bookmarks bar 中显示移动端 ...

  4. was服务器里面jar包_如何在was中解决jar包冲突

    如何在 was 中解决 jar 包冲突 大型的基于 WebSphere 的项目开发中,同一个 WebSphere Application Server (以下 简称 WAS ) 上会部署多个应用程序, ...

  5. chrome浏览器内存_如何在Google Chrome浏览器中清除内存

    chrome浏览器内存 The latest development builds of Google Chrome include a way to make the browser clean u ...

  6. 利用chrome浏览器的F12功能提取网页中的视频、音乐

    原文网址:http://blog.sina.com.cn/s/blog_6fa5aa4a010139dm.html 在我们平时上网看视频听音乐时都会产生缓存,但是我们很难通过一些软件把其中的视频和音乐 ...

  7. 谷歌Chrome浏览器将增强SOA在企业中的应用谷歌Chrome浏览器将增强SOA在企业中的应用

    在谷歌新 的浏览器Chrome被宣传为速度极快的浏览器的同时,Chrome浏览器也许在与SOA架构的沟通过程中发挥重要作用.谷歌的Chrome浏览器将允许 企业访问许多Web应用程序和服务.因为Chr ...

  8. 7、Chrome浏览器在Citrix虚拟应用会话中没有声音

    目录 一.前言 二.场景 三.临时解决方案 四.组策略彻底解决 一.前言 使用Citrix发布虚拟应用Chrome,服务器是Server2016和Server2019,音频没有声音.那我们今天主要讲解 ...

  9. python中如何创建包_如何在Python中创建命名空间包?

    TL:博士: 在Python3.3上,您不必做任何事情,只要不在名称空间包目录中放置任何__init__.py,它就可以工作了.在pre-3.3中,选择pkgutil.extend_path()解决方 ...

最新文章

  1. Linux上安装jdk并配置环境变量
  2. 支持鸿蒙的手机型号多少钱,华为鸿蒙系统支持手机型号一览
  3. 手把手教你安装鸿蒙和运行第一个Demo(js)版
  4. VTK:图表之CreateTree
  5. 《UML面向对象设计基础》—第1章1.5节消息
  6. c linux time微秒_qt linux系统获取当前时间(精确到毫秒、微秒)-Go语言中文社区...
  7. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛
  8. oci mysql_Oracle常用的OCI函数
  9. 云视通存储怎么不是24小时_降压目标不是一次血压正常,而是24小时血压都要正常...
  10. 移动端开发—流式布局
  11. 在Activiti中如何使用自定义的组织架构
  12. 台式电脑开机显示节电模式怎么办_台式电脑的开机密码忘记了怎么办?
  13. 仿iOS Segmented Control样式
  14. 软件开发设计文档模版
  15. 学计算机去一线城市,这5个“新一线”城市在线抢人,选择去这上大学非常有前景!...
  16. 管理服务之间的依赖关系
  17. 聚石塔,云鼎,多多云-----有一种坑叫盲打
  18. 虚拟化是什么,虚拟化主要分为哪几种?
  19. ⑦Java SE知识点回顾与小结(面向对象)
  20. cocos2d-x项目101次相遇:使用触摸事件移动 精灵

热门文章

  1. Day1.3 夜曲编程T63输出名字相同,相同字计数
  2. 人人都会的Android无埋点数据采集技术
  3. ip8plus多重_ip8plus多长
  4. 零比特填充算法 HUSTOJ-1076 21.1.7
  5. 作曲与计算机音乐,论计算机音乐与计算机作曲
  6. Unity 使用AVProVideo安卓端无法播放http视频解决办法
  7. Python:哔哩哔哩B站视频下载,我终于对小破站下手了
  8. Shiro中Session过期页面跳转回登录页面处理问题
  9. UiPath RPA 工具中的键盘快捷键
  10. 《CS信息系统建设和能力服务评估体系》资质的申请条件和流程