Android中常用的优秀开源框架

Android开源框架库分类,挑选出最常用,最实用的开源项目,本篇主要介绍的是优秀开源框架库和项目,UI个性化控件会独立介绍。
UI个性化控件

Index

Dependency Injections

AndroidAnnotations

Repository: https://github.com/excilys/androidannotations
Description: android快速开发框架。
Features:

  • 依赖注入:包括view,extras,系统服务,资源等等
  • 简单的线程模型,通过annotation表示方法运行在ui线程还是后台线程
  • 事件绑定:通过annotation表示view的响应事件,不用在写内部类
  • REST客户端:定义客户端接口,自动生成REST请求的实现
  • 没有你想象的复杂:AndroidAnnotations只是在在编译时生成相应子类
  • 不影响应用性能:仅50kb,在编译时完成,不会对运行时有性能影响。

PS:与roboguice的比较:roboguice通过运行时读取annotations进行反射,所以可能影响应用性能,而AndroidAnnotations在编译时生成子类,所以对性能没有影响。

Butter Knife

Repository: https://github.com/JakeWharton/butterknife
Description: JakeWharton的开源作品,利用annotation帮你快速完成View的初始化,减少代码。
Features:

  • 支持 Activity 中的 View 注入
  • 支持 View 中的 View 注入
  • 支持 View 事件回调函数注入
Dagger

Repository: https://github.com/square/dagger
Description: sqaure开源的依赖注入框架,是Guice的一个子集,更轻量,更适合在Android平台使用。
Features:

  • 使用 JSR-330标准注解进行构造器注入
  • 使用@Provides注解创建对象
  • 针对依赖树的中心上下文
  • 昂贵资源延迟注入
  • 同一接口的多种实现
  • 静态注入 (针对遗留环境)
  • 绑定的编译时验证

依赖注入框架的对比:dagger-and-butter-knife-vs-android-annotations,依赖注入浅析

Networking

Android Lite Http

Repository: https://github.com/litesuits/android-lite-http
Description: 一款‘智能’的HTTP框架类库。国人开发的一套框架。
Features:

  • 单线程,所有方法都基于一个线程,绝不会跨线程,多线程的事情交给它自带的AsyncExecutor 或者更专业的框架库来解决。
  • 灵活的架构,你可以轻松的替换Json自动化库、参数构建方式甚至默认的apache http client连接方式。
  • 轻量级,微小的的开销,core jar包仅约86kb。
  • 多种请求类型全面支持:get, post, head, put, delete, trace, options, patch.
  • 多文件上传,不需要额外的类库支持。
  • 内置的Dataparser支持文件和位图下载,你也可以自由的扩展DataParser来把原始的http inputstream转化为你想要的东西。
  • 基于json的全自动对象转化: 框架帮你完成Java Object Model 和 Http Parameter之间的转化,完成Http Response与Java Object Model的转化。
  • 自动重定向,基于一定的次数,不会造成死循环。
  • 自动gizp压缩,帮你完成request编码和response解码以使http连接更加快速.
  • 通过网络探测完成智能重试 ,对复杂的、信号不良的的移动网络做特殊的优化。
  • 禁用一种或多种网络, 比如2G,3G。
  • 简明且统一的异常处理体系:清晰、准确的抛出客户端、网络、服务器三种异常。
  • 内置的AsyncExecutor可以让你轻松实现异步和并发的http请求,如果你喜欢,随意使用你自己的AsyncTask或Thread来完成异步,推荐使用更强大、高效的专业并发库。
Asynchronous Http Client for Android

Repository: https://github.com/loopj/android-async-http
Description: Android异步Http请求
Used By:

Features:

  • 在匿名回调中处理请求结果
  • 在UI线程外进行http请求
  • 请求使用ThreadPool来处理并非资源的使用
  • 文件断点上传
  • 智能重试
  • 默认gzip压缩
  • 内置Json解析
  • 可将Cookies持久化到SharedPreferences
  • More
Async Http Client

Repository: https://github.com/AsyncHttpClient/async-http-client
Description: Java异步Http和WebSocket请求。使用NIO实现异步操作,默认的异步实现是基于Netty之上。

HttpCache

Repository: https://github.com/Trinea/AndroidCommon
Description: Trinea大神写的Http缓存工具。
Features:

  • 根据cache-control、expires缓存http请求
  • 支持同步、异步Http请求
  • 在匿名回调中处理请求结果
  • 在UI线程外进行http请求
  • 默认gzip压缩
Http Request

Repository: https://github.com/kevinsawicki/http-request
Description: Java HTTP请求库。

Ion

Repository: https://github.com/koush/ion
Description: Android异步网络和图片加载. Used By: https://github.com/koush/ion#projects-using-ion
Features: https://github.com/koush/ion#features

OkHttp

Repository: https://github.com/square/okhttp
Description: Square开源的http库,支持http和spdy协议.
Features:

  • 支持HTTP2和SPDY
  • 如果SPDY不可用,利用连接池减少请求延迟
  • 使用GZIP压缩
  • Response缓存减少不必要的请求
Retrofit

Repository: https://github.com/square/retrofit
Description: Square开源的Android和Java的REST风格请求库.

Volley

Repository: google volley | https://github.com/mcxiaoke/android-volley
Description: Google提供的网络通信库,使得网络请求更简单、更快速
Features:

  • JSON,图像等的异步下载
  • 网络请求的排序
  • 网络请求的优先级处理
  • 缓存
  • 多级别取消请求
  • 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
  • More
Volley OkHttp Android

Repository: https://github.com/lxdvs/Volley-OkHttp-Android
Description: 整合OkHttp和Volley。

Image Loader

Fresco

Repository:

Description: Facebook 开源的一个强大的图片加载组件。
Features:

  • 内存管理,两个内存缓存加上磁盘缓存构成了三级缓存
  • 支持流式,图片的渐进式呈现
  • 支持Gif图和WebP格式
  • 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
  • 支持Android2.3+
Cube SDK

Repository: https://github.com/etao-open-source/cube-sdk
Description: 一淘开源的一款Android开发包,包括图片加载和网络请求服务,综合了Android-Universal-Image-Loader和square等组件优点。
Features:

  • 使用简单
  • 加载速度快,节省资源
  • 方便定制和改造
  • 图片复用
  • 只关注请求结果,专注于业务
  • 请求缓存 / 本地预设请求数据
  • 简单的JsonData,轻松访问接口数据
  • 基于Fragment的UI框架
  • 屏幕尺寸信息
  • 网络状态信息
Glide

Repository: https://github.com/bumptech/glide
Description: 一个高效、开源、 Android设备上的媒体管理框架。灵活的API,可以和很多网络框架进行整合。
Features:

  • GIF动画的解码
  • 本地视频剧照的解码
  • Activity生命周期的集成
  • 转码的支持
  • 动画的支持
  • OkHttp和Volley的支持
  • 其他功能:图片加载过程中占位符等
ImageCache

Repository: https://github.com/Trinea/AndroidCommon
Description: Trinea开源的图片缓存,包含内存和Sdcard缓存。 Features:

  • 支持预取新图片,支持等待队列
  • 包含二级缓存,可自定义文件名保存规则
  • 可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法
  • 可方便的保存及初始化恢复数据
  • 支持不同类型网络处理
  • 可根据系统配置初始化缓存等
Picasso

Repository: https://github.com/square/picasso
Description: square开源的图片缓存。
Features:

  • 可以自动检测adapter的重用并取消之前的下载
  • 图片变换
  • 可以加载本地资源
  • 可以设置占位资源
  • 支持debug模式
Universal Image Loader for Android

Repository: https://github.com/nostra13/Android-Universal-Image-Loader
Description: 应该是使用最多的图片缓存,支持主流图片缓存的绝大多数特性。
Features:

  • 多线程图片加载(同步或者异步)
  • 尽可能多的配置选项(线程池,加载器,解析器,内存/磁盘缓存,显示参数等等)
  • 图片可以缓存在内存中,或者设备文件目录下,或者SD卡中
  • 可以监听加载进度
  • 可以自定义显示每一张图片时都带不同参数
  • 支持Widget

Used By:
Applications using

O/R Mapping

5个推荐的orm框架

ActiveAndroid

Repository: https://github.com/pardom/ActiveAndroid
Description: ActiveAndroid是一个轻量级的orm框架,名称命令方式类似于Yii、Rails等使用的orm框架ActiveRecord。

GreenDAO

Repository: https://github.com/greenrobot/greenDAO
Description: GreenDAO是一个轻量级,快速的orm框架。简化建表、查询、更新、插入、事务、索引的操作。
Features:

  • 性能突出(比ormlite快4-5倍), performance
  • 库小,核心包小于100k
  • 简单易用的API
  • 支持protobuf
  • 自动生成数据库访问代码
OrmLite-Android

Repository: https://github.com/j256/ormlite-android
Description: OrmLite不是Android平台专用的orm框架,它是一个Java orm,OrmLite For Android增加了对Android平台的支持。

Realm

Repository: https://github.com/realm/realm-java
Description: 移动端的数据库,适用于 Phone、Tablet、Wearable,支持 ORM,线程安全、支持连表及数据库加密,比 SQLite 性能更好。
Features:

  • 着重移动端
  • 简单易用的API
  • 支持线程安全,关系数据库和加密
  • 访问快速
  • 跨平台
Sugar ORM

Repository: https://github.com/satyan/sugar
Description: Android平台专用orm框架。
Features:

  • 配置少
  • 自动生成表结构
  • 支持在不同模式版本直接切换

Event Buses

EventBus

Repository: https://github.com/greenrobot/EventBus Description: 事件总线框架,非注解,效率非常高,这里是和square的otto的对比
Features:

  • 非注解
  • 便利,以onEvent方法来接收
  • 性能优化,是android上最快的事件总线框架
  • 单例
  • 事件继承
Otto

Repository: https://github.com/square/otto
Description: Square开源的事件总线框架,在Guava基础上加强,基于注解形式。

AndroidEventBus

Repository: https://github.com/bboyfeiyu/AndroidEventBus
Description: bboyfeiyu开源的事件总线框架,吸收了greenrobot的EventBus以及square的otto的优点,并在此基础上做出了相应的改进,使得事件总线框架更适合用户的使用习惯,也使得事件的投递更加的精准、灵活。

JSON

fastjson

Repository: https://github.com/alibaba/fastjson
Description: 阿里巴巴开源JSON解析库,是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。各种JSON库的比较
Features:

  • 速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackson
  • 功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省
  • 无依赖,能够直接运行在Java SE 5.0以上版本
  • 支持Android
GSON

Repository: https://github.com/google/gson
Description: google开源的JSON解析库

Jackson

Repository: https://github.com/FasterXML/jackson-core
Description: Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

Moshi

Repository: https://github.com/square/moshi
Description: square开源的JSON库,与GSON相比,更少的内建类型,更少的配置,安全的html转义等。

Background Processing

Bolts-Android

Repository: https://github.com/BoltsFramework/Bolts-Android
Description: Parse发布的面向Android的底层库集合,参见parse-announces-bolts

android-priority-jobqueue

Repository: https://github.com/path/android-priority-jobqueue
Description: Path开源的android优先级任务队列框架。

Image Processing

android-gpuimage

Repository: https://github.com/path/android-priority-jobqueue
Description: GPUImage是个功能十分强大、又十分易用的图像处理库。提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。

ImageFilterForAndroid

Repository: https://github.com/daizhenjun/ImageFilterForAndroid
Description: 国内的代震军开源的滤镜效果框架。

Camera

cwac-camera

Repository: https://github.com/commonsguy/cwac-camera
Description: commonsguy开源的camera操作封装。

SquareCamera

Repository: https://github.com/boxme/SquareCamera
Description: 正方的摄像机,有前后摄像头等操作。

CameraModule

Repository: https://github.com/Yalantis/CameraModule
Description: Yalantis开源的摄像机,有自动聚焦功能等。

OpenCamera

Repository: https://github.com/almalence/OpenCamera
Description: 完整的摄像机,功能很全,不过代码有点乱。

StickerCamera

Repository: https://github.com/Skykai521/StickerCamera
Description: 这是一款集成了相机,图片裁剪,给图片贴贴图打标签的相机应用。

Video

AndroidFFmpeg

Repository: https://github.com/appunite/AndroidFFmpeg
Description: FFmpeg视频解析的例子。

Vitamio

Repository: https://github.com/yixia/VitamioBundle
Description: Vitamio是一款Android 与iOS 平台上的全能多媒体开发框架。
Features:

  • 全面支持硬件解码与 GPU 渲染
  • 能够流畅播放 720P 甚至 1080P 高清 MKV,FLV,MP4,MOV,TS,RMVB 等常见格式的视频
  • 在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常见的多种视频流媒体协议,包括点播与直播

Logging

Logger

Repository: https://github.com/orhanobut/logger
Description: 简单、美观而且十分强大的 Android 日志工具。

DebugLog

Repository: https://github.com/MustafaFerhan/DebugLog
Description: 可以帮你创建更简单和更容易理解的调试日志,能够友好的显示调试信息所在类和函数。

hugo

Repository: https://github.com/JakeWharton/hugo
Description: 用于打印函数信息及执行时间的工具,仅在 debug 模式生效。

Android Plugin

AndroidDynamicLoader

Repository: https://github.com/mmin18/AndroidDynamicLoader
Description: 点评的插件化实现方式,是用 Fragment 以及 Schema 的方式实现。

dynamic-load-apk

Repository: https://github.com/singwhatiwanna/dynamic-load-apk
Description: Apk动态加载框架,热部署,利用 ClassLoader 以及 Activity 代理的方式解决。

android-pluginmgr

Repository: https://github.com/houkx/android-pluginmgr
Description: 一种无须规范限制的动态加载解决方案,插件不需要依赖任何API
Features:

  • 插件为普通apk,无须依赖任何jar
  • Activity生命周期由系统自己管理
  • 使用简单,只需要了解一个类PluginManager的两个方法
  • 启动Activity的效率高
  • 不修改插件,被加载的插件仍然可以独立安装。

Security

Conceal

Repository: https://github.com/facebook/conceal
Description: Conceal是一套用于Android上的文件加密和鉴权的Java API

SQLCipher

Repository: https://github.com/sqlcipher/android-database-sqlcipher
Description: Sqlite 加密工具

Showcases

PocketHub

Repository: https://github.com/pockethub/PocketHub
Description: Github 的 Android 客户端项目

iosched

Repository: https://github.com/google/iosched
Description: The Google I/O 2014 Android App

Cheesesquare

Repository: https://github.com/chrisbanes/cheesesquare
Description: Demos the new Android Design library

muzei

Repository: https://github.com/romannurik/muzei
Description: 定时更换桌面精美壁纸

u2020

Repository: https://github.com/JakeWharton/u2020
Description: 开源框架集成的demo

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方开源组件: 网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService调用库ksoap2 XML解析XStream 动画开源库nineoldandroids 表单验证库android-validation-komensky 更多优秀开源库等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持多种接口回调 SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、对话框三种提示 文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验 证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共 通方法 数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操 作 读取本地资源工具类(ToolResource.java),反射本地资源文件API,避免依赖R文件,方便 jar形式发布 Android单位转换工具类(ToolUnit.java),sp/dp/px互转 自定义Toast工具类(ToolToast.java),自定义背景色、字体颜色、大小、边框等 Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/XMLPullPaser模式解析、生成XML操作 XMPP操作工具类(ToolXMPP.java),基于XMPP协议的相关API操作 适配字体工具类(ToolAutoFit.java),代码根据设备密度自动缩放View的字体大小 LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务 器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片RoundImageView 自定义样式风格Progres
1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载; (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2、android-async-http 项目地址:https://github.com/loopj/android-async-http 文档介绍:http://loopj.com/android-async-http/ (1) 在匿名回调处理请求结果 (2) 在UI线程外进行http请求 (3) 文件断点上传 (4) 智能重试 (5) 默认gzip压缩 (6) 支持解析成Json格式 (7) 可将Cookies持久化到SharedPreferences 3、Afinal框架 项目地址:https://github.com/yangfuhai/afinal 主要有四大模块: (1) 数据库模块:android的orm框架,使用了线程池对sqlite进行操作。 (2) 注解模块:android的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。 (3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。 (4) 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程出现的oom和android容器快速滑动时候出现的图片错位等现象。 FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。FinalBitmap的内存管理使用lru算法, 没有使用弱引用(android2.3以后google已经不建议使用弱引用,android2.3后强行回收软引用和弱引用,详情查看android官方文档), 更好的管理bitmap内存。FinalBitmap可以自定义下载器,用来扩展其他协议显示网络图片,比如ftp等。同时可以自定义bitmap显示器, 在imageview显示图片的时候播放动画等(默认是渐变动画显示)。 4、xUtils框架 项目地址:https://github.com/wyouflf/xUtils 主要有四大模块: (1) 数据库模块:android的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体,支持延时加载; 支持链式表达查询,更直观的查询语义,参考下面的介绍或sample的例子。 (2) 注解模块:android的ioc框架,完全注解方式就可以进行UI,资源和事件绑定; 新的事件绑定方式,使用混淆工具混淆后仍可正常工作; 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。 (3) 网络模块:支持同步,异步方式的请求; 支持大文件上传,上传大文件不会oom; 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求; 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。 (4) 图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程出现的oom和android容器快速滑动时候出现的图片错位等现象; 支持加载网络图片和本地图片; 内存管理使用lru算法,更好的管理bitmap内存; 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等... 5、ThinkAndroid 项目地址:https://github.com/white-cat/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) 网络状态检测模块:当网络状态改变时,对其进行检 6、LoonAndroid 项目地址:https://github.com/gdpancheng/LoonAndroid 主要有以下模块: (1) 自动注入框架(只需要继承框架内的application既可) (2) 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性) (3) 网络请求模块(继承了基本上现在所有的http请求) (4) eventbus(集成一个开源框架) (5) 验证框架(集成开源框架) (6) json解析(支持解析成集合或者对象) (7) 数据库(不知道是哪位写的 忘记了) (8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向) (9) 自动更新模块 (10) 一系列工具类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小妖sc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值