1. 程式人生 > >BAT的android應用會用到的第三方框架

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的理由應該不再成立。f
astjson 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開源出來!