前言:
在開發(fā)一個應(yīng)用開始我們最先考慮的就是選擇哪些第三方的框架,這里列出BAT這種千萬用戶量級別的應(yīng)用奈应,使用到的第三方框架澜掩。有人會好奇我是怎么知道的,其實你反編譯后就知道了杖挣!
1.AndroidDesign Support Library
這個并不是一個第三方庫肩榕,是谷歌官方出的支持庫。之所以列出來除了上面說的這個APP有使用到它外程梦,更多的是因為這個庫很強大~
這個庫和github上的很多開源項目是有很大關(guān)系的点把,material design的很多效果,同一種效果在github上有太多的實現(xiàn)屿附,現(xiàn)在官方把部分效果標(biāo)準(zhǔn)化了郎逃。
這里注意不要和兼容庫Android Support Library 混淆,雖然都是兼容庫挺份,但區(qū)別還是很大的褒翰。
Android Design Support Library詳細(xì)介紹點這里
Android Support Library 官方文檔翻譯點擊打開鏈接
2. butterknife
這個庫應(yīng)該大家都耳熟能詳了,大牛JakeWharton的作品匀泊,github上star數(shù)量超一萬优训,可見其受歡迎程度。
這個開源庫可以讓我們從大量的findViewById()和setOnclicktListener()解放出來各聘,其對性能的影響微乎其微揣非,其自定義注解的實現(xiàn)都是限定為RetentionPolicy.CLASS,也就是注解到編譯出.class文件為止有效躲因,在運行時不額外消耗性能早敬。
有人覺得使用了這個庫之后代碼的可讀性差一些,這個真心不認(rèn)同大脉,相反搞监,使用過后反倒代碼量少了好多,更清爽簡潔了镰矿。
關(guān)于編譯時注解效率的問題可以看下這篇文章關(guān)于 java編譯時注解你需要知道的二三事琐驴。解除你的顧慮!
這個庫在Android Studio上配合android-butterknife-zelezny使用更酸爽!
3.fastjson秤标,gson
這兩個JSON序列化與反序列化庫應(yīng)該都熟悉的了绝淡,fastjson是阿里的,gson是Google的抛杨,基本功能都差不多够委,至于為什么兩個庫都出現(xiàn)在這個APP里面,應(yīng)該是APP版本的各個開發(fā)者使用習(xí)慣不一樣吧怖现,也有可能是使用的一些第三方庫依賴其中一種的原因茁帽。
這里要提一下的是fastjson號稱是Java語言中最快的JSON庫,而且有專門針對Android精簡和優(yōu)化的版本,體積減少了近一半屈嗤。因為體積更大潘拨,為避免出現(xiàn)64K方法數(shù)限制而棄用fastjson的理由應(yīng)該不再成立。fastjson Android版本
不過也許是因為gson是Google官方出的饶号,文檔什么的也更詳細(xì)铁追,gson在APP內(nèi)出現(xiàn)的頻率還是更高的。
4.picasso
這個是square 開源的一個強大的圖片下載和緩存庫茫船。很受歡迎琅束,許多項目都有在使用這個庫扭屁。使用方式也很簡單。
關(guān)于圖片加載庫現(xiàn)在比較流行的還有Glide和Fresco涩禀。
Glide
Google員工私人項目料滥,Google很多項目在用。picasso能做到的它都能做到艾船,并且還支持gif葵腹。我在公司的項目中也使用的是這個庫。不過注意在使用這個庫給ImageView加載圖片的時候屿岂,ImageView設(shè)置 Tag的Id必須顯示指定践宴。
關(guān)于Glide和Picasso這篇譯文有一個比較詳細(xì)的對比介紹Glide VS Picasso(打算使用Glide的話注意看下這篇文章下面的評論)
Fresco
這個是FaceBook的開源項目,上面鏈接中有中文的詳細(xì)文檔爷怀。這個庫除了支持的圖片格式很廣泛外阻肩,最大的特性就是在內(nèi)存優(yōu)化這塊,使用這個庫能有效防止OOM情況的出現(xiàn)霉撵。
在5.0以下系統(tǒng)磺浙,Bitmap緩存位于ashmem,這樣Bitmap對象的創(chuàng)建和釋放將不會引發(fā)GC徒坡,更少的GC會使你的APP運行得更加流暢撕氧。
5.0及其以上系統(tǒng),相比之下喇完,內(nèi)存管理有了很大改進(jìn)伦泥,所以Bitmap緩存直接位于Java的heap上。
當(dāng)應(yīng)用在后臺運行時锦溪,該內(nèi)存會被清空不脯。
不過這個庫非主流強大的功能使得這個庫體積有2M之大,使用起來也有點不太方便刻诊。
最后防楷,如果你還在用Android-Universal-Image-Loader(https://github.com/nostra13/Android-Universal-Image-Loader)這個老牌庫,建議盡早替換掉它则涯,這個庫已經(jīng)停止更新了复局。而且無論是使用體驗還是性能都沒有以上庫好。
5.PullZoomView
6.SwipeBackLayout
一個能幫我們輕松實現(xiàn)右滑退出當(dāng)前頁面功能的庫粟判,這個庫也有使用在我們公司的項目中亿昏,不過花了不少時間在處理兼容性問題上(有時間的話會把填過的坑分享出來)。
這里有必要再提一下這個庫在手勢處理方面使用到的ViewDragHelper档礁,非常有用的一個工具類角钩。
具體可以看下這篇文章Android ViewDragHelper完全解析 自定義ViewGroup神器
7.okhttp okio
這個庫也是square開源的一個網(wǎng)絡(luò)請求庫(okhttp內(nèi)部依賴okio)。據(jù)說現(xiàn)在已被Google使用在Android源碼上了,可見其強大递礼。
這里有一個大神張鴻洋開源的okhttp封裝庫
關(guān)于網(wǎng)絡(luò)請求庫惨险,現(xiàn)在應(yīng)該還有很多人在使用android-async-http。他內(nèi)部使用的是HttpClient脊髓,但是Google貌似在6.0版本里面刪除了HttpClient相關(guān)API平道,可見這個庫現(xiàn)在有點過時了。
8.volley
這個庫也應(yīng)該比較熟悉了供炼,Google官方出的一個庫,包含網(wǎng)絡(luò)請求和圖片加載緩存功能窘疮。在處理小而頻繁的網(wǎng)絡(luò)請求上有優(yōu)勢袋哼。
以前使用這個庫一般都是添加第三方依賴,比如android-volley ≌⑸溃現(xiàn)在已經(jīng)有官方Gradle依賴了 涛贯。
[java]view plaincopy
compile'com.android.volley:volley:1.0.0'
9.PagerSlidingTagStrip
這個庫使用比較也比較廣泛,實現(xiàn)ViewPage和頂部指示器聯(lián)動滑動的效果蔚出。
10.Android-PickerView
仿iOS的PickerView控件弟翘,有時間選擇和選項選擇并支持一二三級聯(lián)動效果
這個庫的作者還有另外幾個開源庫也很不錯的,有興趣的可以點上面鏈接去他的github上看下骄酗。
11.packer-ng-plugin
下一代Android打包工具稀余,1000個渠道包只需要5秒
這個庫的作者mcxiaoke在下文還會出現(xiàn)的。
12.NineOldAndroids
View的屬性動畫在Android API 11及其以后才支持趋翻,該庫的作用就是讓API 11以下的系統(tǒng)也能夠正常的使用屬性動畫睛琳。不過該庫作者Jake Wharton(是的,又是這位大神)認(rèn)為現(xiàn)在APP支持的最低版本應(yīng)該是4.0了踏烙,所以不再更新了师骗。
13.Logger
像作者說的一樣,簡單讨惩,漂亮辟癌,強大的一款日志打印工具。
14.materialish-progress
15.七牛
七牛云存儲,是專為移動時代開發(fā)者打造的數(shù)據(jù)管理平臺荐捻,為互聯(lián)網(wǎng)網(wǎng)站和移動App提供數(shù)據(jù)的在線托管黍少、傳輸加速以及圖片、音視頻等富媒體的云處理服務(wù)靴患。
說到數(shù)據(jù)管理平臺,我就會忍不住想到leancloud,大學(xué)那會弄畢設(shè)有使用到它仍侥,文檔對開發(fā)者非常友好,一直印象很深刻鸳君。
16.shareSDK
ShareSDK是為iOS农渊、Android的App提供社會化功能的一個組件,幫助開發(fā)者實現(xiàn)社會化分享、登錄砸紊、關(guān)注传于、獲得用戶資料、獲取好友列表等主流的社會化功能醉顽。
17.友盟+
這里應(yīng)該是用到了友盟的數(shù)據(jù)統(tǒng)計分析服務(wù)以及自動更新服務(wù)沼溜,不過要注意的是自動更新服務(wù)官方已經(jīng)發(fā)聲明表示停止新注冊的APP和當(dāng)前不再使用該功能的APP接入這項服務(wù),已經(jīng)在使用的在2016年10月15日之后也要停止服務(wù)了游添。
18.ViewPagerIndicator
這個庫的作者是Jake Wharton(沒看錯系草,還是這位大神),功能和上面介紹的PagerSlidingTagStrip類似唆涝,一般與viewpager組合使用找都。用法看這里
19.小米推送
小米推送服務(wù)支持所有Android平臺,在MIUI上屬于系統(tǒng)服務(wù)框架廊酣,共享系統(tǒng)級長連接能耻。
共享系統(tǒng)級連接可以這么理解,理論上不管應(yīng)用是否在后臺運行亡驰,只要有網(wǎng)晓猛,就能收到推送。這個應(yīng)該是此APP選擇小米推送的重要原因凡辱。在MIUI系統(tǒng)上戒职,相比其它第三方推送有先天優(yōu)勢。
20.greenDAO
在所有將對象映射到 SQLite 數(shù)據(jù)庫中的 ORM 庫中透乾,greenDAO 在性能方面占很大優(yōu)勢帕涌。而且文檔也很詳細(xì)。
不過最近有一個比較火的跨平臺移動數(shù)據(jù)庫引擎realm续徽,支持iOS蚓曼、OS X(Objective-C和Swift)以及Android。性能比原生的SQLite還要好钦扭。目標(biāo)是要取代SQLite纫版。可以多關(guān)注下客情。
21.CircleImageView
一個使用很廣泛的圓形圖片庫
22.Crouton
這個庫功能類似于SnackBar,因為官方已經(jīng)出了SnackBar其弊,所以作者停止了繼續(xù)更新這個庫。
23.BarcodeScanner
一個基于ZXing和ZBar的容易使用和擴(kuò)展的條形碼掃描庫
24.Rxjava
從去年開始膀斋,RxJava+的文章就一直在國內(nèi)網(wǎng)站各種刷屏了梭伐,最近還看到有公司招聘直接要求熟悉使用RxJava+Retrofit+OkHttp3了,可見其受歡迎程度仰担。雖然這個庫的學(xué)習(xí)成本有點大糊识,好在現(xiàn)在關(guān)于它的學(xué)習(xí)資料也很豐富。
很多RxJava的初學(xué)者應(yīng)該都有看過扔物線的這篇文章給Android 開發(fā)者的 RxJava 詳解。
還有上面提到的mcxiaoke組織翻譯的文檔ReactiveX/RxJava文檔中文版赂苗。
25.PhotoView
支持通過各種手勢來縮放圖片的一個庫愉耙,現(xiàn)在很多的APP內(nèi)都有使用到這個庫,很受歡迎拌滋。
總結(jié):在架構(gòu)一個項目時朴沿,考慮項目需要用到的一些技術(shù)知識是已經(jīng)有成熟的框架的,就可以借鑒一下這篇文章败砂!接下來準(zhǔn)備寫一個通用的android項目架構(gòu)赌渣,集成第三方框架,到時候會上傳到Git開源出來昌犹!