{"id":19993298,"url":"https://github.com/xiaoyaoyou1212/XSnow","last_synced_at":"2025-05-04T12:31:17.434Z","repository":{"id":202317703,"uuid":"79105840","full_name":"xiaoyaoyou1212/XSnow","owner":"xiaoyaoyou1212","description":"💮基于RxJava2+Retrofit2精心打造的Android基础框架，包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载，基本都是项目中必用功能，每个模块充分解耦，可自由拓展。","archived":false,"fork":false,"pushed_at":"2018-07-16T07:01:07.000Z","size":21425,"stargazers_count":1706,"open_issues_count":13,"forks_count":387,"subscribers_count":53,"default_branch":"master","last_synced_at":"2025-04-08T19:22:08.103Z","etag":null,"topics":["cache","glide","greendao","retrofit2","rxbus","rxjava2","rxpermissions"],"latest_commit_sha":null,"homepage":"http://www.huwei.tech/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xiaoyaoyou1212.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-01-16T10:04:59.000Z","updated_at":"2025-01-09T02:26:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"9947defb-749e-48d9-909e-3a1112d58658","html_url":"https://github.com/xiaoyaoyou1212/XSnow","commit_stats":null,"previous_names":["xiaoyaoyou1212/xsnow"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaoyaoyou1212%2FXSnow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaoyaoyou1212%2FXSnow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaoyaoyou1212%2FXSnow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaoyaoyou1212%2FXSnow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xiaoyaoyou1212","download_url":"https://codeload.github.com/xiaoyaoyou1212/XSnow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252334332,"owners_count":21731387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cache","glide","greendao","retrofit2","rxbus","rxjava2","rxpermissions"],"created_at":"2024-11-13T04:52:34.587Z","updated_at":"2025-05-04T12:31:12.425Z","avatar_url":"https://github.com/xiaoyaoyou1212.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"![XSnowIcon](http://img.blog.csdn.net/20180126224550513)\n\n* * *\n\n# XSnow\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/bfcabf1d9793485d84f090e542255710)](https://www.codacy.com/app/xiaoyaoyou1212/XSnow?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=xiaoyaoyou1212/XSnow\u0026amp;utm_campaign=Badge_Grade) [![License](https://img.shields.io/badge/License-Apache--2.0-green.svg)](https://github.com/xiaoyaoyou1212/XSnow/blob/master/LICENSE) [![API](https://img.shields.io/badge/API-12%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=12)\n\n基于RxJava2+Retrofit2精心打造的Android基础框架，包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载，基本都是项目中必用功能，每个模块充分解耦，可自由拓展。\n\nXSnow，X：未知一切，取其通用之意；Snow：雪，取其纯净之意。该框架通用纯净，只依赖公共核心库。\n\n- 项目地址：[https://github.com/xiaoyaoyou1212/XSnow](https://github.com/xiaoyaoyou1212/XSnow)\n\n- 项目依赖：`compile 'com.vise.xiaoyaoyou:xsnow:2.1.9'`\n\n### 功能简介\n\n- 支持GET、POST等请求方式，请求与响应数据自动进行转换处理，无需上层分别定义接口；\n\n- 支持OKHttp本身的Http缓存，也支持外部自定义的在线离线缓存，可配置缓存策略，共有五种缓存策略，如优先获取缓存策略，具体实现参考http包下的strategy包；\n\n- 支持异常统一处理，定制了ApiException拦截处理，统一返回异常信息；\n\n- 支持链式编程，数据通过回调返回，也支持返回Observable，可继续采用RxJava的相关特性；\n\n- 支持失败重试机制，可配置失败重试次数以及重试时间间隔；\n\n- 支持根据Tag中途取消请求，也可以取消所有请求；\n\n- 支持泛型T接收处理响应数据，也可根据服务器返回的统一数据模式定制如包含Code、Data、Message的通用Model ApiResult\u003cT\u003e；由于ApiResult的属性不定，无法做到统一处理，所以单独放到netexpand module中，里面包含与其相关的请求处理，可以根据该module定制属于各自服务器的相关功能；\n\n- 支持全局配置和单个请求的局部配置，如果局部配置与全局配置冲突，那么局部配置会替换全局配置；\n\n- 全局配置支持`CallAdapter.Factory`、`Converter.Factory`、`okhttp3.Call.Factory`、`SSLSocketFactory`、`HostnameVerifier`、`ConnectionPool`、主机URL、请求头、请求参数、代理、拦截器、Cookie、OKHttp缓存、连接超时时间、读写超时时间、失败重试次数、失败重试间隔时间的一系列配置；\n\n- 局部请求配置支持主机URL、请求后缀、请求头、请求参数、拦截器、本地缓存策略、本地缓存时间、本地缓存key、连接超时时间、读写超时时间的一系列配置；\n\n- 支持单文件和多文件上传，上传类型支持图片、字节流、字节数组等，可回调上传进度；\n\n- 支持小文件下载，可回调下载进度；\n\n- 支持内存、磁盘二级缓存以及SharedPreferences缓存，可自由拓展。磁盘缓存支持KEY加密存储，可定制缓存时长；SharedPreferences支持内容安全存储，采用Base64加密解密；\n\n- 支持事件消息发送，采用Rx响应式编程思想建立的RxBus模块，采用注解方式标识事件消耗地，通过遍历查找事件处理方法；\n\n- 支持动态权限申请管理；\n\n- 支持GreenDao数据库操作；\n\n- 支持Glide图片加载。\n\n- ......\n\n### 效果展示\n\n![操作演示动画](https://github.com/xiaoyaoyou1212/XSnow/blob/master/screenshot/screenshot.gif)\n\n### 使用简介\n\n1、引用依赖\n\n在 build 文件的 dependencies 添加如下依赖：\n```\ncompile 'com.vise.xiaoyaoyou:xsnow:x.x.x'\n```\n其中的 x.x.x 为版本号，下文有具体介绍。\n\n如果需要使用 Glide 加载图片功能，还需要添加如下依赖：\n```\ncompile 'com.github.bumptech.glide:glide:3.7.0'\n```\n\n如果需要使用GreenDao数据库功能，还需要添加如下依赖：\n```\ncompile 'org.greenrobot:greendao:3.2.0'\n```\n并根据 GreenDao 数据库的使用规则进行相关配置。\n\n2、初始化\n\n在 Application 中进行全局初始化以及添加全局相关配置，简易初始化使用如下：\n\n```\nViseHttp.init(this);\nViseHttp.CONFIG()\n        //配置请求主机地址\n        .baseUrl(\"服务器地址\");\n```\n\n如果想快速接入项目中使用只需配置服务器地址就行，其他配置都将采用库中默认的配置。\n#### 如果想修改全局相关配置以及查看具体请求调用介绍，请移步 [\u003e\u003e\u003e 详细使用介绍](https://github.com/xiaoyaoyou1212/XSnow/wiki/%E8%AF%A6%E7%BB%86%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D)文档。\n\n#### 如果想深入了解项目中用到的相关技术，请移步 [\u003e\u003e\u003e 相关技术说明](https://github.com/xiaoyaoyou1212/XSnow/wiki/%E7%9B%B8%E5%85%B3%E6%8A%80%E6%9C%AF%E8%AF%B4%E6%98%8E)文档。\n\n### 代码托管\n\n[![JCenter](https://img.shields.io/badge/JCenter-2.1.9-orange.svg)](https://jcenter.bintray.com/com/vise/xiaoyaoyou/xsnow/2.1.9/)\n\n相关代码 Release 版本已上传到 JCenter，如需查看相关版本记录可点击上面链接进行查询。\n\n### 版本说明\n\n[![LatestVersion](https://img.shields.io/badge/LatestVersion-2.1.9-orange.svg)](https://github.com/xiaoyaoyou1212/XSnow/blob/master/VERSION.md)\n\n如需查看相关版本记录点击上面进入相关链接查看即可，下面是最新修改记录：\n\n- V2.1.9（2018-06-08）\n    - 修改处理数据转换的线程为IO线程；\n    - 增加针对Type为String时不解析功能；\n    - 修改权限管理持有上下文引用问题。\n\n### 混淆配置\n由于 XSnow 库有依赖部分第三方库，所以需要对依赖的第三方库也做相应的混淆保护，具体的混淆配置如下：\n```\n#glide\n-dontwarn com.bumptech.glide.**\n-keep public class * implements com.bumptech.glide.module.GlideModule\n-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {\n  **[] $VALUES;\n  public *;\n}\n\n#gson\n-dontwarn com.google.gson.**\n-keep class com.google.gson.** { *; }\n\n#rxjava\n-dontwarn io.reactivex.**\n-keep class io.reactivex.** { *; }\n\n#okhttp\n-dontwarn okio.**\n-keep class okio.** { *; }\n-dontwarn okhttp3.**\n-keep class okhttp3.** { *; }\n\n#retrofit\n-dontwarn retrofit2.**\n-keep class retrofit2.** { *; }\n-keepattributes Signature\n-keepattributes Exceptions\n\n#greendao\n-dontwarn org.greenrobot.greendao.**\n-keep class org.greenrobot.greendao.** { *; }\n-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {\n    public static java.lang.String TABLENAME;\n}\n-keep class **$Properties\n```\n\n针对 XSnow 库本身的混淆保护配置如下：\n```\n#XSnow\n-dontwarn com.vise.utils.**\n-keep class com.vise.xsnow.event.inner.ThreadMode { *; }\n-keep class com.vise.xsnow.http.api.ApiService { *; }\n-keep class com.vise.xsnow.http.mode.CacheMode\n-keep class com.vise.xsnow.http.mode.CacheResult { *; }\n-keep class com.vise.xsnow.http.mode.DownProgress { *; }\n-keep class com.vise.xsnow.http.strategy.**\n-keepclassmembers class * {\n    @com.vise.xsnow.event.Subscribe \u003cmethods\u003e;\n}\n-keep class com.bumptech.glide.Glide\n```\n\n如果有拷贝使用到拓展库 netexpand，那么需要保护 ApiResult 这个类，具体配置如下：\n```\n#netexpand\n-keep class com.vise.netexpand.mode.ApiResult { *; }\n```\n\n### 注意事项\n\n- 该框架引用了日志系统和公共工具库，这两个库都很轻量级，具体使用详情可分别参考[https://github.com/xiaoyaoyou1212/ViseLog](https://github.com/xiaoyaoyou1212/ViseLog)和[https://github.com/xiaoyaoyou1212/ViseUtils](https://github.com/xiaoyaoyou1212/ViseUtils)。\n\n- 项目中的每个功能都附有使用示例，但示例可能不是很全，主要是提供一个使用的思路，有些现象需要通过查看日志才能看到，如数据库的增删改查操作、事件总线的通知功能等。\n\n- ==网络访问的API调试采用的是moco服务进行处理的，项目中有提供开启该服务的命令，需要在使用时调用命令开启该服务，还有需要将应用初始化的baseurl设置为本地电脑的IP地址。(重点注意)==\n\n- 上传文件功能由于使用的是公司内部服务器调试，所以在demo中只提供了一个使用示例，无法看到效果。\n\n### 关于我\n\n#### 一位热爱分享的技术爱好者！\n\n人生就是一场游戏，你遇到的障碍就是各种关卡，所以，让我们尽情地去攻略吧！\n\n[![Website](https://img.shields.io/badge/Website-huwei-blue.svg)](http://www.huwei.tech/)[![GitHub](https://img.shields.io/badge/GitHub-xiaoyaoyou1212-blue.svg)](https://github.com/xiaoyaoyou1212)[![CSDN](https://img.shields.io/badge/CSDN-xiaoyaoyou1212-blue.svg)](http://blog.csdn.net/xiaoyaoyou1212)\n\n\n### 最后\n\n* * *\n\n如果觉得该项目有帮助，请点下 Star，也欢迎推荐给你的朋友。\n\n* * *\n\n如果感觉自己从项目中学到了很多，请不要吝惜你的钱包给点打赏鼓励吧，一分钱也是爱呀！\n![微信支付](http://img.blog.csdn.net/20180127000514609)\n\n* * *\n\n如果有好的想法和建议，也欢迎Fork项目参与进来，使用中如果有任何问题和建议都可以进群交流，QQ群二维码如下：\n\n![QQ群](https://github.com/xiaoyaoyou1212/XSnow/blob/master/screenshot/qq_chat_first.png)\n(此群已满)\n\n![QQ群](https://github.com/xiaoyaoyou1212/XSnow/blob/master/screenshot/qq_chat_second.png)\n\n* * *\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaoyaoyou1212%2FXSnow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxiaoyaoyou1212%2FXSnow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaoyaoyou1212%2FXSnow/lists"}