非死book工程師是如何改進他們Android客戶端的

jopen 9年前發布 | 19K 次閱讀 Facebook Android開發 移動開發

原文出處: 非死book   譯文出處: penkzhou  

 非死book工程師是如何改進他們Android客戶端的

作為世界上最大的社交網絡,非死book的Android客戶端面臨著各種各樣的使用環境(地理環境、Android設備以及移動網絡等環境的 差異)。也正是這個原因,為了檢測自家Android客戶端在發展中國家的性能表現,Android的產品經理、工程師在2013年的時候去了一趟非洲。 當時我看到這個新聞的時候覺得有點怪異,后來看到他們這篇博客才有點理解他們這樣做的原因了。

這群非死book的工程師來到非洲之后,并在當地使用非死book的最新版本的Android客戶端。測試的結果的確讓他們印象深刻:

  1. 當地的網絡環境十分糟糕,App經常中斷網絡連接。
  2. 當地人民使用的Android設備內存小,導致App加載緩慢,而且經常崩潰。
  3. 他們的月流量在40分鐘之內就用完了。

經過這個讓人印象深刻的測試的之后,非死book的工程師們開始對他們的Android客戶端進行了一系列的優化。

性能優化

這里主要是改進了App在低端機上的性能問題。

  • 問題:單核的Android手機在啟動非死book的時候更慢,這是因為app在啟動的時候并行初始化了多個模塊。
    解決方案:在單核手機上延緩這些初始化過程到啟動之后,甚至只有在某個模塊要被使用的時候才開始初始化這個模塊。
  • 問題:信息流在網絡環境差時加載速度慢。
    解決方案:盡早地從服務器抓取信息流數據,用更多的時間來建立連接,并下載信息流的內容。

最終的效果是App的啟動時間減少了50%。

數據處理效率的優化

非洲的旅程讓工程師們發現流量在發展中國家非常昂貴,而且作為非死book重要體驗一環的照片則是流量花費的大頭,于是為了讓人民在不擔心流量的前提下安心享用非死book,工程師們決定對App里面的照片動刀:

  1. 尋找現有圖片格式的替換者。經過工程師們的調研,在眾多的圖片格式中,最后工程師選擇了Google的WebP。 原因很簡單:壓縮效率高,而且對Android的支持好(畢竟就是Google提出來的)。使用 WebP 之后,相對于JPG格式的圖片,流量省了將近 25% 到 35 %;相對于 PNG 格式的圖片,流量省了將近80%。最重要的是使用WebP之后圖片質量還沒改變。
  2. 按照設備處理圖片的能力來加載圖片。在之前,非死book的App都是統一加載最大分辨率的圖片,這樣做是為了讓用戶可以自由的縮放圖片。后 來改進之后,app最先加載的圖片大小適合顯示這個圖片窗口大小一樣。如果需要縮略圖,app就只加載縮略圖大小的圖片,用戶需要更高分辨率的圖 片,app也能加載,而且之前的統一加載最大分辨率的圖片了。
  3. 調整緩存和重用圖片的策略。工程師測試了不同的緩存策略,不同的緩存大小,最后綜合出最優方案。

最后的效果也是講流量花費減少了50%。

網絡優化

由于許多地區的網絡環境比較差,這讓非死book的App的體驗也變得十分糟糕,于是工程師也對app的網絡效率和可靠性進行了一番改進。

  1. 使用OkHttp。非死book 很早就開始使用Square公司開發的 OkHttp(一個開源的網絡協議棧)了,現在Google 官方也從Android 4.4開始使用 OkHttp作為HttpURLConnection的默認實現了。  OkHttp 支持在糟糕的網絡環境下面更快的重試,并且還能利用 SPDY 協議進行快速的并發網絡請求。
  2. 利用Okhttp調整圖片的預先抓取算法,確保app中下載隊列前面的圖片被優先處理,防止隊列阻塞時間過長。

經過優化后,圖片加載慢或者加載 失敗的反饋少了將近90%。

App文件大小優化

工程師在非洲的時候發現人們使用數量最多的手機磁盤空間很小,也就是說這給用戶升級帶來的障礙,進而可以推斷這些人們因為手機的空間問題而一直使用 舊版本的app,那么他們也就無法升級享受前面提到過的優化后的app體驗。于是工程師開始致力于如何對app文件大小進行優化:

  1. 利用Google Play提供的功能為不同的Android版本、不同的Android屏幕分辨率的手機提供不同的安裝文件。這樣就可以在不同的設備上面進行功能的取舍了。
  2. 當然在這個過程中需要監測工具和測試工具來保證優化app文件大小之后app功能的正常性。現在非死book的工程師已經開發出一套可以計算每個特性對非死book Android App貢獻了多大的空間。

經過優化之后的文件大小減少了將近65%。

反思

非死book 工程師們的非洲之旅讓他們更加理解了移動app性能、數據處理的有效性、網絡的可靠性以及app的文件大小對發展中國家移動市場意味著什么。

工程師在這之后開始對每次app新添加的特性都會進行各方面的測試驗證,而且非死book還有一套工具可以直接獲得用戶對這些特性的反饋,而且工程師開始將這些實踐延伸到 Messenger 和 Instagram 的Android App。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!