记一则Chrome与Unity(11.10)整合问题的修复

标签: chrome unity 问题 | 发表时间:2011-10-27 09:12 | 作者:(author unknown) 酿泉
出处:http://imtx.me/

Unity作为Ubuntu的主打桌面环境,在与各种应用软件的集成度上在有着天然的优势。比如Launcher的Thunderbird会显示未计邮件数,Chrome浏览器则会在Chrome下载东西的时间显示当时下载的数量及进度条。

然而在Ubuntu 11.10当中,这个整合性在Chrome上却不见了。开始我以为这是Unity的bug,然而作为一个Hacker,是不能这样胡乱猜测的…于是我开始了Chrome源码之旅……

在Chrome(具体说是开源的Chromium当中),我找到了与Unity整合相关的源码,在「chrome/browser/ui/gtk/unity_service.cc」中,有这么一句:

void* unity_lib = dlopen("libunity.so.4", RTLD_LAZY);
  if (!unity_lib)
    return;

答案已经很明白了,是Chromium利用dlopen的形式动态加载libunity的库以整合进Unity环境当中,并且在后面的代码里利用了「dlsym」来调用具体的function。

Chromium写死了「libunity.so.4」,这是Ubuntu 11.04提供的libunity版本,而在Ubuntu 11.10当中,已经没有这个了,而是:libunity.so.6。

这时Workaround也想到了,只需要链接一个libunity.so.6至libunity.so.4,Chrome又能与Unity很好的工作了,如图:

Ubuntu 11.10 Unity and Chrome

Workaround只是方便自己,最好还是将这个问题解决在上游当中,毕竟解决这个问题也不难。由于没那么多时间去学习Chromium的patch提交流程,还要花很多时间去设置开发环境。因此我只是简单的报了一下Bug:Issue 101857: Ubuntu Unity integration needs update

如果有哪位认识Google的Chromium工程师,或者有提交patch经验的,可以帮助加快修复这个问题,这样我们就能下个版本的「Google Chrome 16」中见到它与Unity的完美整合了!

一些想法:

  • 直觉和经验判断可能是错的:因为之前对Unity的印象(bug多),所以出现问题我第一时间就想到是Unity的问题,而事实并非如此;
  • 面对一个巨型项目,hack也不难:Chromium是一个异常巨大的开源浏览器项目,想掌握它的源码可是要费不少功夫。但是越是这样的的大项目,其结构组织就越有条理,如果只是修正一个小问题,是很容易找到着手点的。

所以分享这么一个小故事,只是想跟大家说,开源项目与闭源项目一样,都会有各种各样的问题,但是开源项目给了你修正这些问题的可能性。碰到问题的话,可不要撒手不管,抓住这么个机会来锻炼自己吧,即使报告一个bug,也是对自己和对整个项目生态圈都是有帮助的。

相关 [chrome unity 问题] 推荐:

记一则Chrome与Unity(11.10)整合问题的修复

- 酿泉 - Linux桌面中文网
Unity作为Ubuntu的主打桌面环境,在与各种应用软件的集成度上在有着天然的优势. 比如Launcher的Thunderbird会显示未计邮件数,Chrome浏览器则会在Chrome下载东西的时间显示当时下载的数量及进度条. 然而在Ubuntu 11.10当中,这个整合性在Chrome上却不见了.

Unity优化总结

- - CSDN博客推荐文章
    我们的游戏已经在wp8、ios和android平台上线了. 这是我做的第一个Unity项目,期间遇到过不少困难和挫折,但是我和小伙伴们一路摸索,现在,游戏已经上线一段时间,并且很稳定. 对于Unity,我一直在项目中学习,我会写一系列的文章记录自己的学习,希望看到文章的朋友多多交流.     项目中后期,我做了一些优化工作,这里记录总结一下.

解决Chrome浏览网页自动保存的问题

- Kofai - 月光博客
  在中国电信ADSL环境下,使用Chrome浏览器上网的时候,经常会出现一个奇怪的问题,就是上网点击一个链接,Chrome并没有正常浏览该网页,而是自动将该网页下载到本地,而此情况在IE浏览器下并没有出现.   原以为是Chrome浏览器的BUG,也试着重新安装了,发现偶尔还是出现这种情况,每次无法访问网页的时候,使用IE浏览器打开就正常,而在IE浏览器下则有时会弹出中国电信的广告.

Chrome Dev 升级到 16.0.899.0,修复中文字体渲染问题

- Eric - 谷奥——探寻谷歌的奥秘
感谢读者 Happy Lun 和 cnliuyong 的提醒. Chrome Dev分支for Mac/Windows/Linux和Chrome Frame升级到了16.0.899.0,主要更新:. Javascript V8引擎升级到3.6.4.1. FTP修复跟ftp.comconlink.co.za的兼容性问题.

Ubuntu 11.04 上安装最新版 Unity

- 亚 强 - Wow! Ubuntu
最新的 Ubuntu Unity 桌面环境已发布,版本号为 3.8.16. 主要是修复了大量的 Bug,详细内容见 ChangeLog. # Ubuntu 11.04 用户可通过这个 PPA 来保持更新. # 本文采用CC协议进行授权,转载本文请注明本文链接. - Twitter / Buzz / 微博 / 问答 / 投稿 / 加入我们 wow0slx6bcs721xo1udcc.

在线体验Ubuntu Unity的魅力

- 龍渊冭子 - cnBeta.COM
UBuntu为了让没用过Ubuntu的朋友体验一下Ubuntu的魅力,于是开发了一个Ubuntu online tour,网页版的Ubuntu. 可以模拟里面的软件,比如我现在正在打开的Firefox:.

支持 Unity 的 Evolve GTK3 主题

- Quantum - Wow! Ubuntu
Evolve 是一款基于  Adwaita theme engine 制作的轻量级 GTK 主题,白色风格,它同时支持 Gnome Shell 3.2 及 Unity 界面. 解压缩下载的 Zip 包,再解压缩里面的 tar.gz 文件,得到一个 Evolve 文件夹. 把这个文件夹复制到 "~/.themes/" 或 "/usr/share/themes/" 目录下.

Unity、GNOME和Windows 8被批垃圾

- 请叫我火矞弟 - Solidot
微博控 写道 "ZDNET知名博主Ken Hess ,有着在大型数据中心超过15年的工作经验的资深 Mac、Linux、Unix 和Windows 系统管理员,11月8号发文大骂 Unity、GNOME 和 Windows 8 :我特别希望现在设计计算机的人能给人们带来高效且实用的东西,我不喜欢折腾那些低能垃圾,如果你想吸引更多的观众,请别用低能这种方式.