Android开发常用开源框架
Posted 再见孙悟空_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发常用开源框架相关的知识,希望对你有一定的参考价值。
Android开源框架系列
开源框架
https://github.com/JackChan1999/Android_Open_Project
目录
- Android开发常用框架
- android-open-project
- 开源项目
- 快速开发框架
- 工具集
- 2017年伊始,你需要尝试的25个Android第三方库
- 第三方开发平台
- 图片处理
- 网络请求
- 响应式编程
- 性能优化
- 图表
- 二维码
- 动画
- 多媒体
- 缓存
- 事件总线
- 数据库
- 依赖注入
- 热修复
- Log日志
- UI控件
- TextView
- UI控件第1季
- utils
- project
- 后台处理
- Awesome-MaterialDesign
Square& JakeWharton
框架名称 | 功能描述 |
---|---|
Picasso | 一个强大的图片下载与缓存的库 |
OkHttp | Square出品,一个Http与Http/2的客户端 |
Retrofit | Square出品,类型安全的Http客户端 |
ButterKnife | 将android视图和回调方法绑定到字段和方法上 |
sqlbrite | 一个响应式的数据查询框架 |
keywhiz | 一个隐私管理分配系统,能很好地与SOA配合 |
LeakCanary | 内存泄漏检测工具 |
javapoet | 动态生成Java源码 |
phrase | 字符串格式化 |
dagger | 依赖注入框架 |
Flow | Flow 将一个应用分成一个逻辑上的 Screen组合,Screen不是任何形式的特殊的库对象,而是一个被创造来代表我们应用视图的普通java对象(POJO) |
Mortar | Mortar是一个专注拖拽和依赖注入的库,Mortar 用以下几个不同的部分将一个应用分为可组合的模块:Blueprints, Presenters and a boatload of custom Views |
RxBinding | 可以实现数据层与View层的绑定,当数据发生变化,View会自动更新UI |
RxAndroid | RxJava的扩展, 优雅地处理异步请求 |
timber | 对Android的Log类进行封装后的一个Log工具 |
ViewPagerIndicator | Paging indicator widgets compatible with the ViewPager |
DiskLruCache | Java实现基于LRU的磁盘缓存 |
Otto | Otto 是 Square 公司出的一个事件库 (pub/sub 模式), 用来简化应用程序组件之间的通讯, otto 修改自 Google 的 Guava 库, 专门为 Android 平台进行了优化, 与上面介绍的 EventBus 相比, 两个库各有各的优点, 完全取决于我们自己项目的需求来选择它们哪一个 |
javapoet | A Java API for generating .java source files 动态生成Java源码 |
阿里巴巴
项目名称 | 功能描述 |
---|---|
freeline | Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeline能够为Android开发者节省很多喝杯咖啡的时间 |
weex | A framework for building Mobile cross-platform UI |
fastjson | A fast JSON parser/generator for Java |
Dubbo | Dubbo is a distributed, high performance RPC framework enpowering applications with service import/export capabilities |
AndFix | AndFix is a library that offer hot-fix for Android App. |
dexposed | dexposed enable ‘god’ mode for single android application. |
小米开源项目
项目名称 | 功能描述 |
---|---|
Notes | 小米便签社区开源版 |
FileExplorer | MIUI文件管理器社区开源版 |
SoundRecorder | MIUI录音机社区开源版 |
Google开源项目
项目名称 | 功能描述 |
---|---|
GCM | Google Cloud Messaging 消息推送 |
iosched: | Google I/O Android App |
android-topeka | Google官方给出的material design应用指南 |
android-UniversalMusicPlayer | Google官方给出的m音乐播放器,支持Android phones, tablets, Auto, Wear and Cast devices |
ExoPlayer | An extensible media player for Android |
guava | Google Core Libraries for Java 6+ |
flexbox-layout | FlexboxLayout is a library project which brings the similar capabilities of CSS Flexible Box Layout Module to Android. |
guice | 轻量级的依赖注入框架 |
gson | A Java serialization/deserialization library that can convert Java Objects into JSON and back. |
protobuf | Protocol Buffers - Google’s data interchange format |
material-design-icons | Material Design icons by Google |
auto | Auto 是 Java 生成器源代码集合,包括:AutoFactory - 兼容 JSR-330 的工厂;AutoService - ServiceLoader 的 Provider-configuration 文件;AutoValue - Java 1.6+ 的不可变 value-type 代码生成;Common - Helper 实用工具,用来编写注释处理器 |
android-architecture | A collection of samples to discuss and showcase different architectural tools and patterns for Android apps |
android-topeka
android-UniversalMusicPlayer
ExoPlayer
An extensible media player for Android
Streaming media with ExoPlayer - Google I/O 2016
guava
flexbox-layout
1、图片加载,缓存,处理
框架名称 | 功能描述 |
---|---|
Android Universal Image Loader | 一个强大的加载,缓存,展示图片的库,已过时 |
Picasso | 一个强大的图片下载与缓存的库 |
Fresco | 一个用于管理图像和他们使用的内存的库 |
Glide | 一个图片加载和缓存的库,使用的App有:网易新闻 |
GlidePalette | Android Lollipop Palette is now easy to use with Glide |
PicassoPalette | Android Lollipop Palette is now easy to use with Picasso ! |
Picasso-transformations | 一个为Picasso提供多种图片变换的库 |
Glide-transformations | 一个为Glide提供多种图片变换的库 |
Picasso是著名的开源组织Square出品的图片处理框架,使用的比较多
Glide是Google的员工基于Picasso开发,优化的,Android官网推荐使用的图片处理框架
Fresco是Facebook开源的图片处理框架,真正做到了三级缓存,功能强大,强烈推荐使用
Android Universal Image Loader是一个老牌的图片处理框架,但是在2015年的9月份已经停止更新维护,所以不推荐使用
2、图片裁剪
框架名称 | 功能描述 |
---|---|
uCrop | Image Cropping Library for Android,使用的App有:薄荷,哔哩哔哩 |
android-crop | 图片裁剪,使用的App有:网易新闻,芒果TV |
cropper | 图片裁剪开源框架 |
Android-Image-Cropper | Image Cropping Library for Android, optimized for Camera / Gallery |
PhotoCropper | Android 大图片裁剪终极解决方案 |
android-cropimage | CropImage Activity from Gallery.apk packaged as a reusable Android library |
PhotoCrop | A Library which can be used to crop images in Android similar to Facebook and Telegram,使用的App有:快手 |
uCrop
android-crop
Android-Image-Cropper
PhotoCropper
PhotoCrop
3、图片选择
框架名称 | 功能描述 |
---|---|
MultiImageSelector | 图片选择,使用的App有:薄荷 |
BGAPhotoPicker-Android | Android 图片选择、预览、九宫格图片控件、拖拽排序九宫格图片控件 |
TakePhoto | 轻量级Android照片处理框架 |
RxGalleryFinal | Android图片单选/多选、拍照、裁剪、压缩。视频选择和录制。GalleryFinal |
boxing | 一个多媒体选择器库,B站出品。可以选择一张或者多张图片,提供预览和裁剪功能。同样支持gif图,选择视频和图像压缩功能。 |
boxing
MultiImageSelector
BGAPhotoPicker-Android
TakePhoto
RxGalleryFinal
4、图片转换,压缩,滤镜
框架名称 | 功能描述 |
---|---|
Android-gpuimage | 一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜,使用的App有:快手 |
photoview | 使用的App有:薄荷,网易新闻 |
circleimageview | 圆形图片,使用的App有:薄荷 |
RoundedImageView | 圆形图片,使用的App有:薄荷 |
SelectableRoundedImageView | Android ImageView that supports different radii on each corner |
android-gif-drawable | gif图片,使用的App有:网易新闻,快手 |
Luban | 可能是最接近微信朋友圈的图片压缩算法 |
Compressor | Compressor is a lightweight and powerful android image compression library |
Android-gpuimage
circleimageview
RoundedImageView
SelectableRoundedImageView
)
5、高斯模糊,毛玻璃,图片模糊
框架名称 | 功能描述 |
---|---|
android-stackblur | Android StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann. |
Blurry | Blurry is an easy blur library for Android |
blurkit-android | The missing Android blurring library. Fast blur-behind layout that parallels ios. |
BlurView | Dynamic iOS-like blur of underlying Views for Android |
ImageBlurring | Android blurring image(bitmap) by java and jni |
android-stackblur
Blurry
blurkit-android
BlurView
ImageBlurring
缓存
框架名称 | 功能描述 |
---|---|
LruCache | Android原生API,内存缓存 |
DiskLruCache | Java实现基于LRU的磁盘缓存 |
ASimpleCache | 一个为android制定的轻量级的开源缓存框架 |
base-diskcache | Android 缓存库,融合了DiskLruCache和ASimpleCache |
网络请求
框架名称 | 功能描述 |
---|---|
httpclient | apache开源的网络请求框架,已过时 |
AsyncHttpClient | 基于httpclient封装,已过时 |
OkHttp | Square出品,一个Http与Http/2的客户端 |
Retrofit | Square出品,类型安全的Http客户端 |
Volley | Google推出的Android异步网络请求框架和图片加载框架,使用的App有:网易新闻 |
从Android 6.0 开始,Google删除了apache的开源网络请求框架httpclient,所以基于httpclient的AsyncHttpClient也不推荐使用了
Volley适合那些请求频繁但数据量不大的场景,不适用于大数据的请求,比如下载文件
Android 6.0 后,Android开始使用OkHttp,而Retrofit是一个网络代理框架,可以更简单的使用OkHttp
网络解析
框架名称 | 功能描述 |
---|---|
Gson | 一个Java序列化/反序列化库,可以将JSON和java对象互相转换 |
Jackson | Jackson可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象 |
Fastjson | Java上一个快速的JSON解析器/生成器 |
HtmlPaser | 一种用来解析单个独立html或嵌套html的方式 |
Jsoup | 一个以最好的DOM,CSS和jQuery解析html的库 |
数据库
框架名称 | 功能描述 |
---|---|
OrmLite | JDBC和Android的轻量级ORM java包 |
Sugar | 用超级简单的方法处理Android数据库 |
GreenDAO | 一种轻快地将对象映射到SQLite数据库的ORM解决方案,使用的App有:薄荷,京东 |
ActiveAndroid | 以活动记录方式为Android SQLite提供持久化 |
SQLBrite | SQLiteOpenHelper 和ContentResolver的轻量级包装 |
android-database-sqlcipher | 数据库加密 |
storio | Beautiful API for SQLiteDatabase and ContentResolver |
realm-java | 移动数据库,高性能数据库:一个SQLite和ORM的替换品 |
ObjectBox | 相信不少人都用过GreenDao和EventBus,这两库都是greenrobot公司出品。ObjectBox也是该公司出品。GreenDao号称是最快的与SQLite的对象关系映射(ORM)。但是自从2011年以来,公司声称发现了许多的缺陷,有很多问题影响了性能。所以开发出另外一套性能最好且易用的NoSQL数据库,优于其他数据库5-15倍的性能。 |
依赖注入
框架名称 | 功能描述 |
---|---|
ButterKnife | 将Android视图和回调方法绑定到字段和方法上 |
Dagger2 | 一个Android和java快速依赖注射器 |
AndroidAnotations | 快速安卓开发。易于维护 |
RoboGuice | Android平台的Google Guice 已退役 |
guice | Google开发的依赖注入框架 |
图表Chart
框架名称 | 功能描述 |
---|---|
WilliamChart | 创建图表的Android库 |
HelloCharts | 兼容到API8的Android图表库,使用的App有:薄荷 |
MPAndroidChart | 一个强大的Android图表视图/图形库,使用的App有:春雨医生 |
后台处理
框架名称 | 功能描述 |
---|---|
Tape | 一个轻快的,事务性的,基于文件的FIFO的库 |
Android Priority Job Queue | 一个专门为Android轻松调度任务的工作队列 |
事件总线
框架名称 | 功能描述 |
---|---|
EventBus | 安卓优化的事件总线,简化了活动、片段、线程、服务等的通信,使用的App有:薄荷 |
Otto | 一个基于Guava的增强的事件总线 |
HermesEventBus | 一个基于EventBus的、能在进程间发送和接收event的库,在IPC或者插件开发中非常有用 |
响应式编程
框架名称 | 功能描述 |
---|---|
RxJava | JVM上的响应式扩展 |
RxJavaJoins | 为RxJava提供Joins操作 |
RxAndroid | Android上的响应式扩展,在RxJava基础上添加了Android线程调度 |
RxBinding | 提供用RxJava绑定Android UI的API |
Agera | Android上的响应式编程 |
RxLifecycle | Lifecycle handling APIs for Android apps using RxJava |
Log框架
框架名称 | 功能描述 |
---|---|
Logger | 简单,漂亮,强大的Android日志工具 |
Hugo | 在调试版本上注解的触发方法进行日志记录 |
Timber | 一个小的,可扩展的日志工具 |
测试框架
框架名称 | 功能描述 |
---|---|
Mockito | Java编写的Mocking单元测试框架 |
Robotium | Android UI 测试 |
Robolectric | Android单元测试框架 |
Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等
调试框架
框架名称 | 功能描述 |
---|---|
Stetho | 调试Android应用的桥梁,使得可以利用Chrome开发者工具进行调试 |
性能优化
框架名称 | 功能描述 |
---|---|
LeakCanary | 内存泄漏检测工具 |
BlockCanary | 轻松找出Android App界面卡顿元凶 |
ACRA | Android应用程序崩溃报告 |
Google Guava | Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。 |
google protobuf | 由google开发,并且在google内部使用。Protobuf的作用和xml、json是一回事,但他是二进制格式,性能好、效率高。ProtoBuf开发者指南 |
热修复
框架名称 | 功能描述 |
---|---|
tinker | 腾讯开源的一个热修复框架 |
AndFix | alibaba热修复框架 |
dexposed | alibaba热修复框架 |
二维码
框架名称 | 功能描述 |
---|---|
Zxing | 一个二维码开源框架 |
barcodescanner | 使用的App有:薄荷 |
BGAQRCode-Android | 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式 |
zxing-android-embedded | 使用的App有:春雨医生,芒果TV |
多媒体
框架名称 | 功能描述 |
---|---|
ijkplayer | Bilibili开源的视频播放器 |
DanmakuFlameMaster | Android开源弹幕引擎·烈焰弹幕使,使用的App有:网易新闻 |
Vitamio | 一款全能多媒体开发框架,全面支持硬件解码与 GPU 渲染 |
FFmpeg | 一个基于C语言的多媒体开源框架 |
百度媒体云 | 基于百度视频处理、人脸识别、语音等技术媒体相关的整体解决方案 |
ExoPlayer | Google开源的视频播放器 |
KSYStreamer_Android
金山云Android采集推流SDK(Livestream SDK),支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)、连麦(RTC)、动态贴纸(Sticker)
KSYMediaPlayer_Android
金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode
KSYLive_Android
Android播放&推流融合版本[Android Play and LiveStreaming SDK] 直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode, 支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)
KSYMediaPlayer_Android
金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode
MD360Player4Android
Android上全景视频渲染的库
汉语转拼音
框架名称 | 功能描述 |
---|---|
pinyin4j | https://github.com/belerweb/pinyin4j |
TinyPinyin | 适用于Java和Android的快速、低内存占用的汉字转拼音库。 |
PinyinSearchLibrary | The library of PinyinSearch,a Java Library which provide data parsing methods, data matching method and so on for T9 search and Qwerty search.PinyinSearch = T9Search + QwertySearch |
com.pinyin4android | 唯品会使用 |
下载
框架名称 | 功能描述 |
---|---|
MultiThreadDownload | 使用的App有:薄荷 |
FileDownloader | Android 文件下载引擎,稳定、高效、灵活、简单易用 |
RxDownload | 基于RxJava和Retrofit打造的下载工具, 支持多线程下载和断点续传, 智能判断是否支持断点续传等功能 |
file-downloader | 安卓上轻量级Http/Https文件下载框架,我的目标是让安卓文件下载越简单越好,尽可能以最简洁明了的方式完成复杂需求。 |
动画
框架名称 | 功能描述 |
---|---|
facebook:rebound | A Java library that models spring dynamics and adds real world physics to your app |
ViewAnimator | A fluent Android animation library |
Material-Animations | Android Transition animations explanation with examples |
AndroidViewAnimations | Cute view animation collection. |
ListViewAnimations | An Android library which allows developers to easily add animations to ListView items |
recyclerview-animators | An Android Animation library which easily add itemanimator to RecyclerView items. |
RecyclerViewItemAnimators | An Android library which provides simple Item animations to RecyclerView items |
AnimationEasingFunctions | Android Animation Easing Functions. Let’s make animation more real! |
BaseAnimation | BaseAnimation收集网络Android相关动画集合,自定义控件等,近200多种源码 |
FragmentAnimations | 3D animations for support-v4 Fragment transition. |
AnimatedEditText | Androids EditText that animates the typed text. EditText is extended to create AnimatedEditText and a PinEntryEditText. |
ViewPagerTransforms | Library containing common animations needed for transforming ViewPager scrolling for Android v13+ |
lottie-android | Render After Effects animations natively on Android and iOS |
Android选择器类库
包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等
框架名称 | 功能描述 |
---|---|
material-calendarview | material design 风格的日历控件使用的App有:薄荷 |
MaterialDateTimePicker | Pick a date or time on Android in style,使用的App有:薄荷 |
android-times-square | Standalone Android widget for picking a single date from a calendar view. |
AndroidPicker | 安卓选择器类库,包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等。 |
Android-PickerView | 仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果 |
WheelPicker | Simple and fantastic wheel view in realistic effect for android. |
Android-FilePicker | Photopicker and document picker for android |
NumberPickerView | another NumberPicker with more flexible attributes on Android platform |
Android-PickerView-Library | Simple PickerView for Android |
Rajawali
Rajawali是一个用于Android应用的3D引擎,基于 OpenGL ES 2.0。它可以用于普通的应用程序,以及实时壁纸。使用的App有:网易新闻
aspectj
AspectJ是一个面向切面的框架,它扩展了Java语言。使用的App有:网易新闻
Apache Thrift
可伸缩的跨语言服务开发框架,使用的App有:网易新闻
Fabric SDK
GNU Trove
Trove 是一个快速、轻量级 Collection 类的集合。Trove 提供所有标准 java.util Collections 类的更快的版本以及能够直接在原语(primitive)(例如包含 int 键或值的 Map 等)上操作的 Collections 类的版本。使用的App有:网易新闻
Java-WebSocket
简单的说,websocket就是用来做网页聊天以及手机推送用的。使用的App有薄荷
以前不管使用HTTP轮询或使用TCP长连接等方式制作在线聊天系统,都有天然缺陷,随着HTML5的兴起,其中有一个新的协议WebSocket protocol,可实现浏览器与服务器全双工通信(full-duplex),它可以做到:浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。这个新的协议的特点正好适合这种在线即时通信。
现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。
而最比较新的技术去做轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求。
在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
org.eclipse.mat
内存分析。使用的App有薄荷,网易新闻
CommonAdapter
使用的App有:薄荷
Android-Best-Practices
JKeyboardPanelSwitch
Android键盘面板冲突 布局闪动处理方案
起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的Smart bar等, 后来逐一完善了,考虑到拥抱开源,看业界还是有很多应用存在类似问题。就有了这个repo
使用的App有:薄荷
美洽
最快连接你与顾客 美洽,在线客服软件的漂亮之选
MeiqiaSDK-Android GitHub - Meiqia/MeiqiaSDK-Android: 美洽 Android SDK 3.0 面向开发者的 Demo
使用的App有:薄荷
logger
使用的App有:薄荷
DeepLinkDispatch
最常见的应用就是在网页中跳转到App的某个页面,电商类应用可是都用了的。根据data跳转不同的页面
使用的App有:京东
Crouton
Context sensitive notifications for Android
Bolts-Android 一个底层库集合
com.arcsoft.livebroadcast
ReLinker
Relink是一个加载Android so文件(shared library)的一个库。
kik
CHAT ON KIK
Kik lets you connect with friends,
groups and the world around you
through chat. And now, you can
chat with bots too.
nanohttpd
嵌入式HTTP服务器 ,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。
i-jetty
jetty经过交叉编译移植到android平台的web服务器软件,它可以部署web网站
com.googlecode.mp4parser
Sparta
com.hp.hpl.sparta:XML、DOM、XPath解析器,Home Page
JRegex
JRegex:jregex:正则表达式库
NativeSubprocess
唯品会使用
NativeSubprocess 是一个可以让你在android 程序中创建Linux子进程并执行你的java代码的so库。由于市面上典型的内存清理工具只清理apk 包关联的进程,而不会处理linux原生进程,所以NativeSubprocess 可以做什么您懂的!
androidquery
Android-Query(AQuery)是一个轻量级的开发包,用于实现 Android 上的异步任务和操作 UI 元素,可让 Android 应用开发更简单、更容易,也更有趣。
唯品会使用,GitHub - androidquery/androidquery: AndroidQuery