转:国内Top500Android应用分析报告
转自:https://mp.weixin.qq.com/s?__biz=MzA5OTMxMjQzMw==&mid=2648112527&idx=1&sn=b23c1b5f3e32e343ad96d705bd4d63ff&scene=1&srcid=0711SVtLTxYXurfDvMqW2LJi&key=77421cf58af4a6539e507304f3ba7258db54cc7d09d0da0d4d384e54aa5536776c95d86cfb4e18a26e41586ef17e83bd&ascene=0&uin=Mjc3OTU3Nzk1&devicetype=iMac+MacBookPro10%2C1+OSX+OSX+10.10.5+build%2814F1808%29&version=11020201&pass_ticket=ITDgY8jmrXUfwFXFF5dIXjjUGT%2Bjosrkf8JctrkEiM3n%2F5PmuQjtbzHuMvPqa8Qq
国内Top500Android应用分析报告
背景
笔者目前在开发的应用在线上有不少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:
上面这两张图献给教父。
第三方服务
转:国内Top500Android应用分析报告的更多相关文章
- 分析师机构发布中国低代码平台现状分析报告,华为云AppCube为数字化转型加码
摘要:Forrester指出,中国企业数字化转型过程中,有58%的决策者正在采用低代码工具进行软件构建,另有16%的决策者计划采用低代码. 华为消息,知名研究与分析机构Forrester Resear ...
- Alpha阶段事后分析报告
每个团队编写一个事后分析报告,对于团队在Alpha阶段的工作做一个总结. 请在2016年11月24日上课之前根据下述博客中的模板总结前一阶段的工作,发表在团队博客上,并在课上的事后分析会上进行汇报,并 ...
- 《奥威Power-BI智能分析报告制作方法 》精彩回顾
上次课我们简单介绍了奥威Power-BI的智能分析报告,并展示了报告与图表相结合的应用场景.图文分析报表的意义不只在于美观,更重要的是固定框架下的灵活性和追根究底的动态分析,有着很强的实用性.上节课 ...
- 12月07日《奥威Power-BI智能分析报告制作方法 》腾讯课堂开课啦
前几天跟我一个做报表的哥们聊天,听着他一茬一茬地诉苦:“每天做报表做到想吐,老板看报表时还是不给一个好脸色.”我也只能搬出那一套“过程大于结果”的内心疗程赠与他,没想到他反而怒了:“做 ...
- M1事后分析报告(Postmortem Report)
M1事后分析报告(Postmortem Report) 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们项目组所开发的软件为一个基于Andro ...
- websphere OSGi应用环境下服务调用saaj包加载问题分析报告
websphere OSGi应用环境下服务调用saaj包加载问题分析报告 作者:bingjava 版权声明:本文为博主原创文章,转载请说明出处:http://www.cnblogs.com/bingj ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...
- 推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen
reportgen v0.1.8 更新介绍 这段时间,我对 reportgen 进行了大工程量的修改和更新.将之前在各个文章中出现的函数进行了封装,同时也对现有工具包的一些逻辑进行了调整. 1.rep ...
- python 生成 pptx 分析报告的工具包:reportgen
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
随机推荐
- js常见面试题
1.大小写转化,将字符串转化成驼峰的方法 例:border-bottom-color转化为:borderBottomColor var str="border-bottom-color&qu ...
- web开发框架之DRF
RESTful架构解释: # Representational State Transfer 表现层状态转化 到底什么是RESTFul架构: 如果一个架构符合REST原则,就称它为RESTful架构. ...
- Objective-C 正则表达式使用(1)
学习了一下OC的正则表达式备忘一下 使用正则表达式的步骤: 创建一个一个正则表达式对象:定义规则. 利用正则表达式对象测试,相应的字符串. NSString *userName = @"12 ...
- Lex与Yacc学习(七)之环境配置另一种方式
必备工具 flex-2.5.4a-1.exe 和 bison-2.4.1-setup.exe 以及 cygwin2.738 的安装文件,下载地址 http://download.csdn.n ...
- Loadrunner中web脚本转成JavaVuser脚本
先用web方式录制好脚本,进行参数化,关联验证等操作,之后执行以下步骤: 1)将要转换的web脚本复制出来并保存到web.txt中2)参数界定符部分需要由{}手动修改成<>,包括参数化的和 ...
- Ubuntu 清理卸载残留文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
- vue 判断属性是否为object
//递归对象 var recursiveObject = Vue.extend({ name: 'recursive-object', template:[ '<ul>', '<li ...
- 开始 python programming第三版案例分析
最近研究python,打算将python programming第三版案例分析下 但是全书1600多页 比较费时 而且 介绍太多 感觉没有必要! python programming 堪称经典之作 第 ...
- POJ-2186 Popular Cows,tarjan缩点找出度为0的点。
Popular Cows 题意:一只牛崇拜另外一只牛,这种崇拜关系可以传导.A->B,B->C =>A->C.现在给出所有的关系问你有多少牛被其他所有的牛都崇拜. 思路:就是一 ...
- 九度oj 题目1137:浮点数加法
题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2...Qj对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: 对 ...