Android 版 Chrome 瀏覽器為什麼遲遲不支持擴展程序?

PC版的Chrome支持很多擴展程序,確實挺方便,Android版稱是「簡潔高效的瀏覽體驗」,確實很簡潔,但總感覺簡潔得太極端了。


也許當chrome和android融合的一天,android也能利用NACL這個PPAPI插件來跑原生代碼的web app。

---------------------------------

先統一下擴展(Extension)和插件(Plugin)

在瀏覽器的概念里,Plugin僅是通過NPAPI/PPAPI/ActiveX這些介面運行的二進位程序,這些程序給予瀏覽器本身不具備的能力,來提供服務:

最常見的是Flash player,網上的視頻大多依然是通過包裝在ActionScript編寫的flash程序播放的。

NACL,在未來,google chrome可以獲取預先編譯為LLVM位元組碼的webapp,下載到本地後編譯為本地二進位代碼來高效又適應多平台地運行(這就是google給chrome設計的未來)。NACL目前通過PPAPI介面與瀏覽器通信。

所以瀏覽器在這裡僅僅是一個包裝器(wrapper),它僅為插件提供了運行的環境,如一個訪問受限以保證安全的沙盤。

Extension利用了瀏覽器本身就擁有的能力,來達成瀏覽器未去做的事項,換句話說,對於擴展而言,執行者依然是瀏覽器。

Chrome從某一個版本開始提供了一套叫做WebRequest的API供擴展程序使用。從這個版本開始,Adblock plus等內容審查擴展才能真正達到「顯示前阻止下載」的作用。

Chrome Store的WebApp則結合了Extension和Plugin的特性。

---------------------------------

Firefox的移動版本在允許擴展程序的道路上碰了不少釘子:

最早的移動版firefox和桌面版都用XUL來繪製界面,因此原先的擴展程序只要很少的改動就能直接放到移動版firefox用。

但是XUL很臃腫,在Android的性能很差,特別是在Android Jelly Bean講究60幀順滑體驗的今天,更加顯得突兀。所以,Mozilla就直接用Android給出的圖形API來繪製移動版Firefox的界面,如此顯示性能得到了確保,可是擴展里涉及到界面布局的代碼全部失效。

另一個問題是,在手機的小屏幕上,擴展程序的入口(如圖標)應該放在哪裡?它不能再像桌面版那樣隨便擺個圖標,甚至用整整一行來布局。

此外,還涉及到其它問題:

1,內存,Firefox的擴展程序普遍都有很嚴重的內存泄漏,拿到移動端可能是場災難。

2,對於應用程序而言,延長電池續航的唯一辦法是減少CPU佔用。

先不說8核版的Galaxy S4的處理器理論上能在一個小時內榨乾電池,如果這件事情被允許發生的話,這台 手機一定先以自燃,或CPU過熱燒毀為結局。僅僅是這塊Exynos5410的四個cortex A15 CPU模塊就能在滿負荷時消耗掉不止六瓦特的功率。所以應用程序應該想方設法減少CPU的使用/提高執行效率,以減少能耗。

有人會說,過濾掉網頁上的廣告豈不能減少渲染它們的耗電?是的,這沒錯,adblock plus確實有適用於目前移動版Firefox的版本。

我覺得通過比較Android版的Mozilla Firefox和Google Chrome,可能會得到有意義的結論。


yandex 手機版


推薦閱讀:

少林寺方丈釋永信為什麼造訪谷歌總部?
在谷歌北京/上海實習是什麼樣的體驗?
為什麼在 Google Chrome 瀏覽器官網下載不下來瀏覽器?
谷歌中國到底是獨立的公司,還是美國谷歌的一個辦公室、一個部門?

TAG:GoogleChrome | 插件 | 谷歌Google | Chrome擴展程序 |