一个千万量级的APP使用的一些第三方库
.背景
这是我老大去年下半年某个月转发给我的,据说是转载阅读量过万,然后我就认真的看了下,里面的库确实是在项目中应用广泛,并且作用巨大。所以我认为确实可以分享一下,供大家一起研究学习。
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文件为止有效,在运行时不额外消耗性能。、
Instead of slow reflection, code is generated to perform the view look-ups. Calling bind
delegates to this generated code that you can see and debug.
有人觉得使用了这个库之后代码的可读性差一些,这个真心不认同,相反,使用过后反倒代码量少了好多,更清爽简洁了。
关于编译时注解效率的问题可以看下这篇文章关于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 && Glide
Glide
Google员工私人项目,Google很多项目在用。picasso能做到的它都能做到,并且还支持gif。我在公司的项目中也使用的是这个库。不过注意在使用这个库给ImageView加载图片的时候,ImageView设置 Tag的Id必须显式指定。
关于Glide和Picasso这篇译文有一个比较详细的对比介绍 Glide VS Picasso(打算使用Glide的话注意看下这篇文章下面的评论)
一个能帮我们轻松实现右滑退出当前页面功能的库,这个库也有使用在我们公司的项目中,不过花了不少时间在处理兼容性问题上(有时间的话会把填过的坑分享出来)。
这里有必要再提一下这个库在手势处理方面使用到的ViewDragHelper,非常有用的一个工具类。
ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number of useful operations and state tracking for allowing a user
to drag and reposition views within their parent ViewGroup.
具体可以看下这篇文章Android ViewDragHelper完全解析 自定义ViewGroup神器。
7.volley
这个库也应该比较熟悉了,Google官方出的一个库,包含网络请求和图片加载缓存功能。在处理小而频繁的网络请求上有优势。
以前使用这个库一般都是添加第三方依赖,比如android-volley 。现在已经有官方Gradle依赖了 。
如果没有用过这个库的,可以去看看大神郭霖对Volley的理解。
8.Android-PickerView
9.ViewPagerIndicator
10.greenDAO
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases. Being highly optimized for Android, greenDAO offers great performance and consumes minimal memory.在所有将对象映射到 SQLite 数据库中的 ORM 库中,greenDAO 在性能方面占很大优势。而且文档也很详细。
不过最近有一个比较火的跨平台移动数据库引擎realm,支持iOS、OS X(Objective-C和Swift)以及Android。性能比原生的SQLite还要好。目标是要取代SQLite。可以多关注下。
要是喜欢的话,就点个赞顶一下下哈~
最后也感谢一下这个APP的开发者们!