一個千萬量級的APP使用的一些第三方庫

來源:互聯網
上載者:User

標籤:

背景
前段時間在調研第三方推送服務的時候,反編譯了一部分市面上比較流行的APP。其中一個無論是在設計還是功能上都堪稱典型,這款APP總使用者數超千萬(其官網資料),在國內某手機小幫手上支援率超97%。可見其受歡迎程度(APP的名字就不說了)。反編譯這個APP後發現其使用的第三方庫也很有代表性。這裡介紹下他們使用的這些第三方庫,給需要的童鞋一些參考。

1.Android Design Support Library
這個並不是一個第三方庫,是Google官方出的支援庫。之所以列出來除了上面說的這個APP有使用到它外,更多的是因為這個庫很強大~

這個庫和github上的很多開源項目是有很大關係的,material design的很多效果,同一種效果在github上有太多的實現,現在官方把部分效果標準化了。這裡注意不要和相容庫Android Support Library 混淆,雖然都是相容庫,但區別還是很大的。Android Design Support Library詳細介紹點這裡Android Support Library 官方文檔翻譯

2 butterknife
這個庫應該大家都耳熟能詳了,大牛JakeWharton的作品,github上star數量超一萬,可見其受歡迎程度。

這個開源庫可以讓我們從大量的findViewById()和setOnclicktListener()解放出來,其對效能的影響微乎其微,其自訂註解的實現都是限定為RetentionPolicy.CLASS,也就是註解到編譯出.class檔案為止有效,在運行時不額外消耗效能。

3.fastjson,gson
這兩個JSON序列化與還原序列化庫應該都熟悉的了,fastjson是阿里的,gson是Google的,準系統都差不多,至於為什麼兩個庫都出現在這個APP裡面,應該是APP版本的各個開發人員使用習慣不一樣吧,也有可能是使用的一些第三方庫依賴其中一種的原因。

這裡要提一下的是fastjson號稱是Java語言中最快的JSON庫,而且有專門針對Android精簡和最佳化的版本,體積減少了近一半。因為體積更大,為避免出現64K方法數限制而棄用fastjson的理由應該不再成立。fastjson Android版本

不過也許是因為gson是Google官方出的,文檔什麼的也更詳細,gson在APP內出現的頻率還是更高的。

4.picasso
這個是square 開源的一個強大的圖片下載和緩衝庫。很受歡迎,許多項目都有在使用這個庫。使用方式也很簡單。

關於圖片載入庫現在比較流行的還有Glide和Fresco。

Glide
Google員工私人項目,Google很多項目在用。picasso能做到的它都能做到,並且還支援gif。我在公司的項目中也使用的是這個庫。不過注意在使用這個庫給ImageView載入圖片的時候,ImageView設定 Tag的Id必須顯示指定。

關於Glide和Picasso這篇譯文有一個比較詳細的對比介紹 Glide VS Picasso(打算使用Glide的話注意看下這篇文章下面的評論)

Fresco
這個是FaceBook的開源項目,上面連結中有中文的詳細文檔。這個庫除了支援的圖片格式很廣泛外,最大的特性就是在記憶體最佳化這塊,使用這個庫能有效防止OOM情況的出現。

在5.0以下系統,Bitmap緩衝位於ashmem,這樣Bitmap對象的建立和釋放將不會引發GC,更少的GC會使你的APP運行得更加流暢。
5.0及其以上系統,相比之下,記憶體管理有了很大改進,所以Bitmap緩衝直接位於Java的heap上。
當應用在後台運行時,該記憶體會被清空。

不過這個庫非主流強大的功能使得這個庫體積有2M之大,使用起來也有點不太方便。

最後,如果你還在用Android-Universal-Image-Loader這個老牌庫,建議儘早替換掉它,這個庫已經停止更新了。而且無論是使用體驗還是效能都沒有以上庫好。

Really have no time for development… so I stop project maintaining since Nov 27 :(

5.PullZoomView
An Android custom ListView and ScrollView with pull to zoom-in.


6.SwipeBackLayout
An Android library that help you to build app with swipe back gesture.

一個能幫我們輕鬆實現右滑退出當前頁面功能的庫,這個庫也有使用在我們公司的項目中,不過花了不少時間在處理相容性問題上(有時間的話會把填過的坑分享出來)。

這裡有必要再提一下這個庫在手勢處理方面使用到的ViewDragHelper,非常有用的一個工具類。

ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number
of useful operations and state tracking for allowing a user to drag and reposition
views within their parent ViewGroup.

具體可以看下這篇文章Android ViewDragHelper完全解析 自訂ViewGroup神器

一個千萬量級的APP使用的一些第三方庫

swipeBackLayout.png

7.okhttp okio
這個庫也是square開源的一個網路請求庫(okhttp內部依賴okio)。據說現在已被Google使用在Android源碼上了,可見其強大。

這裡有一個大神張鴻洋開源的okhttp封裝庫okhttp-utils

關於網路請求庫,現在應該還有很多人在使用android-async-http。他內部使用的是HttpClient,但是Google貌似在6.0版本裡面刪除了HttpClient相關API,可見這個庫現在有點過時了。

不過我在android-async-http的官方Wiki上發現了這個:

8.volley
這個庫也應該比較熟悉了,Google官方出的一個庫,包含網路請求和圖片載入緩衝功能。在處理小而頻繁的網路請求上有優勢。

以前使用這個庫一般都是添加第三方依賴,比如android-volley 。現在已經有官方Gradle依賴了 。

compile ‘com.android.volley:volley:1.0.0‘

9.PagerSlidingTagStrip
Interactive paging indicator widget, compatible with the ViewPager from the Android Support Library.

這個庫使用比較也比較廣泛,實現ViewPage和頂部指標聯動滑動的效果。

10.Android-PickerView
仿iOS的PickerView控制項,有時間選擇和選項選擇並支援一二三級聯動效果

這個庫的作者還有另外幾個開源庫也很不錯的,有興趣的可以點上面連結去他的github上看下。

11.packer-ng-plugin
下一代Android打包工具,1000個渠道包只需要5秒

這個庫的作者mcxiaoke在下文還會出現的。

12.NineOldAndroids

Android library for using the Honeycomb animation API on all versions of the platform back to 1.0!

NineOldAndroids is deprecated. No new development will be taking place. Existing versions will (of course) continue to function. New applications should use minSdkVersion=”14” or higher which has access to the platform animation APIs.
Thanks for all your support!

View的屬性動畫在Android API 11及其以後才支援,該庫的作用就是讓API 11以下的系統也能夠正常的使用屬性動畫。不過該庫作者Jake Wharton(是的,又是這位大神)認為現在APP支援的最低版本應該是4.0了,所以不再更新了。

13.Logger
Simple, pretty and powerful logger for android

像作者說的一樣,簡單,漂亮,強大的一款日誌列印工具。

一個千萬量級的APP使用的一些第三方庫

custom-tag.png

14.materialish-progress
A material style progress wheel compatible with 2.3

一個千萬量級的APP使用的一些第三方庫

spinningwheel.gif

15.七牛
七牛雲端儲存,是專為移動時代開發人員打造的資料管理平台,為互連網網站和移動App提供資料的線上託管、傳輸加速以及圖片、音視頻等富媒體的雲處理服務。(來自百度百科)

說到資料管理平台,我就會忍不住想到leancloud,大學那會弄畢設有使用到它,文檔對開發人員非常友好,一直印象很深刻。

16.shareSDK
ShareSDK是為iOS、Android的App提供社會化功能的一個組件,協助開發人員實現社會化分享、登入、關注、獲得使用者資料、擷取好友名單等主流的社會化功能。

17.友盟+
這裡應該是用到了友盟的資料統計分析服務以及自動更新服務,不過要注意的是自動更新服務官方已經發聲明表示停止新註冊的APP和當前不再使用該功能的APP接入這項服務,已經在使用的在2016年10月15日之後也要停止服務了。

18.ViewPagerIndicator
Paging indicator widgets compatible with the ViewPager from the Android Support Library and ActionBarSherlock.

這個庫的作者是Jake Wharton(沒看錯,還是這位大神),功能和上面介紹的PagerSlidingTagStrip類似,一般與viewpager組合使用。用法看這裡

19.小米推送
小米推送服務支援所有Android平台,在MIUI上屬於系統服務架構,共用系統級長串連。

共用系統級串連可以這麼理解,理論上不管應用是否在後台運行,只要有網,就能收到推送。這個應該是此APP選擇小米推送的重要原因。在MIUI系統上,相比其它第三方推送有先天優勢。

20.greenDAO
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases. Being highly optimized for Android, greenDAO offers great performance and consumes minimal memory.

在所有將對象映射到 SQLite 資料庫中的 ORM 庫中,greenDAO 在效能方面占很大優勢。而且文檔也很詳細。

不過最近有一個比較火的跨平台移動資料庫引擎realm,支援iOS、OS X(Objective-C和Swift)以及Android。效能比原生的SQLite還要好。目標是要取代SQLite。可以多關注下。

Realm is a mobile database: a replacement for Core Data & SQLite

21.CircleImageView
一個使用很廣泛的圓形圖片庫

22.Crouton
I won’t do any active development for Crouton any more. But I still do accept pull requests that fix bugs.
So long, and thanks for all the forks.

這個庫功能類似於SnackBar,因為官方已經出了SnackBar,所以作者停止了繼續更新這個庫。

關於SnackBar的用法 看這裡

23.BarcodeScanner
Android library projects that provides easy to use and extensible Barcode Scanner views based on ZXing and ZBar.
一個基於ZXing和ZBar的容易使用和擴充的條碼掃描庫

24.Rxjava
從去年開始,RxJava+的文章就一直在國內網站各種刷屏了,最近還看到有公司招聘直接要求熟悉使用RxJava+Retrofit+OkHttp3了,可見其受歡迎程度。雖然這個庫的學習成本有點大,好在現在關於它的學習資料也很豐富。

很多RxJava的初學者應該都有看過扔物線的這篇文章 給Android 開發人員的 RxJava 詳解。
還有上面提到的mcxiaoke組織翻譯的文檔ReactiveX/RxJava文檔中文版。

25.PhotoView
Implementation of ImageView for Android that supports zooming, by various touch gestures.

支援通過各種手勢來縮放圖片的一個庫,現在很多的APP內都有使用到這個庫,很受歡迎。

一個千萬量級的APP使用的一些第三方庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.