為什麼 Android 上內置瀏覽器(不是 Chrome)的性能很差?

為什麼做網路服務的 Google 卻在 Android 上內置了性能那麼差的瀏覽器?

Android 4.2 之前瀏覽器性能之垃圾開發者都是知道的啊, 可以看 Google Code 上 Chromium 的 issues:

Stock browser is crap. The same web archive on the iPhone wipes the floor with even the most modern Android device. The Android team should hang their heads in shame.

(Android )自帶的瀏覽器是個垃圾, iPhone 輕鬆幹掉最新的 Android 設備。Android team 應該為此感到羞恥。


李楠的回答有誤導之嫌。而且這是他自己的提的問題,自己的回答還很有廣告嫌疑,這是要鬧哪樣?

關於Android內置瀏覽器,這裡有兩篇文章,基本能說明一些問題:

關於 Chrome for Android 你必須知道的 N 件事兒

http://www.oschina.net/news/22426/overview-html5-support-android/

為什麼Android不使用chrome,因為android是開源的,chrome不是,要將chrome作為android瀏覽器,那麼chrome必須開源。google已經表示會將chrome分階段開源,所以未來android內置瀏覽器會是chrome——原來的chrome主管都接管Android部門了,這最能說明問題,不過接管是在前不久發生的,所以不會很快看到結果。

再來回答LZ的問題,Android的內置瀏覽器性能問題,首先,它使用了V8引擎(維基百科:Android 頁面中查找V8), 其次,它支持部分HTML5,而且支持的部分也會越來越多,當然,與iOS相比是顯得落後了些。

關於HTML5,目前圍繞著H5的明爭暗鬥還很激烈,比如說在視頻標準上,H265和webM之爭,你能說誰對誰錯?firefox在HTML5 audio中還不支持mp3呢,你要求一個瀏覽器現在把所有的HTML標準都支持了,那是不現實的。


剛給投票第一的同學答案找了幾個bug,馬上被屏蔽了,好吧,開個答案說

Chrome的開源實現Chromium是一直存在的,它的代碼庫也包括移動端的實現,Chromium項目也有詳細的指導wiki 見 AndroidBuildInstructions 。我想說明的是Chromium的性能,兼容性,包括那位同學說的HTML5的實現都是跟chrome一致甚至有過之的,證據?

New Opera for android和&Go Team的新瀏覽器Next Browser&就是基於Chromium for Android實現,大家可以自己安裝測試就能知道我所言非虛。

#核對了一下,Next Browser其實不是基於Chromium的,確認基於Chromium現在只有New Opera一款App,感謝評論指正

&Chromium 和 Chrome 的區別只是在於是否集成了Google的一些同步服務,是問哪個廠家會把自己服務綁定一起開源?&

桌面Chromium和Chrome的區別可以看這裡 ChromiumBrowserVsGoogleChrome

Chromium for Android現在提供一個libchromeview.so的核心可供開發者調用。New Opera,Next Browser都是基於這個核心實現併合並了自己的上層UI邏輯。

「你也知道那玩意不能拼成chrome」

= = 呵呵

至於Meizu為什麼不用這套代碼來優化自己的瀏覽器甚至於還派一個代表在答案里反覆強調Chrome不開源,我只能抱著最大惡意的揣測,不是揣著明白裝糊塗就是真糊塗。

吐槽完畢,回歸主題。

眾所周知,Chrome和Android在Google屬於完全不同的兩個團隊,而Android是收購來的項目,其原生瀏覽器是一個基於Webkit的實現,而Chrome長期耕耘於桌面領域,近些日子才開始在移動端發力。

我相信Chrome和Android遲早會融合的,Pichai同時負責兩個部門可以看出一些端倪。為什麼動作這麼慢?我覺得原因有三:

  • 原生瀏覽器實現性能並非差到不可接受,很多Android用戶都發現原生瀏覽器的流暢度其實比Chrome更好,js性能也可以接受,其最大的痛腳其實是對Html5等新標準的兼容。而相對Chrome因為構架決定,需要更多的內存,CPU資源才能達到相對流暢,這也是Chrome for Android開發時間並不長並沒有得到充分優化導致的。原生瀏覽器相比Chrome更加適合現在Android的平均硬體水平。
  • 如上所說,HTML5新標準兼容是原生瀏覽器最大的問題,但放置於整個Android層面,這是不是一個問題?HTML5至今只是個草案,移動端開發其實還是以Native為主導,而且Google也為Native開發做了大量的優化工作,可以這麼說,Android甚至於整個移動領域並沒有走入HTML5時代。沒有必要為了兼容HTML5強制推廣Chrome。
  • Google其實並不是沒有Chrome取代原生瀏覽器的嘗試,比如Google幾個親兒子,反應出第三點。Chrome是包含了Google服務的,而Android和Google服務即GMS完全分離,Google是不能將閉源的Chrome相關實現加入Android code base。將來就算Chrome有可能進入Android的code base,也只能是以Chromium的形式,而或許以後某個版本會以Chromium為基準提供Webview控制項供app調用,我相信這只是個時間問題而已。


原生瀏覽器是AOSP的一部分 ,chrome不是,如果安卓內置了chrome那麼顯然其他公司不會答應,因此只在nexus系列中chrome是內置的。

原生的瀏覽器和chrome是兩個團隊開發的,而且11年的時候google就宣布安卓部門要開始使用webkit、Chromium的代碼了

更新 chrome lite也一開始就用了webkit


一個魅族無知工程師壞了不少人答題的興緻,好在樓上還是有強人hold住了場面~我隨便補充一下

首先4.x之前幾乎不存在什麼統一的Android體驗,瀏覽器也是如此,某些廠商比如三星的原生瀏覽器表現可圈可點,另一些比如MOTO就很糟糕,這點上無法一概而論。但僅就JavaScript跑分而言,談不上落後(說實在的,就算在pc平台上html5跑分都缺乏意義),主要體現在載入網頁的絕對速度上

使用Android瀏覽器縮放往往會有明顯的卡頓,這才是很多人認為其糟糕的原因,決定這一點的是兩平台的渲染方式,jb之前的Chrome lite(即原生瀏覽器)採用了即時渲染,而ios平台則使用截圖渲染,兩種方式互有優劣,但流暢性方面,顯然是後者更強~所以jb之後(或者ics之後?記不清了)的瀏覽器採用了截圖渲染,而jb之後的原生瀏覽器,口碑絕對是在臃腫的Chrome之上的

另外:Chromium是谷歌的開源項目,Chrome是其成果,但Chrome從來都不是開源的,Chromium的代碼只有確認穩定性之後才會進入Chrome,但僅就性能而言,無疑Chromium是更強的,我使用的Chrome canary是最接近Chromium的Chrome,各項跑分都要比stable版強一截

手機答題,混亂之處請多包涵。。。

===================

補充兩點:

1.上文完全沒提到魅族瀏覽器如何,魅族瀏覽器應該也是基於chromelite的,我上面已經說了,jb之後的chrome lite體驗強於chrome(Android自帶的瀏覽器稱為chrome lite,chrome for Android才是真正的chrome,這兩個請分清楚),mx2瀏覽器的口碑我也早有耳聞,我沒看明白這和我寫的主題有什麼關係。。。

2.一坨人吐槽我說上面那個工程師無知,卻選擇性無視了他斥責擁護原生瀏覽器者為「腦殘粉」的言論,就算煤粉們受到機器所限無法嘗試到谷歌原生jb瀏覽器的改進,從部分留言中也應該能看出來這個瀏覽器絕非一無是處,對「腦殘粉」的攻訐反駁一句「無知」,我認為已經是足夠理性而剋制的行為了


我覺得僅憑一條 issues就判定android原生瀏覽器是垃圾是不負責任的,因為 issues本來就是開發者提交bug,帶點情緒很正常。

android原生瀏覽器是chrome lite版,缺少一些桌面瀏覽器特性很正常,不過卻更輕便對移動網站支持更好,當然如果你手機硬體比較好,還是推薦完整的chrome、firefox或opera。這也是android系統比較好的一點,你可以選擇自己喜歡的瀏覽器。

事實上我不知道兩個不同操作系統上的瀏覽器有什麼比較的意義,而且還是脫離了手機硬體去比較性能。sarifi再好,android用戶能用到嗎?這種問題除了增加果粉和谷粉的口水戰談資意外,沒有任何意義啊


李楠的回答,其實並沒有正面回答題主的問題。他只是說明了內置瀏覽器性能確實很差。但沒有說明為什麼。

事實上沒有人知道 Google 為什麼這麼做,你只有去問 Google 決策層才可以知道。

從外人來分析,至少我可以說:這不是技術原因。

首先正面來說, android 之前的內置瀏覽器是不是性能很差?是的,確實如此,這一點作為一個靠譜的開發者不應當否認。

然後來說,為什麼呢?我們可以考慮一下 android 誕生的年代以及歷史。

我給的一個猜測是:android 之前的內置瀏覽器是面向性能很低的終端設計的,因為 Google 做 android 最初的一個目標就是要讓這個世界上有更多的 android 設備,有更多的人能用願意用並且用得起移動互聯網。所以其實它面向的是低配置移動設備。——這個瀏覽器砍掉了很多特性,故而在 html5 兼容性方面,肯定是不如 chrome。

為什麼蘋果可以秒 android 瀏覽器,這個答案也很簡單了,safari 只需要面對 iPhone,目標設備的性能不可能比 iPhone 更差,所以可以支持很完整的特性。

但是我們看到了,隨著 android 的發展,其實 android 設備的性能越來越強勁了,所以,是時候 Google 該出手糾正這個錯誤了。Android 4.2 內置 chrome 顯然是其動作之一。至於將來會不會讓 webview 直接用 chrome,現在說不準,將來或許會,誰知道呢?

無論如何,作為谷粉一枚,這是一個 Google 的錯誤,並且是需要糾正的錯誤。


以前的版本我不多說,只說現在的。

如果你打開較新版本系統的原生瀏覽器,在實驗室里打開快速控制,你會發現這個瀏覽器很cool。

全屏瀏覽,在小屏幕上有最好的體驗,從屏幕邊緣滑動拇指打開快速控制項,方便又極富科技感,這是未來安卓的秘密武器,先行體現在了瀏覽器上。

相比臃腫的國產甚至國外的大部分瀏覽器,原生瀏覽器的簡潔堪比當年chrome在桌面。

這款瀏覽器已經走在了前面,但你們的印象還停留在以前。

android剛出來的時候也很爛,不是嗎


對明明問題很大又不願意承認的 google 的腦殘粉無力吐槽。

在今天這個時間點上, Android 上的移動瀏覽器的確是落後的。(未來的畫餅那是另外一回事)

問題有些複雜,下面簡單分析一下:

1 Android 內置瀏覽器

落後在兩個方面

1.1 效能

Webkit 的優化不夠,再加上Google 的 V8 引擎並沒有用在內置瀏覽器上(或有變化,確認中),所以很多在 iOS 跑的很流暢的頁面, Android 上就特別悲劇。

這方面的問題,是手機廠家可以彌補的。因為內置瀏覽器是開源的。魅族的確為這個瀏覽器做了很多優化,比較重大的是利用 GPU 加速。他能戲劇性的改善瀏覽的體驗( 長頁面瀏覽的效果是超越 iPhone5 的)。但是,也說明原生的瀏覽器上, Google 做的有多麼不到位。

1.2 HTML5 支持

這方面內置瀏覽器一直落後於 iOS ,而且 Google 似乎現在已經沒有追趕的意思,差距離 iOS 越來越大。

2 為什麼 chrome for android 不是答案

Chrome for Android 做為 Android 平台的 HTML5 瀏覽器,同樣存在兩個問題。

2.1 非開源

本來, Chrome for Android 如果開源,第三方廠家可以對她提供更多的支持。比如現在魅族做的 GPU 加速。

但是,即使 Android 4.2 , Chrome 仍然沒有開源。這事情不知道要拖到猴年馬月了。

閉源的 Chrome for Android 本身寫的再出色,有 V8 引擎的支持,也無法讓廠家針對硬體做優化。所以效能上仍然存在遺憾 - 硬體能力無法被瀏覽器充分挖掘。

Chromium for android 則讓人進退兩難 - 其實他也不應該在這裡被討論,他不夠完善,也不是 google 的東西。

Chrome 根本沒有開源,你說他的表現和 Chrome for Android 一致不是扯淡嘛。Google 拉出一個分支做了什麼,誰都說不準。

別的答案中,下面這種看法錯的離譜竟然還有那麼多人贊同,我也只好再次無力吐槽(那個答案的評論里已經有人指出):

Chromium 和 Chrome 的區別只是在於是否集成了Google的一些同步服務

所以, anyway ,對廠家而言,上 chromium ,如果 Chrome for Android 最終開源,你還要換回來嗎?

2.2 無法支持 webview

內置 Apps 使用 webview 是今後 Apps/HTML5 進化的趨勢之一。

好處很多,比如可以直接支持 GA ,更方便的 AB Test,更少 App Updates,甚至 responsive design 。

iOS 這方面的技術已經相當成熟。Apps 內 webview 的界面可以亂真有多少人注意到 iOS App Store 是用 webview 實現的?

而今天使用這種 Apps + HTML5 的 hyper 做開發的 team 往往會發現, iOS 上跑得好好的頁面,拿到 Android 上就各種悲劇 - 這不是 Android Team 的恥辱,那是什麼?

而 Chrome for Android 雖然在 4.2 內置到了 Android 之中,卻不能被 webview 調用!

3 最後的話

個人懶得分析 Google 在 Android 瀏覽器上為什麼搞成這樣 - 動機其實也不重要。

但是,毫無疑問,目前的這種結果,是腦殘的。

Google 如果可以

  • 用 Chrome for Android 替換掉目前的內置瀏覽器

  • 開源允許第三方廠家結合硬體優勢做優化

那麼在 Android 系統上的瀏覽器,才能和 iOS 相提並論。

否則?目前最好的瀏覽體驗是分裂的。 MX2 上流暢度最高。而 Chrome for Android 上 HTML5 支持更好。

用戶總是不能同時得到兩者。

ps

利益相關:筆者在魅族工作。

另外這問題是我問的。並非我不會匿名提問,包括寫利益相關,是因為我歡迎各種"陰謀論":他們只能影射你自己。


安卓上的瀏覽器,只是安卓的一個「模塊」。是安卓系統開發團隊的一部分工作。你再看看iOS系統上的記事本、日曆等界面以及地圖,那也是一個奇葩。

而Chrome,它本來就是一個瀏覽器。而且是目前業界公認的No1瀏覽器。不論是專家還是用戶用腳投票都是這個結果。因為專註,所以優秀。


安卓自帶瀏覽器很好 懷疑題主沒有用過或是機能太差導致體驗不佳


經過多年對各種瀏覽器使用體驗,除了chrome之外,原生的瀏覽器體驗是做好的,性能快,訪問速度也快。之所以很多人覺得不好,原因如下:1, 原生的瀏覽器費流量。這個確實,原生的本來是給予美國那種高速便宜流量的環境下開發的,根本沒考慮中國畸形的高流量費。2,打開慢的同學建議換一個3000以上的機子,機子配置和iphone差距太遠,沒法和iPhone上的瀏覽器相比。3,原生瀏覽器做的不夠本地化。


現在Android和Chrome在同一個 product area下,有同一個SVP領導(後來變成谷歌CEO的劈柴哥)。當年 Andy Reuben 領導 Android, 劈柴 Chrome, 兩人互相看不慣,Andy又是一個飛揚跋扈的人,他絕對不會用Chrome的code。。


android SDK的webview太爛了,太爛了,太爛了。


主要問題是android是以java為基礎編寫的,ios以objective-c為基礎編寫的。ios的c系語言比安卓的java高效很多。佔用內存少,速度快。


推薦閱讀:

如何評價via手機瀏覽器?
從 PC 到手機,中國互聯網巨頭在瀏覽器這個領域做得怎樣?
知乎為什麼不兼容普通的手機瀏覽器?
UC 瀏覽器、Opera 瀏覽器、海豚瀏覽器、Chrome 瀏覽器這幾個手機瀏覽器各有什麼優缺點?
為什麼通過瀏覽器上網的智能手機用戶這麼多?

TAG:Android | 移動瀏覽器 |