專訪 · 夸克瀏覽器技術團隊:極簡產品背後的技術美學

已禁用發表於2017-11-13

去年10月末,夸克瀏覽器橫空出世。憑藉「極簡」主義的情感化設計以及無資訊流、無干擾、沉浸式瀏覽的設計,吸引了大量使用者的眼球,2.0版本上線引入的「輕應用」也顛覆了傳統瀏覽器的形態,令人耳目一新。夸克瀏覽器打出的口號是「由簡致極 迴歸初心」,王自如也評價:UC 在獨善其身,夸克是兼濟天下。一個瀏覽器如何兼濟天下?掘金編輯 Linmi 帶著同樣的問題,對夸克瀏覽器研發團隊進行了一次線上專訪,嘗試從技術的角度回答這個問題。

人不在多,有碼則行

李志明:

夸克瀏覽器 Android 和 iOS 兩個平臺都有。Android 端有5人,iOS 端有3人。隨著產品完善,需求逐步減少。目前 Android 端有 2人,iOS端 1 人,後面兩個平臺會保持 2人左右的開發人力。當然,我們有近百人的核心開發團隊,這是夸克瀏覽器跟 UC 共用的。 團隊的兩位同學。 @劉智藝 是負責夸克 iOS 的同學, @張惠鈞 是負責夸克 Android 的同學。他們都是開發經驗非常豐富、產品感很好的開發人員,有問題也可以詢問他們哦。@張惠鈞 是酷安的小網紅了,暱稱「怕冷的瘦子」,在酷安跟夸克的愛好者打成了一片。

強大核心與卓越外殼協同減少快取與應用體積

Linmi 問:

我剛剛去酷安看了一下,看到惠鈞有發一個關於瀏覽器快取對比的圖片,夸克瀏覽器的快取只有1.45M,而某瀏覽器有13.9M,想知道夸克瀏覽器是如何進行優化,將快取減少到只有其他瀏覽器的十分之一的?


專訪 · 夸克瀏覽器技術團隊:極簡產品背後的技術美學
專訪 · 夸克瀏覽器技術團隊:極簡產品背後的技術美學

張惠鈞 答:

其實這個問題存在一些誤會,瀏覽器的快取資料大小跟使用者的使用時長有關,夸克在使用較長時間後資料也會增長。

但是在同等使用條件下,夸克的快取資料處理是很有優勢的,一方面有賴於我們背後強大的核心團隊,它們在核心模組做了十足的優化;另一方面,我們外殼(相對於核心部分就是外殼)在快取資料的處理策略上也下了功夫,會智慧地根據使用者的使用情況、手機情況去動態幫助使用者處理過時的、不需要的資料,讓瀏覽器保持乾淨。

Linmi 問:

我剛剛對比了手機上的夸克和 Chrome ,快取相差已有百倍。惠鈞剛剛也說了夸克團隊在快取資料的處理策略上下了功夫,那麼夸克作為一款多端產品,iOS 和 Android 兩端的快取優化的技術方案上有什麼異同?

我使用 App Store 下載夸克時,發現應用大小有29.3M,再去看 Android 應用市場,應用體積也達到了21.8M,和同型別的產品體積差不多,但是夸克的介面卻沒有同類產品複雜,那夸克這 20M 體積包含了什麼?

張惠鈞 答:

我來回答下第二個問題:

夸克是在去年10.31上線的,當時安卓版的大小是18+M,經過一年的版本迭代,逐漸達到了現在的21.8M;

這個包體大小,佔用最大的是我們強大、高效的核心,其大小是14+M;
剩下的部分則是我們外殼的程式碼和資源(圖片、文字等);

iOS部分由@劉智藝補充~

劉智藝 答:

對於第一個問題,應該說兩端在快取優化的技術方案上並沒有什麼差異。

第二個問題,對於 iOS 也是相似的,包 size 內容包含了我們以 gruop 為單位專案通用元件,大部分 UC 團隊的技術沉澱,雖然我們較 Android 端來說沒有一個成塊的核心,但是優秀的網路協議層、WebView 修飾技術、視訊託管服務等藏在深處的使用者服務支援能力,都是需要必須但並不大的 size 作為前提。
而且因為 bitcode 的支援,理論上來說 AppStore 顯示的包 size 是包含所有機型處理器的可執行檔案,而下載下來則不然。

Linmi 問:

由應用大小我想到了應用瘦身,掘金上經常有作者釋出應用瘦身的相關文章。我所瞭解的有圖片資源瘦身,對一些不必要的庫進行精簡。除了我說的那些,夸克團隊的同學對應用瘦身方面,可否分享一下相關經驗?

劉智藝 答:

恩,是的。一般應用瘦身方案針對就這兩點,庫的精簡摘除主要是開發人員純人力的工作,而資源瘦身是有一定的技巧可尋的,業界常用的一般就是壓縮、選取最優格式支援、複用。UC 系列 App 的瘦身工具其實也是應用前端開發常用的雪碧圖原理,這裡可以提供下歷史資料,UC 110M~80M,夸克 26M~24M。對於我們需要兼顧日夜切換和高清顯示的業務需求,資原始檔的確是包 size 大頭。

除了 U4 核心,更搶眼的是輕應用

Linmi 問:

很感謝你的回答。
我回顧一下剛剛夸克團隊同學的回答,多次提到了強大高效的核心。那麼,這個核心強大高效在哪裡?夸克瀏覽器在應用適配這個核心時,是否有相關踩坑經驗可以分享一二?

張惠鈞 答:

核心部分是瀏覽器的核心基礎,有很多特性的都離不開它。

我們用的核心跟 UC 是同一套的,都是 U4 核心,這是 UC 在瀏覽器行業十多年來的經驗和技術積累的產物。它強大在哪?從使用者的角度直觀地說,快速載入網頁、深度廣告過濾(包括手動標記廣告),友好的網頁排版(支援適應螢幕,部分網頁重排版),出色的視訊播放體驗等等都離不開核心的支援,當然還有很多其他功能。。

適配核心過程還好,沒什麼特別的坑。只是由於我們核心有很多自己的特性,所以介面會跟原生的系統核心有差異,這個時候就是考驗我們外殼的對接框架層的架構設計了。

當然,夸克能俘獲眾多使用者的喜愛,除了核心的強大,也離不開外殼的支援。使用者喜歡的其他特性,如毫秒級的啟動速度,絲滑般的操作體驗,炫酷的動畫與介面,極速的下載速度等等都離不開我們外殼同學的努力。

Linmi 問:

惠鈞剛剛有提到外殼的支援,我仔細體驗了一下夸克,發現夸克內建相關網站導航,並且對某些網站做了適配,使用起來像是原生應用一樣,對這些網站適配是隻是單純挨個站點適配,還有什麼相關黑科技?

張惠鈞 答:

我猜你說的是我們的輕應用吧,非常有眼光,它是我們夸克2.0改版後的一個新功能;

關於這塊,我們並非挨個站點去適配的,確實存在小小的黑科技:
首先,這塊我們是跟「輕芒閱讀」團隊合作的,「輕芒」在這型別的功能已經有十分成熟的技術,跟他們的合作很愉快;

其次,在實現上,我們採用了基於阿里 Weex 改版的 UCWeex 框架搭建,Weex 是一個跨平臺的框架,程式碼寫一份即可在 iOS 端和 Android 端雙端通用,所以現在輕應用的優化都可以由兩個以上的人力縮減到一個人來完成;你們所感受到的原生應用的體驗也是在 Weex 框架上就能實現到;

最後,不少人第一次用輕應用的時候,都會誤以為這是商業化,是赤裸裸的廣告。然而,大家都誤會了,上線輕應用,是我們為了讓使用者有更好的無廣告、良好的原生體驗所做的嘗試,我們所抽選的站點都是我們的使用者最常訪問的,使用者評價最好的一批站點。這個不僅僅不是廣告,而且我們還要為這個功能付出一定伺服器的費用。當然,目前輕應用功能還沒完全成型,我們還會繼續探索和完善。

嚴格遵守規範開發

Linmi 問:

看到惠鈞說和外部有相關合作,那團隊內部是怎麼合作的呢?是否能分享一下夸克團隊的工作流程,比如開發中相關規範和工具,團隊的 CodeView 是怎麼進行的?

輕應用是非商業化功能,那麼夸克未來會進行商業變現麼?變現方向可否透漏一二?(涉及商業祕密可以不說哈)

順便提一句:看到輕應用上沒有掘金,我現在最想說的就是求加上掘金啊!?

張惠鈞 答:

跟大部分團隊一樣,我們也是有自己的一套開發規範,也是 UC 的開發規範,所有程式碼規範、程式碼質量、程式碼提交格式等都是嚴格遵循規範來走
我們的開發環境還是大家熟悉的 AndroidStudio,版本管理是 Git,CodeView 用的是 Gerrit,文件記錄和管理用的是Confluence。

關於商業化變現,大家可以放心。雖然夸克的崛起已然具備了極具潛力的商業價值,平時和會有一些廠商跟我們接觸探討,但可以肯定的是,近階段商業化不會是我們的重心,目前都沒有做商業化功能的計劃。可以稍微透露一點,憑藉傳統的搜尋分成,我們目前過得還挺好,所以我們在商業化方面並不急,也絕不會貿然照搬現成的商業化模式,至於到底會怎樣,那都是後話了。

PS:輕應用未來肯定加上大掘金的

Linmi 問:

謝謝!
關於程式碼質量可否簡要說一下,作為開發者,對一些大廠內部技術還是想了解一下。

張惠鈞 答:

一般情況下,我們提交程式碼都是需要通過 CodeReview 的,尤其是要傳送給模組 Owner 去 Review,只有 Review 通過才能提交;

在平時我們也有很多自動化的測試、效能測試等來監控我們的程式質量;

在釋出前,我們會讓團隊裡所有人花上半個小時左右時間去進行眾測,大家都需要測試不是自己負責的模組,保證上線前一些明顯的問題提前發現並解決;

大概就是這樣子~

李志明 答:

關於自動化測試這一塊,我補充下:
Android 平臺,我們使用 Robolectric+JUnit 的單元測試框架。對於非 UI 相關的程式碼,比如關鍵的 Model 或業務邏輯,我們會寫單元測試。團隊成員 push 程式碼前,需要自己執行所有的單元測試(通過執行一個指令碼),確保所有單元測試 case 通過,才可以 push 程式碼。另外,主線的每一次程式碼提交都會自動觸發伺服器執行單元測試,如果單元測試的 case 不通過,程式碼提交人和開發團隊會收到郵件報警。

將通過掘金專欄對外輸出

Linmi 問:

自動化開發的確省時省力,這時候我想到了夸克團隊內已經有相關成熟體系了。那夸克團隊是否有對外輸出,對技術輸出態度是什麼樣?比如怎麼看待開源,是否鼓勵團隊對外輸出開源專案?

李志明 答:

我們從開源的技術獲得了很多,比如剛剛說的 Robolectric,以及我們用來實現Doodle的 Lottie. 我們也很樂意能反哺開源社群。但目前我們面臨的一個問題是團隊精力不夠。開源的技術文件、維護是比較耗時間和精力的。所以短期沒有打算。但長期,當我們團隊有一定的時間富餘後,我們希望能做這個事情。目前,我們還是專注於做好產品,還有很多使用者反饋的問題待解決。雖然比起同類產品,夸克很出色,但離我們心中完美的瀏覽器還有大段的距離。但是一些技術分享的事情,我們已經籌劃在做了。比如,在貴平臺上發專欄的技術文章(夸克瀏覽器技術團隊掘金專欄),希望跟掘金的讀者多交流~

王者榮耀五黑缺人,瘋狂招聘中

Linmi 問:

哈哈,很開心夸克瀏覽器的小夥伴能來掘金這個技術平臺做輸出,歡迎!
聊完技術話題,那我們聊聊夸克團隊生活作為結尾,比如夸克團隊業餘時間都在做些什麼?團隊的福利,團隊的激勵措施等等…..

李志明 答:

團隊的業餘時間聊得最多的是技術和創意。我們經常在週五下午週會的時候,帶上一大堆零食,由某個成員作主題分享,或大家一起討論技術和創意。一些好的創意和技術會用在我們的產品上或申請專利。午飯後,愛好王者的同學也會開黑。以前常常在會議室跟其他團隊55開黑,現在集體開黑就比較少了,因為有些人棄坑了,也有些人迷上了吃雞。團隊和公司的福利主要是團隊活動,比如集體看電影、吃飯、年度旅遊。團隊的激勵有松果獎、戰功獎、年終獎。申請專利也會有專利獎金。

看來,夸克瀏覽器不僅手握 U4 核心這個積累多年的利器,還有一隊追求極致的工程師。不光從產品功能上兼濟天下,更從團隊內部開始,用技術「兼濟天下」。

夸克瀏覽器技術團隊
夸克瀏覽器技術團隊

恰好,夸克在招 iOS 研發,尋找技術和產品都追求極致的同道中人,有意者都請把簡歷發到 quark-dev@alibaba-inc.com。 另外,夸克所在的阿里巴巴移動事業群(UC)正在招兵買馬→UC招聘。掘金的同學們直接砸簡歷吧!

掘金專訪的目的是幫助大家瞭解不同的開發團隊,通過簡單的問題一窺各公司的技術氛圍、研發體系和團隊風氣。如果您有想了解的開發團隊,或者您所在的開發團隊想與社群有更廣泛的交流。歡迎聯絡 YoungZ。微信:sunmatter

相關文章