BAT的android應用會用到的第三方框架

前言:

在開發一個應用開始我們最先考慮的就是選擇哪些第三方的框架,這裏列出BAT這種千萬用戶量級別的應用,使用到的第三方框架。有人會好奇我是怎麼知道的,其實你反編譯後就知道了!

1.Android Design Support Library

這個並不是一個第三方庫,是谷歌官方出的支持庫。之所以列出來除了上面說的這個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文件爲止有效,在運行時不額外消耗性能。
有人覺得使用了這個庫之後代碼的可讀性差一些,這個真心不認同,相反,使用過後反倒代碼量少了好多,更清爽簡潔了。

關於編譯時註解效率的問題可以看下這篇文章關於 java編譯時註解你需要知道的二三事 。解除你的顧慮!


這個庫在Android Studio上配合android-butterknife-zelezny使用更酸爽!


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(https://github.com/nostra13/Android-Universal-Image-Loader)這個老牌庫,建議儘早替換掉它,這個庫已經停止更新了。而且無論是使用體驗還是性能都沒有以上庫好。


5.PullZoomView



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

這裏有必要再提一下這個庫在手勢處理方面使用到的ViewDragHelper,非常有用的一個工具類。
具體可以看下這篇文章Android ViewDragHelper完全解析 自定義ViewGroup神器



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

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

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


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

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

9.PagerSlidingTagStrip

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



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

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




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


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


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


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



14.materialish-progress



15.七牛
七牛雲存儲,是專爲移動時代開發者打造的數據管理平臺,爲互聯網網站和移動App提供數據的在線託管、傳輸加速以及圖片、音視頻等富媒體的雲處理服務。
說到數據管理平臺,我就會忍不住想到leancloud ,大學那會弄畢設有使用到它,文檔對開發者非常友好,一直印象很深刻。


16.shareSDK
ShareSDK是爲iOS、Android的App提供社會化功能的一個組件,幫助開發者實現社會化分享、登錄、關注、獲得用戶資料、獲取好友列表等主流的社會化功能。

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

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


19.小米推送

小米推送服務支持所有Android平臺,在MIUI上屬於系統服務框架,共享系統級長連接。

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


20.greenDAO
在所有將對象映射到 SQLite 數據庫中的 ORM 庫中,greenDAO 在性能方面佔很大優勢。而且文檔也很詳細。

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


21.CircleImageView

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



22.Crouton
這個庫功能類似於SnackBar,因爲官方已經出了SnackBar,所以作者停止了繼續更新這個庫。
關於SnackBar的用法 


23.BarcodeScanner
一個基於ZXing和ZBar的容易使用和擴展的條形碼掃描庫



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

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


25.PhotoView

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


總結:在架構一個項目時,考慮項目需要用到的一些技術知識是已經有成熟的框架的,就可以借鑑一下這篇文章!接下來準備寫一個通用的Android項目架構,集成第三方框架,到時候會上傳到git開源出來!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章