Android开发常用开源框架
Posted Jack-Chan
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,浏览器和
以上是关于Android开发常用开源框架的主要内容,如果未能解决你的问题,请参考以下文章