.背景前段时间在调研第三方推送服务的时候,反编译了一部分市面上比较流行的APP。其中一个无论是在设计还是功能上都堪称典型,这款APP总用户数超千万(其官网数据),在国内某手机助手上支持率超97%。可见其受欢迎程度(APP的名字就不说了)。反编译这个APP后发现其使用的第三方库也很有代表性。这里介绍下他们使用的这些第三方库,给需要的童鞋一些参考。 1.Android Design Support Library这个并不是一个第三方库,是谷歌官方出的支持库。之所以列出来除了上面说的这个APP有使用到它外,更多的是因为这个库很强大~
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 关于Glide和Picasso这篇译文有一个比较详细的对比介绍 Glide VS Picasso(打算使用Glide的话注意看下这篇文章下面的评论) Fresco
不过这个库非主流强大的功能使得这个库体积有2M之大,使用起来也有点不太方便。
5.PullZoomView
这个直接上效果图了 PullZoomView效果图.gif
6.SwipeBackLayout
一个能帮我们轻松实现右滑退出当前页面功能的库,这个库也有使用在我们公司的项目中,不过花了不少时间在处理兼容性问题上(有时间的话会把填过的坑分享出来)。 这里有必要再提一下这个库在手势处理方面使用到的ViewDragHelper,非常有用的一个工具类。
具体可以看下这篇文章Android ViewDragHelper完全解析 自定义ViewGroup神器 swipeBackLayout.png
7.okhttp okio这个库也是square开源的一个网络请求库(okhttp内部依赖okio)。据说现在已被Google使用在Android源码上了,可见其强大。 这里有一个大神张鸿洋开源的okhttp封装库okhttp-utils 关于网络请求库,现在应该还有很多人在使用android-async-http。他内部使用的是HttpClient,但是Google貌似在6.0版本里面删除了HttpClient相关API,可见这个库现在有点过时了。 不过我在android-async-http的官方Wiki上发现了这个: android-async-http_Wiki.png
8.volley这个库也应该比较熟悉了,Google官方出的一个库,包含网络请求和图片加载缓存功能。在处理小而频繁的网络请求上有优势。 以前使用这个库一般都是添加第三方依赖,比如android-volley 。现在已经有官方Gradle依赖了 。
9.PagerSlidingTagStrip
这个库使用比较也比较广泛,实现ViewPage和顶部指示器联动滑动的效果。 pagerSlidingTabStrip.png
10.Android-PickerView
这个库的作者还有另外几个开源库也很不错的,有兴趣的可以点上面链接去他的github上看下。 pickerdemo.gif
11.packer-ng-plugin
这个库的作者mcxiaoke在下文还会出现的。 12.NineOldAndroids
View的属性动画在Android API 11及其以后才支持,该库的作用就是让API 11以下的系统也能够正常的使用属性动画。不过该库作者Jake Wharton(是的,又是这位大神)认为现在APP支持的最低版本应该是4.0了,所以不再更新了。 13.Logger
像作者说的一样,简单,漂亮,强大的一款日志打印工具。 custom-tag.png
14.materialish-progress
spinningwheel.gif
15.七牛
说到数据管理平台,我就会忍不住想到leancloud,大学那会弄毕设有使用到它,文档对开发者非常友好,一直印象很深刻。 16.shareSDK
17.友盟+这里应该是用到了友盟的数据统计分析服务以及自动更新服务,不过要注意的是自动更新服务官方已经发声明表示停止新注册的APP和当前不再使用该功能的APP接入这项服务,已经在使用的在2016年10月15日之后也要停止服务了。 18.ViewPagerIndicator
这个库的作者是Jake Wharton(没看错,还是这位大神),功能和上面介绍的PagerSlidingTagStrip类似,一般与viewpager组合使用。用法看这里 viewPagerIndicator.png
19.小米推送
共享系统级连接可以这么理解,理论上不管应用是否在后台运行,只要有网,就能收到推送。这个应该是此APP选择小米推送的重要原因。在MIUI系统上,相比其它第三方推送有先天优势。 20.greenDAO
在所有将对象映射到 SQLite 数据库中的 ORM 库中,greenDAO 在性能方面占很大优势。而且文档也很详细。 不过最近有一个比较火的跨平台移动数据库引擎realm,支持iOS、OS X(Objective-C和Swift)以及Android。性能比原生的SQLite还要好。目标是要取代SQLite。可以多关注下。
21.CircleImageView一个使用很广泛的圆形图片库 CircleImageView.png
22.Crouton
这个库功能类似于SnackBar,因为官方已经出了SnackBar,所以作者停止了继续更新这个库。 关于SnackBar的用法 看这里 23.BarcodeScanner
scanner.png
24.Rxjava从去年开始,RxJava+的文章就一直在国内网站各种刷屏了,最近还看到有公司招聘直接要求熟悉使用RxJava+Retrofit+OkHttp3了,可见其受欢迎程度。虽然这个库的学习成本有点大,好在现在关于它的学习资料也很丰富。 很多RxJava的初学者应该都有看过扔物线的这篇文章 给Android 开发者的 RxJava 详解。 25.PhotoView
支持通过各种手势来缩放图片的一个库,现在很多的APP内都有使用到这个库,很受欢迎。 最后以上就是这个优秀的APP内使用到的绝大部分第三方库了。希望对各位有帮助! |
|
来自: jnstyle > 《android开源》