2018-01-09 Android中常用的优秀开源框架

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

UI个性化控件

Index

Dependency Injections

AndroidAnnotations

Butter Knife

Dagger

Networking

Android Lite Http

Asynchronous Http Client for Android

Async Http Client

HttpCache

Http Request

Ion

OkHttp

Retrofit

Volley

Volley OkHttp Android

Image Loader

Fresco

Cube SDK

Glide

ImageCache

Picasso

Universal Image Loader for Android

O/R Mapping

ActiveAndroid

GreenDAO

OrmLite-Android

Realm

Sugar ORM

Event Buses

EventBus

Otto

AndroidEventBus

JSON

fastjson

GSON

Jackson

Moshi

Background Processing

Bolts-Android

android-priority-jobqueue

Image Processing

android-gpuimage

ImageFilterForAndroid

Camera

cwac-camera

SquareCamera

CameraModule

OpenCamera

StickerCamera

Video

AndroidFFmpeg

Vitamio

Logging

Logger

DebugLog

hugo

Android Plugin

AndroidDynamicLoader

dynamic-load-apk

android-pluginmgr

Security

Conceal

SQLCipher

Showcases

PocketHub

iosched

Cheesesquare

muzei

u2020

Dependency Injections

AndroidAnnotations

Repositoryhttps://github.com/excilys/androidannotations

Description: android快速开发框架。

Features:

依赖注入:包括view,extras,系统服务,资源等等

简单的线程模型,通过annotation表示方法运行在ui线程还是后台线程

事件绑定:通过annotation表示view的响应事件,不用在写内部类

REST客户端:定义客户端接口,自动生成REST请求的实现

没有你想象的复杂:AndroidAnnotations只是在在编译时生成相应子类

不影响应用性能:仅50kb,在编译时完成,不会对运行时有性能影响。

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

Butter Knife

Repositoryhttps://github.com/JakeWharton/butterknife

Description: JakeWharton的开源作品,利用annotation帮你快速完成View的初始化,减少代码。

Features:

支持 Activity 中的 View 注入

支持 View 中的 View 注入

支持 View 事件回调函数注入

Dagger

Repositoryhttps://github.com/square/dagger

Description: sqaure开源的依赖注入框架,是Guice的一个子集,更轻量,更适合在Android平台使用。

Features:

使用 JSR-330标准注解进行构造器注入

使用@Provides注解创建对象

针对依赖树的中心上下文

昂贵资源延迟注入

同一接口的多种实现

静态注入 (针对遗留环境)

绑定的编译时验证

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

Networking

Android Lite Http

Repositoryhttps://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

Repositoryhttps://github.com/loopj/android-async-http

Description: Android异步Http请求

Used By:

Instagram

Pinterest

Frontline Commando

Thousands more apps…

Features:

在匿名回调中处理请求结果

在UI线程外进行http请求

请求使用ThreadPool来处理并非资源的使用

文件断点上传

智能重试

默认gzip压缩

内置Json解析

可将Cookies持久化到SharedPreferences

More

Async Http Client

Repositoryhttps://github.com/AsyncHttpClient/async-http-client

Description: Java异步Http和WebSocket请求。使用NIO实现异步操作,默认的异步实现是基于Netty之上。

HttpCache

Repositoryhttps://github.com/Trinea/AndroidCommon

DescriptionTrinea大神写的Http缓存工具。

Features:

根据cache-control、expires缓存http请求

支持同步、异步Http请求

在匿名回调中处理请求结果

在UI线程外进行http请求

默认gzip压缩

Http Request

Repositoryhttps://github.com/kevinsawicki/http-request

Description: Java HTTP请求库。

Ion

Repositoryhttps://github.com/koush/ion

Description: Android异步网络和图片加载. Used Byhttps://github.com/koush/ion#projects-using-ion

Featureshttps://github.com/koush/ion#features

OkHttp

Repositoryhttps://github.com/square/okhttp

Description: Square开源的http库,支持http和spdy协议.

Features:

支持HTTP2和SPDY

如果SPDY不可用,利用连接池减少请求延迟

使用GZIP压缩

Response缓存减少不必要的请求

Retrofit

Repositoryhttps://github.com/square/retrofit

Description: Square开源的Android和Java的REST风格请求库.

Volley

Repositorygoogle volley | https://github.com/mcxiaoke/android-volley

Description: Google提供的网络通信库,使得网络请求更简单、更快速

Features:

JSON,图像等的异步下载

网络请求的排序

网络请求的优先级处理

缓存

多级别取消请求

和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

More

Volley OkHttp Android

Repositoryhttps://github.com/lxdvs/Volley-OkHttp-Android

Description: 整合OkHttp和Volley。

Image Loader

Fresco

Repository:

https://github.com/facebook/fresco

http://fresco-cn.org/

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

Features:

内存管理,两个内存缓存加上磁盘缓存构成了三级缓存

支持流式,图片的渐进式呈现

支持Gif图和WebP格式

更多样的显示,如圆角、进度条、点击重试、自定义对焦点

支持Android2.3+

Cube SDK

Repositoryhttps://github.com/etao-open-source/cube-sdk

Description: 一淘开源的一款Android开发包,包括图片加载和网络请求服务,综合了Android-Universal-Image-Loader和square等组件优点。

Features:

使用简单

加载速度快,节省资源

方便定制和改造

图片复用

只关注请求结果,专注于业务

请求缓存 / 本地预设请求数据

简单的JsonData,轻松访问接口数据

基于Fragment的UI框架

屏幕尺寸信息

网络状态信息

Glide

Repositoryhttps://github.com/bumptech/glide

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

Features:

GIF动画的解码

本地视频剧照的解码

Activity生命周期的集成

转码的支持

动画的支持

OkHttp和Volley的支持

其他功能:图片加载过程中占位符等

ImageCache

Repositoryhttps://github.com/Trinea/AndroidCommon

Description: Trinea开源的图片缓存,包含内存和Sdcard缓存。 Features:

支持预取新图片,支持等待队列

包含二级缓存,可自定义文件名保存规则

可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法

可方便的保存及初始化恢复数据

支持不同类型网络处理

可根据系统配置初始化缓存等

Picasso

Repositoryhttps://github.com/square/picasso

Description: square开源的图片缓存。

Features:

可以自动检测adapter的重用并取消之前的下载

图片变换

可以加载本地资源

可以设置占位资源

支持debug模式

Universal Image Loader for Android

Repositoryhttps://github.com/nostra13/Android-Universal-Image-Loader

Description: 应该是使用最多的图片缓存,支持主流图片缓存的绝大多数特性。

Features:

多线程图片加载(同步或者异步)

尽可能多的配置选项(线程池,加载器,解析器,内存/磁盘缓存,显示参数等等)

图片可以缓存在内存中,或者设备文件目录下,或者SD卡中

可以监听加载进度

可以自定义显示每一张图片时都带不同参数

支持Widget

Used By:

Applications using

O/R Mapping

5个推荐的orm框架

ActiveAndroid

Repositoryhttps://github.com/pardom/ActiveAndroid

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

GreenDAO

Repositoryhttps://github.com/greenrobot/greenDAO

Description: GreenDAO是一个轻量级,快速的orm框架。简化建表、查询、更新、插入、事务、索引的操作。

Features:

性能突出(比ormlite快4-5倍), performance

库小,核心包小于100k

简单易用的API

支持protobuf

自动生成数据库访问代码

OrmLite-Android

Repositoryhttps://github.com/j256/ormlite-android

Description: OrmLite不是Android平台专用的orm框架,它是一个Java orm,OrmLite For Android增加了对Android平台的支持。

Realm

Repositoryhttps://github.com/realm/realm-java

Description: 移动端的数据库,适用于 Phone、Tablet、Wearable,支持 ORM,线程安全、支持连表及数据库加密,比 SQLite 性能更好。

Features:

着重移动端

简单易用的API

支持线程安全,关系数据库和加密

访问快速

跨平台

Sugar ORM

Repositoryhttps://github.com/satyan/sugar

Description: Android平台专用orm框架。

Features:

配置少

自动生成表结构

支持在不同模式版本直接切换

Event Buses

EventBus

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

Features:

非注解

便利,以onEvent方法来接收

性能优化,是android上最快的事件总线框架

单例

事件继承

Otto

Repositoryhttps://github.com/square/otto

Description: Square开源的事件总线框架,在Guava基础上加强,基于注解形式。

AndroidEventBus

Repositoryhttps://github.com/bboyfeiyu/AndroidEventBus

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

JSON

fastjson

Repositoryhttps://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

Repositoryhttps://github.com/google/gson

Description: google开源的JSON解析库

Jackson

Repositoryhttps://github.com/FasterXML/jackson-core

Description: Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

Moshi

Repositoryhttps://github.com/square/moshi

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

Background Processing

Bolts-Android

Repositoryhttps://github.com/BoltsFramework/Bolts-Android

Description: Parse发布的面向Android的底层库集合,参见parse-announces-bolts

android-priority-jobqueue

Repositoryhttps://github.com/path/android-priority-jobqueue

Description: Path开源的android优先级任务队列框架。

Image Processing

android-gpuimage

Repositoryhttps://github.com/path/android-priority-jobqueue

Description: GPUImage是个功能十分强大、又十分易用的图像处理库。提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。

ImageFilterForAndroid

Repositoryhttps://github.com/daizhenjun/ImageFilterForAndroid

Description: 国内的代震军开源的滤镜效果框架。

Camera

cwac-camera

Repositoryhttps://github.com/commonsguy/cwac-camera

Description: commonsguy开源的camera操作封装。

SquareCamera

Repositoryhttps://github.com/boxme/SquareCamera

Description: 正方的摄像机,有前后摄像头等操作。

CameraModule

Repositoryhttps://github.com/Yalantis/CameraModule

Description: Yalantis开源的摄像机,有自动聚焦功能等。

OpenCamera

Repositoryhttps://github.com/almalence/OpenCamera

Description: 完整的摄像机,功能很全,不过代码有点乱。

StickerCamera

Repositoryhttps://github.com/Skykai521/StickerCamera

Description: 这是一款集成了相机,图片裁剪,给图片贴贴图打标签的相机应用。

Video

AndroidFFmpeg

Repositoryhttps://github.com/appunite/AndroidFFmpeg

Description: FFmpeg视频解析的例子。

Vitamio

Repositoryhttps://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

Repositoryhttps://github.com/orhanobut/logger

Description: 简单、美观而且十分强大的 Android 日志工具。

DebugLog

Repositoryhttps://github.com/MustafaFerhan/DebugLog

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

hugo

Repositoryhttps://github.com/JakeWharton/hugo

Description: 用于打印函数信息及执行时间的工具,仅在 debug 模式生效。

Android Plugin

AndroidDynamicLoader

Repositoryhttps://github.com/mmin18/AndroidDynamicLoader

Description: 点评的插件化实现方式,是用 Fragment 以及 Schema 的方式实现。

dynamic-load-apk

Repositoryhttps://github.com/singwhatiwanna/dynamic-load-apk

Description: Apk动态加载框架,热部署,利用 ClassLoader 以及 Activity 代理的方式解决。

android-pluginmgr

Repositoryhttps://github.com/houkx/android-pluginmgr

Description: 一种无须规范限制的动态加载解决方案,插件不需要依赖任何API

Features:

插件为普通apk,无须依赖任何jar

Activity生命周期由系统自己管理

使用简单,只需要了解一个类PluginManager的两个方法

启动Activity的效率高

不修改插件,被加载的插件仍然可以独立安装。

Security

Conceal

Repositoryhttps://github.com/facebook/conceal

Description: Conceal是一套用于Android上的文件加密和鉴权的Java API

SQLCipher

Repositoryhttps://github.com/sqlcipher/android-database-sqlcipher

Description: Sqlite 加密工具

Showcases

PocketHub

Repositoryhttps://github.com/pockethub/PocketHub

Description: Github 的 Android 客户端项目

iosched

Repositoryhttps://github.com/google/iosched

Description: The Google I/O 2014 Android App

Cheesesquare

Repositoryhttps://github.com/chrisbanes/cheesesquare

Description: Demos the new Android Design library

muzei

Repositoryhttps://github.com/romannurik/muzei

Description: 定时更换桌面精美壁纸

u2020

Repositoryhttps://github.com/JakeWharton/u2020

Description: 开源框架集成的demo

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,565评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,085评论 2 44
  • 多年之前,我还在玩古剑奇谭。晴雪陪着屠苏回到乌蒙灵谷,那晚皓月当空,山间有微风徐来,良辰美景。 屠苏说: 我想要走...
    李卿慈阅读 1,351评论 4 6
  • 我最近发现,之所以我们感到自己的生活质量不如别人,是因为我们缺乏生活的细微意识。 干什么都需要有意识。比如踢足球比...
    诗酒趁年华_ec10阅读 768评论 0 0
  • 2016-10-21 全息财富 现如今,很多人已经不愁没钱,而愁有钱了不知道怎么打理,存在银行觉得浪费了,炒股又担...
    丰都吴红秀阅读 341评论 0 0