All Projects → xiaoyaoyou1212 → Xsnow

xiaoyaoyou1212 / Xsnow

Licence: apache-2.0
💮基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Xsnow

Awesome Wanandroid
⚡致力于打造一款极致体验的 http://www.wanandroid.com/ 客户端,知识和美是可以并存的哦QAQn(*≧▽≦*)n
Stars: ✭ 2,525 (+50.48%)
Mutual labels:  rxjava2, greendao, retrofit2, glide, rxbus
Wanandroid
WanAndroid客户端,项目基于 Material Design + MVP +dagger2 + RxJava + Retrofit + Glide + greendao 等架构进行设计实现,极力打造一款 优秀的玩Android https://www.wanandroid.com 客户端,是一个不错的Android应用开发学习参考项目
Stars: ✭ 223 (-86.71%)
Mutual labels:  rxjava2, greendao, retrofit2, glide
Devring
安卓基础开发库,包含各常用模块,让开发简单点。
Stars: ✭ 414 (-75.33%)
Mutual labels:  rxjava2, greendao, retrofit2, glide
Weather-Guru-MVP
Sample Material-design Android weather application build with MVP architectural approach using Dagger2, RxJava2, Retrofit2, Event-Bus, GreenDao, Butterknife, Lottie etc.
Stars: ✭ 15 (-99.11%)
Mutual labels:  rxjava2, retrofit2, greendao
Wanandroid
🔥项目采用 Kotlin 语言,基于 MVP + RxJava + Retrofit + Glide + EventBus 等架构设计,努力打造一款优秀的 [玩Android] 客户端
Stars: ✭ 1,223 (-27.12%)
Mutual labels:  rxjava2, retrofit2, glide
BaseDevelop
an android project for now fashion open source framework
Stars: ✭ 24 (-98.57%)
Mutual labels:  glide, retrofit2, greendao
Mvpframes
整合大量主流开源项目并且可高度配置化的 Android MVP 快速集成框架,支持 AndroidX
Stars: ✭ 100 (-94.04%)
Mutual labels:  rxjava2, retrofit2, glide
BESTV
Android TV App powered by TMDb. It is a easy way to find the best TV content, the top movies, series... all of that in your TV.
Stars: ✭ 49 (-97.08%)
Mutual labels:  glide, rxjava2, retrofit2
Androidproject
Android 技术中台,但愿人长久,搬砖不再有
Stars: ✭ 4,398 (+162.1%)
Mutual labels:  rxjava2, retrofit2, glide
Bailan
基于retorfit2,Rxjva2,Okhttp3,Glide,Dagger2,GreenDAO等框架采用MVP架构的仿应用商店App
Stars: ✭ 542 (-67.7%)
Mutual labels:  rxjava2, greendao, glide
Rxapp
Stars: ✭ 108 (-93.56%)
Mutual labels:  rxjava2, retrofit2, glide
MVVM-Demo
This demo for MVVM Design pattern for android
Stars: ✭ 20 (-98.81%)
Mutual labels:  glide, rxjava2, retrofit2
Hibiscus
Hibiscus, mobile microblogging application.
Stars: ✭ 14 (-99.17%)
Mutual labels:  glide, rxjava2, retrofit2
situp android proj
🚀一个基组件化、模块化、MVP + MVVM 计划 App,兼容安卓 10.0 9.0 8.0 等 🔥a app like keep, you can edit your plans here, and you can share your life to others by post, too.🔥
Stars: ✭ 15 (-99.11%)
Mutual labels:  glide, rxjava2, retrofit2
BakingApp
Udacity Android Developer Nanodegree, project 2.
Stars: ✭ 54 (-96.78%)
Mutual labels:  glide, rxjava2, retrofit2
MockAppMVVM
A sample app structure using the MVVM architecture using Retrofit, Dagger2, LiveData, RxJava, ViewModel and Room.
Stars: ✭ 14 (-99.17%)
Mutual labels:  glide, rxjava2, retrofit2
Kotlin Life
App界的一股清流 音视频vr应有尽有 完全按照Material design规范设计的App (written with java and Kotlin)
Stars: ✭ 864 (-48.51%)
Mutual labels:  greendao, retrofit2, glide
Mvvmsmart
基于谷歌最新AAC架构,MVVM设计模式的一套快速开发库,整合ViewModel+Lifecycles+Navigation+DataBinding+LiveData+Okhttp+Retrofit+RxJava+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发高质量、易维护的Android应用。 项目组会持续维护,请放心使用.欢迎Start并Fork交流.
Stars: ✭ 382 (-77.23%)
Mutual labels:  rxjava2, retrofit2, glide
Mvvmhabit
goldze: 本人喜欢尝试新的技术,以后发现有好用的东西,我将会在企业项目中实战,没有问题了就会把它引入到MVVMHabit中,一直维护着这套框架,谢谢各位朋友的支持。如果觉得这套框架不错的话,麻烦点个 star,你的支持则是我前进的动力!
Stars: ✭ 6,789 (+304.59%)
Mutual labels:  rxjava2, retrofit2, glide
Easyandroid
一个完整基于kotlin的安卓开发框架,采用了mvvm设计模式。涵盖了: 1、基于retrofit2封装的通过kotlin协程实现的网络框架 2、基于阿里开源router修改的api-router实现项目模块化 3、基于glide的图片加载缓存框架 4、基于room实现的往来数据缓存加载 5、基于step实现的数据异步提交 6、基于PreferenceHolder实现的本地数据快速存储 7、基于mlist实现的简单复杂列表的快速开发扩展 8、定制的toolbar可以自适应异形屏,挖孔屏,水滴屏等等。。 本框架几乎涵盖了开发所需的所有模块组件。简单fork之后就可以基于框架快速开发。
Stars: ✭ 33 (-98.03%)
Mutual labels:  cache, retrofit2, glide

XSnowIcon


XSnow

Codacy Badge License API

基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。

XSnow,X:未知一切,取其通用之意;Snow:雪,取其纯净之意。该框架通用纯净,只依赖公共核心库。

功能简介

  • 支持GET、POST等请求方式,请求与响应数据自动进行转换处理,无需上层分别定义接口;

  • 支持OKHttp本身的Http缓存,也支持外部自定义的在线离线缓存,可配置缓存策略,共有五种缓存策略,如优先获取缓存策略,具体实现参考http包下的strategy包;

  • 支持异常统一处理,定制了ApiException拦截处理,统一返回异常信息;

  • 支持链式编程,数据通过回调返回,也支持返回Observable,可继续采用RxJava的相关特性;

  • 支持失败重试机制,可配置失败重试次数以及重试时间间隔;

  • 支持根据Tag中途取消请求,也可以取消所有请求;

  • 支持泛型T接收处理响应数据,也可根据服务器返回的统一数据模式定制如包含Code、Data、Message的通用Model ApiResult;由于ApiResult的属性不定,无法做到统一处理,所以单独放到netexpand module中,里面包含与其相关的请求处理,可以根据该module定制属于各自服务器的相关功能;

  • 支持全局配置和单个请求的局部配置,如果局部配置与全局配置冲突,那么局部配置会替换全局配置;

  • 全局配置支持CallAdapter.FactoryConverter.Factoryokhttp3.Call.FactorySSLSocketFactoryHostnameVerifierConnectionPool、主机URL、请求头、请求参数、代理、拦截器、Cookie、OKHttp缓存、连接超时时间、读写超时时间、失败重试次数、失败重试间隔时间的一系列配置;

  • 局部请求配置支持主机URL、请求后缀、请求头、请求参数、拦截器、本地缓存策略、本地缓存时间、本地缓存key、连接超时时间、读写超时时间的一系列配置;

  • 支持单文件和多文件上传,上传类型支持图片、字节流、字节数组等,可回调上传进度;

  • 支持小文件下载,可回调下载进度;

  • 支持内存、磁盘二级缓存以及SharedPreferences缓存,可自由拓展。磁盘缓存支持KEY加密存储,可定制缓存时长;SharedPreferences支持内容安全存储,采用Base64加密解密;

  • 支持事件消息发送,采用Rx响应式编程思想建立的RxBus模块,采用注解方式标识事件消耗地,通过遍历查找事件处理方法;

  • 支持动态权限申请管理;

  • 支持GreenDao数据库操作;

  • 支持Glide图片加载。

  • ......

效果展示

操作演示动画

使用简介

1、引用依赖

在 build 文件的 dependencies 添加如下依赖:

compile 'com.vise.xiaoyaoyou:xsnow:x.x.x'

其中的 x.x.x 为版本号,下文有具体介绍。

如果需要使用 Glide 加载图片功能,还需要添加如下依赖:

compile 'com.github.bumptech.glide:glide:3.7.0'

如果需要使用GreenDao数据库功能,还需要添加如下依赖:

compile 'org.greenrobot:greendao:3.2.0'

并根据 GreenDao 数据库的使用规则进行相关配置。

2、初始化

在 Application 中进行全局初始化以及添加全局相关配置,简易初始化使用如下:

ViseHttp.init(this);
ViseHttp.CONFIG()
        //配置请求主机地址
        .baseUrl("服务器地址");

如果想快速接入项目中使用只需配置服务器地址就行,其他配置都将采用库中默认的配置。

如果想修改全局相关配置以及查看具体请求调用介绍,请移步 >>> 详细使用介绍文档。

如果想深入了解项目中用到的相关技术,请移步 >>> 相关技术说明文档。

代码托管

JCenter

相关代码 Release 版本已上传到 JCenter,如需查看相关版本记录可点击上面链接进行查询。

版本说明

LatestVersion

如需查看相关版本记录点击上面进入相关链接查看即可,下面是最新修改记录:

  • V2.1.9(2018-06-08)
    • 修改处理数据转换的线程为IO线程;
    • 增加针对Type为String时不解析功能;
    • 修改权限管理持有上下文引用问题。

混淆配置

由于 XSnow 库有依赖部分第三方库,所以需要对依赖的第三方库也做相应的混淆保护,具体的混淆配置如下:

#glide
-dontwarn com.bumptech.glide.**
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

#gson
-dontwarn com.google.gson.**
-keep class com.google.gson.** { *; }

#rxjava
-dontwarn io.reactivex.**
-keep class io.reactivex.** { *; }

#okhttp
-dontwarn okio.**
-keep class okio.** { *; }
-dontwarn okhttp3.**
-keep class okhttp3.** { *; }

#retrofit
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions

#greendao
-dontwarn org.greenrobot.greendao.**
-keep class org.greenrobot.greendao.** { *; }
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

针对 XSnow 库本身的混淆保护配置如下:

#XSnow
-dontwarn com.vise.utils.**
-keep class com.vise.xsnow.event.inner.ThreadMode { *; }
-keep class com.vise.xsnow.http.api.ApiService { *; }
-keep class com.vise.xsnow.http.mode.CacheMode
-keep class com.vise.xsnow.http.mode.CacheResult { *; }
-keep class com.vise.xsnow.http.mode.DownProgress { *; }
-keep class com.vise.xsnow.http.strategy.**
-keepclassmembers class * {
    @com.vise.xsnow.event.Subscribe <methods>;
}
-keep class com.bumptech.glide.Glide

如果有拷贝使用到拓展库 netexpand,那么需要保护 ApiResult 这个类,具体配置如下:

#netexpand
-keep class com.vise.netexpand.mode.ApiResult { *; }

注意事项

  • 该框架引用了日志系统和公共工具库,这两个库都很轻量级,具体使用详情可分别参考https://github.com/xiaoyaoyou1212/ViseLoghttps://github.com/xiaoyaoyou1212/ViseUtils

  • 项目中的每个功能都附有使用示例,但示例可能不是很全,主要是提供一个使用的思路,有些现象需要通过查看日志才能看到,如数据库的增删改查操作、事件总线的通知功能等。

  • ==网络访问的API调试采用的是moco服务进行处理的,项目中有提供开启该服务的命令,需要在使用时调用命令开启该服务,还有需要将应用初始化的baseurl设置为本地电脑的IP地址。(重点注意)==

  • 上传文件功能由于使用的是公司内部服务器调试,所以在demo中只提供了一个使用示例,无法看到效果。

关于我

一位热爱分享的技术爱好者!

人生就是一场游戏,你遇到的障碍就是各种关卡,所以,让我们尽情地去攻略吧!

WebsiteGitHubCSDN

最后


如果觉得该项目有帮助,请点下 Star,也欢迎推荐给你的朋友。


如果感觉自己从项目中学到了很多,请不要吝惜你的钱包给点打赏鼓励吧,一分钱也是爱呀! 微信支付


如果有好的想法和建议,也欢迎Fork项目参与进来,使用中如果有任何问题和建议都可以进群交流,QQ群二维码如下:

QQ群 (此群已满)

QQ群


Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].