发掘了一些Android常用开源框架,记录并分享,希望能在开发当中帮到大家。
缓存:
名称:DiskLruCache
描述:Java实现基于LRU的硬盘缓存
源码地址(可能需要翻墙)
作者:guolin
相关博客:Android DiskLruCache完全解析,硬盘缓存的最佳方案
图片加载:
Android-Universal-Image-Loader
描述:一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。所以,如果你的程序里需要这个功能的话,那么不妨试试它。因为已经封装好了一些类和方法。我们 可以直接拿来用了。而不用重复去写了。其实,写一个这方面的程序还是比较麻烦的,要考虑多线程,缓存,内存溢出等很多方面。但是,你也可以参考这个例子来自己写出更好的程序
github地址:https://github.com/nostra13/Android-Universal-Image-Loader
英文良好的可以直接阅读git上面的开源文档。
相关博客:Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
Picasso
描述:picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能。
官方地址:http://square.github.io/picasso/
作者:xu_fu
Fresco
描述:Fresco 是一个强大的图片加载组件。
Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。
Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。
Fresco 支持 Android2.3(API level 9) 及其以上系统。
地址:http://www.fresco-cn.org/ (中文详细文档)
Glide
描述:Google推荐的图片加载库,Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是在细节上还是有不少区别的。
英文文档:https://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en
网络请求:
Android-Async-Http
描述:Android异步请求库
github地址:https://github.com/loopj/android-async-http
相关博客:快速Android开发系列网络篇之Android-Async-Http
AndroidAsync
描述:AndroidAsync 是一个基于nio的异步socket ,http(客户端服务器端),websocket,socket.io库,AndroidAsync 是一个底层的网络协议库,如果你想要一个容易使用,高级的,http请求库,请使用Ion(它是基于AndroidAsync 的),正常来说开发者更倾向于使用 Ion。
如果你需要一个未被封装的Android的raw Socket, HTTP client/server, WebSocket, and Socket.IO, AndroidAsync 正适合你。
github地址:https://github.com/koush/AndroidAsync
相关博客:AndroidAsync :基于nio的异步通信库
Okhttp
相关博客:Android OkHttp完全解析 是时候来了解OkHttp了
作者:鸿洋_
Retrofit
作者:喝醉的毛毛虫
github地址:https://github.com/square/retrofit
volley
描述:2013年Google I/O大会上推出了一个新的网络通信框架
相关博客:Android Volley完全解析(一),初识Volley的基本用法
Android Volley完全解析(二),使用Volley加载网络图片
作者:guolin
xutils
github地址:https://github.com/wyouflf/xUtils
xutils3.0
github地址:https://github.com/wyouflf/xUtils3
github都是中文文档
ThinkAndroid
主要有以下模块:
(1) MVC模块:实现视图与模型的分离。
(2) ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。
(3) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。
(4) http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。
(5) 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置
(6) 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
(7) 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。
(8) 日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印
(9) 下载器模块:可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停、删除等等。
(10) 网络状态检测模块:当网络状态改变时,对其进行检
github地址:https://github.com/white-cat/ThinkAndroid
LoonAndroid
主要有以下模块:
(1) 自动注入框架(只需要继承框架内的application既可)
(2) 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
(3) 网络请求模块(继承了基本上现在所有的http请求)
(4) eventbus(集成一个开源的框架)
(5) 验证框架(集成开源框架)
(6) json解析(支持解析成集合或者对象)
(7) 数据库(不知道是哪位写的 忘记了)
(8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
(9) 自动更新模块
(10) 一系列工具类
github地址:https://github.com/gdpancheng/LoonAndroid
网络解析:
Gson
描述:一个Java序列化/反序列化库,可以将Json和Java对象互相转换
github地址:https://github.com/google/gson
相关博客:Google Gson 使用简介
作者:Forhappy && Haippy
jackson
描述:Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
相关博客:Jackson 框架,轻易转换JSON
作者:hoojo
fastjson
描述:阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
github地址:https://github.com/alibaba/fastjson
相关博客:JSON 之FastJson解析
HtmlPaser
描述:一种用来解析单个独立HTML或嵌套HTML的方式
相关博客:HtmlParser基础教程
作者:jediael_lu
jsoup
描述:一个以最好的DOM,css和JQuery解析html库
中文文档:jsoup Cookbook(中文版)
数据库:
OrmLite
描述:JDBC和Android的轻量级ORM java包, 在android中使用原始的SQLiteOpenHelper操作数据库显得过于繁琐,而且对于不是很熟悉数据库操作的人来说比较容易出现一些隐藏的漏洞。所以一般都会想到使用相关的ORMLite框架完成开发,类似于J2EE开发中的Hibernate和Mybatis等等,在提高开发效率的同时,也可以有效避免数据库操作对应用带来的潜在影响。
官方地址:http://ormlite.com/
相关博客:Android快速开发系列 ORMLite 框架最佳实践
作者:鸿洋_
Sugar
描述:提供一种非常简便的方式来操作 Android 数据库。
一个简单,简洁,干净的一体化进程以最小的配置。
通过反射自动命名表和列。
支持不同模式版本之间迁移。
github:https://github.com/satyan/sugar
greenDAO
描述:greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。
github:https://github.com/greenrobot/greenDAO.
相关博客:Android 操作数据库的框架——greenDAO的学习
作者:benhuo931115的博客
Activeandroid
描述:ActiveAndroid是采用活动记录(Active Record)架构模式设计的适用于Android平台的轻量级ORM架构。
github:https://github.com/pardom/ActiveAndroid
相关博客:Activeandroid的使用
SQLBrite
描述:SQLite显然是复杂数据保存与查询的首选方案。经过设计与讨论之后,我们构建了一个简化应用SQLite操作的完整方案的原型。这个原型的特性包括诸如自动创建与迁移表格,行的对象映射、类型安全的查询,以及在数据变更时的通知。
github:https://github.com/square/sqlbrite
Realm for Android
描述:如果你关注安卓开发的最新趋势,你可能已经听说过Realm。Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库。相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持,这些都为安卓开发者带来了方便。
依赖注入
ButterKnife
描述:这个开源库可以让我们从大量的findViewById()和setonclicktListener()解放出来,其对性能的影响微乎其微(查看过Butter Knife的源码,其自定义注解的实现都是限定为RetentionPolicy.CLASS,也就是到编译出.class文件为止有效,在运行时不额外消耗性能,其是通过java注解自动生成java代码的形式来完成工作),其也有一个明显的缺点,那就是代码的可读性差一些,但了解了之后,上手也很快
github:https://github.com/JakeWharton/butterknife
相关博客:推荐一个Android开发懒人库 – ButterKnife
Dagger2
描述: 一个Android和java快速依赖注射器
相关博客:
Android Anotations
描述:快速Android开发,易于维护
相关博客:
Android Support Annotations 使用详解
使用AndroidAnnotations框架写Android
RoboGuice
描述 :Android平台的Google Guice
github:https://github.com/roboguice/roboguice/wiki
相关博客:android roboguice 笔记
图表
WilliamChart
描述:创建图表的Android库,WilliamChart 是一个为安卓项目提供图表控件的开源库,他实现了数字的可视化,
相关博客:WilliamChart图表库
github :https://github.com/diogobernardino/WilliamChart
Hellocharts
Hellocharts-android 是一个能够兼容 API 8+(Android 2.2)的安卓图表库,十分好用,也适用于 API 14+(Android 4.0)。
github:https://github.com/lecho/hellocharts-android
相关博客:hellocharts-android开源图表库(效果非常好)
MPAndroidChart
描述:一个可以拖动缩放的图表库,包含曲线图、直方图、饼状图,其中直方图支持3d效果。
该库的可扩展性强,代码相对规范,最近一次更新有很大改进,如果不喜欢AChartEngine的过于复杂可以考虑在此库的基础上开发自己的图表类。
github地址:https://github.com/PhilJay/MPAndroidChart
相关博客:android开源图表库MPAndroidChart(曲线图、直方图、饼状图)
后台处理
Tape
描述:快如闪电,事务性的,基于文件的Android和java FIFO。
github地址:https://github.com/square/tape
Android Priority Job Queue
Android Priority Job Queue是一款专门为Android平台编写,实现了Job Queue的后台任务队列类库,能够轻松的在后台执行定时任务,提高用户体验和应用的稳定性。
github:https://github.com/path/android-priority-jobqueue
相关博客:Android Priority Jobqueue:Android后台任务队列类库
事件总线
AndroidEventBus
相关博客:Android事件总线 ( AndroidEventBus ) 框架发布
AndroidEventBus是一个Android平台轻量级的事件总线框架, 它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。
Otto
Otto框架的主要功能是帮助我们来降低多个类之间的耦合度的(解耦)。
譬如:一个类A和另一个类B之间,如果A要操作B中的某个方法。
官方网站:http://square.github.io/otto/
响应式编程
RxJava
描述:JVM上的响应式扩展
相关博客:深入浅出RxJava(一:基础篇)
RxAndroid
描述:Android 上的响应式扩展,在RxJava基础上添加了Android的线程调度,
github:https://github.com/ReactiveX/RxAndroid
相关博客:Android开发学习之路–RxAndroid之初体验
RxBinding
描述:rxbinding是一个开源项目,可以实现数据层与View层的绑定,当数据发生变化,View会自动更新UI。还有其他功能非常强大
github地址:https://github.com/ogaclejapan/RxBinding
Agera
描述:Agera是用于Android开发者更方便地开发函数,异步,响应式程序的框架,它要求Android SDK版本9以上。
Log框架
Logger
android是一个简单、漂亮、功能强大的Android日志程序。
github:https://github.com/orhanobut/logger
相关博客:一个简单、漂亮、功能强大的Android日志程序:logger
hugo
用于打印函数信息及执行时间的工具,仅在debug模式生效
github地址:https://github.com/JakeWharton/hugo
Timber
相关博客:Android调试自测工具01 (Hugo、Timber、Scalpel)
测试框架:
Mockito
相关博客:Android-使用Mockito、Robolectric和RxJava及Retrofit进行单元测试
Robotium
robotium 是 Android 平台上类似 Selenium 的集成测试工具。有JUnit基础的开发者,还是非常容易上手的。
调试框架:
Stetho
相关博客:OkHttp+Stetho+Chrome调试android网络部分(原创)
github:https://github.com/facebook/stetho
性能框架
LeakCanary
描述:内存泄漏检测工具
相关博客:LeakCanary:检测所有的内存泄漏
ACRA
描述:作为程序,知道程序的错误才能更快的解决问题,优化我们的程序,所以程序具有自动报告错误的功能是很有必要的。ACRA是一个很有用的开源项目,全称为Application Crash Report for Android ,它包括了很多可配置的选项ReportFields
基于开源项目acra实现的定制化Android crash上报库及后台系统