國內 Top500Android 應用分析報告

AleNgabidj 9年前發布 | 18K 次閱讀 安卓開發 Android開發 移動開發

背景

筆者目前在開發的應用在線上有不少OOM的問題,經過一番優化后,OOM降了一個量級,但由于產品中Gif是一特色,內存占用優化空間比較有限,想要減少OOM最簡單的辦法可能就是開啟largeHeap。Google官方是不推薦使用largeheap的,更大的內存意味著更長的垃圾回收時間,所以我就想看看國內的這些應用是否有打開largeheap。用AS的APK Analyzer看了下微信和QQ空間,發現大家都打開了,然后我就安心了。

后來,我們打算把Jackson庫換掉,太占用方法數了,可選擇的有Gson和Fastjson。同樣去看看國內的App都在用什么吧,本以為Fastjson號稱速度最快,國內又是主場,應該用的人更多一些,但在手動分析了幾個APP后,發現大家都在用Gson,Fastjson反而沒見到幾個。

再后來,有一天晚上,好像看了篇TK教主的文章就來了靈感,覺得可以批量分析一下國內主流的APP,看看大家都在用什么庫,教父整天說據我所知,國內用哪些團隊在用rxjava,我可以來個更全面準確的分析,順便可以看看我的Nuwa是否有人在用?

分析

豌豆莢正好那幾天被收購了,那就拿他開刀吧,腳本下載了排行榜(周下載量)Top500的應用,使用Android SDK自帶的appt和dexdump,分析Manifest文件和dex文件,拿到一些APK基本信息和dex中的Class Descriptor。

有些有插件化能力的或者沒有用MultiDex的應用,可能dex不在常規位置,比如淘寶把dex偽裝成.so文件,所以需要查看文件的magic number來找到dex文件。

涉及到數據的排序和整理,所以使用了mysql數據庫,Class Descriptor通過package分段聚合,package最多保留四段,比如Lcom/jiajixin/nuwa/utils/dex/,會有 com/* 、 com/jiajixin/ 、 com/jiajixin/nuwa/ 、 com/jiajixin/nuwa/utils/ 入庫,然后group by后根據count倒序輸出,人工匹配對應庫名。

數據

廢話不多說,直接展示數據。

APK基本信息

開源項目

Network:

Okttp Volley android-async-http
135 105 58

ImagecLoader:

Universal Image Loader Fresco Glide Picasso
130 88 54 38

Dependency Injection:

ButterKnife Dagger Android Annotations Roboguice
63 16 11 5

Json:

Gson Fastjson Jackson
227 87 26

Protocol Buffers:

Wire Protobuf
72 67

DataBase:

GreenDao OrmLite
41 27

Event:

EventBus Otto
132 12

HotFix:

Andfix Dexposed Nuwa
34 24 7

Plugin:

Droidplugin Dynamic-Load-Apk DynamicAPK Pluginmgr
8 5 7 1

PullToRefresh:

Android-PullToRefresh android-Ultra-Pull-To-Refresh
92 27
Name Users
NineOldAndroids 150
zxing 121
okio 119
thrift 97
bolts 76
android-gif-drawable 72
spdy 63
photoview 62
iflytek 61
rxjava 50
pinyin4j 46
viewpagerindicator 46
jsr305 42
ijkplayer 41
DanmakuFlameMaster 36
retrofit 26
DragSortListView 23
exoplayer 23
MPAndroidChart 23
rebound 22
jsoup 21
leakcanary 21
android-gpuimage 20
daimajia 20
xutils 19
Android-wheel 18
roundedimageview 18
PagerSlidingTabStrip 16
SmoothProgressBar 16
stetho 16
aspectj 15
bouncycastle 14
soloader 14
tagsoup 14
vitamio 14
dom4j 13
afinal 12
cropper 12
Android-Easing 11
react-native 11
slidingmenu 11
zip4j 11
disklrucache 10
swipebacklayout 10
java_websocket 9
realm 4

這些產品在使用rxjava:

這些產品在使用react-native:

上面這兩張圖獻給教父。

第三方服務

 

來自: http://mp.weixin.qq.com/s?__biz=MzA5OTMxMjQzMw==&mid=2648112527&idx=1&sn=b23c1b5f3e32e343ad96d705bd4d63ff&scene=1&srcid=0711SVtLTxYXurfDvMqW2LJi#wechat_redirect

 

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