你的每个安卓项目都该用到的19个开源库

编者按

著名的安卓开源项目作者Amit Shekhar在他的博客上总结了他认为每个安卓项目都应该用到的19个开源安卓库,原文请点击 这里

未经许可,禁止转载

我也是一个非常喜欢开源软件的人,自己用心做了不少安卓上使用的库,也同样收到了社区的回馈。我只能说开发者社区实在是太棒了。下面这些安卓库强烈推荐,你应该把他们用在你每一个安卓项目里:

安卓项目必用的开源库
Fresco

Fresco是一个强大的安卓图形显示库,它帮助你处理图像的读取和显示。它能够读取网络或者本地介质上的资源,也能够以占位符显示没有处理完毕的图像。它有两级缓存:内存缓存以及在本地存储介质中的缓存。

Glide

Glide是一个高效快捷的开源安卓媒体管理和图像读取框架,它把媒体解码,内存和磁盘缓存,资源池结合成一个简单易用的界面。这个库专注实现光滑滚动。

OkHttp

OkHttp是一个适用于安卓和JAVA程序的HTTP+HTTP/2客户端。在安卓系统上,Http引擎是网络通信的首选。

Fast Android Networking

基于OkHttp的Fast Android Networking能让网络通信变得简洁(不用样板代码),使得开发者能轻易写出通信代码。它是一个轻量级的快速网络通信库。试试看,你会爱上它。

RxJava

RxJava — Reactive Extensions for the JVM — 一个用JVM里面的observed sequence来构建异步和基于事件库。

EventBus

为安卓优化的事件总线(event bus),简化了Activities, Fragments, Threads, Services之间的通信。

Device Year Class
Device Year Class会告知当前设备的内存,CPU核和时钟频率在哪一年的产品线里属于高配。它可以让开发者根据手机的硬件性能来让app做出不同的行为。
Network Connection Class
Network Connection Class能够查询当前用户的网络连接质量。它会根据网络质量的不同分成好几种”Connection Classes”(连接分类)让开发更容易。这个库通过监听app已有的网络流量情况并在通信速度改变的时候通知用户。开发者能够通过网络连接情况调节app的行为(比如使用更低质量的影音,停止使用输入提示等等)。

另外,Fast Android Networking 也有这个功能。

Android Debug Database

Android Debug Database是一个功能强大的用于调试安卓数据库和共享首选项(shared preference)的库。它是一个在浏览器里浏览数据库和共享首选项的简单易用的工具。

LeakCanary

LeakCanary是一个安卓和Java上用于检测内存泄漏的一个库。

MPAndroidChart

安卓上强大的图表浏览库,支持诸如线形图,柱形图,饼图,蜡烛图等的图形显示,并提供缩放,拖放和动画支持。

ButterKnife

ButterKnife是一个视图绑定(view binding)的工具。它利用标注(annotation)为我们自动生成样板代码。这个工具本质上能帮我们在处理视图的时候避免类似findViewById(R.id.view)这样的重复代码,让我们的项目看起来更整洁。

Dagger

安卓和java的快速的依赖注入库。它简化了对于共用实例的读写,使复杂的依赖设置变的简单,让单元测试和集成测试更加容易。

GreenDao

GreenDAO是一个开源的安卓ORM,它让开发SQLite更有趣。它让开发者不再需要处理数据库底层操作,节省开发的时间。

Realm

简单存储,高速查询,节省大量开发时间。Realm Mobile Database是SQLite的一个替代品。

Timber

在安卓原有的Log class之上提供有小型,可扩展API的一个Logger.

Hugo

通过标注触发为你的debug build自动记录方法调用的日志。作为一个程序员,你经常需要加入logging函数打印程序里面的函数调用,以及参数和返回值,并花时间执行。这不是什么问题,我们每个人都这样做。只是能不能够让它变得更简单一些呢?只要在函数头加上@DebugLog你就能得到我们刚才所讲的所有信息。

Android GPU Image

提供安卓上高效的基于OpenGL的滤镜的库。

ExoPlayer

ExoPlayer是一个应用级的安卓媒播放器。它提供的API支持播放本地或者网络上的音频。ExoPlayer支持当前安卓媒体播放器API不支持的功能,比如DASH和Smooth Streaming adaptive playbacks(根据带宽自动实时调节播放分辨率).

GSON
一个提供Java对象序列化/反序列化至JSON格式的库。