KICC-NOTIFY-ANDROID
公司官网 •
仓库地址
## 🐬 介绍
| kicc-notify-android 一个简单好用的通知APP |
|----------------------------------|
## ✨ 特性
- MVVM开发模式
- 采用最新的Androidx扩展库,并向后兼容各个Android版本
- Material-Dialogs一个漂亮的、流畅的、可定制的material design风格的对话框。
- 引入RxJava+RxAndroid,支持java响应式编程与安卓扩展异步UI事件响应式编程
- 引入RxBinding,支持用RxJava的形式来处理UI事件
- 引入RxLifecycle让安卓组件(活动或者碎片)生命周期同步,防止内存泄露
- 采用Retrofit、OkHttp、RxJava进行网络请求
- 集成AndroidUtilCode工具库,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以甜甜的
- 集成Dagger2实现了IOC依赖控制反转,帮助您的应用程序拆分为松散耦合的组件,可以更轻松地开发、测试和维护这些组件
- 集成Calligraphy3字体风格库,实现字体个性化
- 集成Lombok,让代码变得更加简洁,消除冗长代码提高开发效率
- 集成腾讯bugly平台,支持异常上报和数据分析功能,帮助开发者快速定位bug
- 集成PictureSelector,支持微信风格的图片自定义选择器进行上传
- 集成友盟库,支持消息推送、社会化分享、QQ登录、微信登录、自定义启动引导页面
- 集成华为厂商通道,支持huawei-push、huawei-Core等服务直接唤醒app
- 集成DialogX对话框组件库,松实现各种对话框、菜单和提示效果,更有Material You、iOS、MIUI等主题扩展可选
- 集成XBanner(图片轮播)支持图片无限轮播,支持AndroidX、自定义指示点、显示提示文字、切换动画、自定义布局,一屏多显、视频图片混合轮播等功能
- 集成SmartRefreshLayout-下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架
- 集成Glide,支持各种图片加载
- 集成腾讯MMKV,让 key-value 数据存储变得更加高效
- 支持地图导航,智能路线规划,后台刷新定位、媒体锁后台保活
- 集成AdvancedRecyclerView支持各种回收视图高级适配器操作(可滑动列表,可拖拽列表)
##
黑客节
加入[Github HackToberFest](https://hacktoberfest.com/) 开始为此项目做出贡献.
## 🍀 基础准备
- 了解 **RxJava**
- 了解 **Androidx**
- 了解 **Dagger2**
## 🔨 开发目录
```
├─ dolphin-android -- Android海豚APP
│ ├─ app -- app目录
│ │ ├─ src -- 源代码
│ │ │ ├─ androidTest -- 安卓插桩测试单元测试
│ │ │ ├─ main -- 源代码入口
│ │ │ │ ├─ java -- Java源代码根目录
│ │ │ │ │ ├─ com.kanglai.push -- 包名
│ │ │ │ │ │ ├─ app -- 初始化应用程序
│ │ │ │ │ │ ├─ constant -- 全局常量
│ │ │ │ │ │ ├─ di -- dagger2依赖注入
│ │ │ │ │ │ │ ├─ component -- 组件媒介
│ │ │ │ │ │ │ ├─ module -- 注入模块提供
│ │ │ │ │ │ │ ├─ scope -- 局部单例生命周期注解
│ │ │ │ │ │ ├─ engine -- 图片选择器第三方组件引擎
│ │ │ │ │ │ ├─ entity -- 数据实体类
│ │ │ │ │ │ ├─ listener -- 监听器
│ │ │ │ │ │ ├─ mapper -- api请求数据映射层
│ │ │ │ │ │ ├─ service -- 业务逻辑处理层
│ │ │ │ │ │ ├─ ui -- 活动界面控制层
│ │ │ │ │ │ │ ├─ activity -- 活动窗口
│ │ │ │ │ │ │ ├─ adapter -- 回收视图适配器
│ │ │ │ │ │ │ ├─ fragment -- 活动碎片局部窗口
│ │ │ │ │ │ │ ├─ vm -- 视图模型
│ │ │ │ │ │ ├─ util -- 全局工具类
│ │ │ │ ├─ res -- 资源文件
│ │ │ │ │ ├─ drawable -- 默认图片目录(像素密度目录中找不到就使用默认的)
│ │ │ │ │ ├─ drawable-nodpi -- 像素密度无关的图片目录
│ │ │ │ │ ├─ drawable-xxhdpi -- 1080*1920 分辨率下的图片目录
│ │ │ │ │ ├─ drawable-xxxhdpi -- 1440*2560 分辨率下的图片目录
│ │ │ │ │ ├─ layout -- 界面布局文件
│ │ │ │ │ ├─ values -- 参数配置
│ │ │ │ │ ├─ xml -- 配置文件
│ │ │ ├─ unitTest -- 本地单元测试
│ ├─ gradle -- gradle下载配置
│ ├─ library -- 基础依赖库
│ │ ├─ core -- 核心库
│ │ │ ├─ libs -- 本地离线依赖
│ │ │ ├─ src -- 源代码
│ │ │ │ ├─ main -- 源代码入口
│ │ │ │ │ ├─ assets -- 外部文件的资源目录,不会被编译
│ │ │ │ │ ├─ java -- Java源代码根目录
│ │ │ │ │ │ ├─ com.kanglai.core -- 包名
│ │ │ │ │ │ │ ├─ amap -- 高德地图相关
│ │ │ │ │ │ │ ├─ base -- 基础核心类
│ │ │ │ │ │ │ ├─ binding -- 扩展组件的属性绑定
│ │ │ │ │ │ │ │ ├─ command -- 绑定视图命令回调
│ │ │ │ │ │ │ │ ├─ viewadapter -- 绑定视图适配器
│ │ │ │ │ │ │ ├─ bus -- 全局组件事件订阅发布通信
│ │ │ │ │ │ │ ├─ constant -- 全局常量
│ │ │ │ │ │ │ ├─ crash -- 自定义应用程序崩溃
│ │ │ │ │ │ │ ├─ entity -- 数据实体类
│ │ │ │ │ │ │ ├─ enums -- 枚举定义
│ │ │ │ │ │ │ ├─ http -- http请求
│ │ │ │ │ │ │ │ ├─ api -- 响应信息
│ │ │ │ │ │ │ │ ├─ exception -- 请求错误处理
│ │ │ │ │ │ │ │ ├─ file -- 文件流相关处理
│ │ │ │ │ │ │ │ ├─ interceptor -- 请求拦截器
│ │ │ │ │ │ │ │ ├─ observer -- 基础文件响应可观测监听
│ │ │ │ │ │ │ ├─ listener -- 监听器
│ │ │ │ │ │ │ ├─ service -- 安卓后台服务
│ │ │ │ │ │ │ ├─ util -- 全局工具类
│ │ │ │ │ │ │ ├─ widget -- 安卓组件扩展
│ │ │ │ │ ├─ res -- 资源文件
│ │ │ │ │ │ ├─ drawable-hdpi -- 480*800/480*854 分辨率下的图片目录
│ │ │ │ │ │ ├─ drawable-mdpi -- 320*480 分辨率下的图片目录
│ │ │ │ │ │ ├─ drawable-xhdpi -- 720*1280 分辨率下的图片目录
│ │ │ │ │ │ ├─ drawable-xxhdpi -- 1080*1920 分辨率下的图片目录
│ │ │ │ │ │ ├─ drawable-xxxhdpi -- 1440*2560 分辨率下的图片目录
│ │ │ │ │ │ ├─ layout -- 界面布局文件
│ │ │ │ │ │ ├─ raw -- 原始文件目录
│ │ │ │ │ │ ├─ values -- 参数配置
│ │ │ │ │ ├─ res-sw -- 最小宽度屏幕适配资源
│ │ ├─ umeng -- 友盟库
│ │ │ ├─ libs -- 本地离线依赖
│ │ │ ├─ src -- 源代码
│ │ │ │ ├─ main -- 源代码入口
│ │ │ │ │ ├─ java -- Java源代码根目录
│ │ │ │ │ │ ├─ com.kanglai.umeng -- 包名
│ │ │ │ │ │ │ ├─ entity -- 数据实体类
│ │ │ │ │ │ │ ├─ enums -- 枚举定义
│ │ │ │ │ │ │ ├─ listener -- 监听器
│ │ │ │ │ ├─ res -- 资源文件
│ │ │ │ │ │ ├─ layout -- 界面布局文件
│ │ │ │ │ │ ├─ xml -- 配置文件
```
## 🤔 运行配置
- 支持的so库 "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
- 运行Android版本 >= API 29
- 设备成功联网
- JDK 版本 11.0.5
- AndroidStudio >= 2022.1.1
- 正式线端口号:http://kicc.kanglailab.com:9999
- 本地测试端口号: http://192.168.3.10:9999
## 🛹 调用的第三方库以及地址
#### AndroidX 兼容库
##### Android 原生库、工具、UI 解决方案
链接:[https://github.com/androidx/androidx](https://github.com/androidx/androidx)
#### Material 安卓部件风格设计库
##### Android Material 样式库
链接:[https://github.com/material-components/material-components-android](https://github.com/material-components/material-components-android)
#### 反应式编程与安卓扩展异步UI事件反应式编程
##### Android 响应式组件帮助类
链接:[https://github.com/ReactiveX/RxAndroid](https://github.com/ReactiveX/RxAndroid)
#### 反应式编程与安卓组件(活动或者碎片)生命周期同步,防止内存泄露
##### 使用 RxJava 的 Android 应用程序的生命周期处理 API
链接:[https://github.com/trello/RxLifecycle](https://github.com/trello/RxLifecycle)
#### 网络请求客户端
链接:[https://github.com/square/retrofit](https://github.com/square/retrofit)
#### Json 解析工具
链接:[https://github.com/google/gson](https://github.com/google/gson)
#### AndroidUtilCode --推荐
参考文档:[https://blankj.com/2016/07/31/android-utils-code](https://blankj.com/2016/07/31/android-utils-code)
#### 依赖注入框架dagger2,类似于spring的ioc
链接:[https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn](https://developer.android.com/training/dependency-injection/dagger-android?hl=zh-cn)
#### 设置自定义字体
链接:[https://github.com/InflationX/Calligraphy](https://github.com/InflationX/Calligraphy)
#### 底部导航栏
链接:[https://github.com/tyzlmjj/PagerBottomTabStrip](https://github.com/tyzlmjj/PagerBottomTabStrip)
#### 腾讯bugly崩溃日志分析平台异常捕捉
链接:[https://bugly.qq.com/docs/user-guide/instruction-manual-android/?v=20190418140644](https://bugly.qq.com/docs/user-guide/instruction-manual-android/?v=20190418140644)
#### 安卓图片选择器(功能比较全面)
包括-图片压缩、图片裁剪、自定义相机 (按需引入)
链接:[https://github.com/LuckSiege/PictureSelector](https://github.com/LuckSiege/PictureSelector)
#### 友盟消息推送
链接:[https://developer.umeng.com/docs/67966/detail/173238](https://developer.umeng.com/docs/67966/detail/173238)
```
集成步骤:
1.申请Appkey
2.接入Push SDK 从官网下载sdk 复制到libs目录
然后 app/build.gradle 目录中添加
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api fileTree(dir: 'libs', include: ['*.aar'])
}
3.然后就是接口的使用了
在自定义Application类的onCreate()中初始化SDK,在UMConfigure.init方法后调用注册接口,注册成功后可获取deviceToken
```
#### 华为推送
链接:[https://id1.cloud.huawei.com/](https://id1.cloud.huawei.com/)
#### 微信官方依赖库
登录时使用wx授权
链接:[https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html](https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html)
#### glide图片加载库
链接:[https://github.com/bumptech/glide](https://github.com/bumptech/glide)
#### 腾讯 MMKV
链接1:[https://github.com/Tencent/MMKV](https://github.com/Tencent/MMKV)
链接2:[https://www.jianshu.com/p/8f346d1984a2](https://www.jianshu.com/p/8f346d1984a2)
#### Kotlin标准库
##### 采用kotlin语言编写的依赖库,需要此库提供基础kotlin打包功能
链接:[https://kotlinlang.org/api/latest/jvm/stdlib](https://kotlinlang.org/api/latest/jvm/stdlib)
#### RecyclerView扩展库
##### 回收视图组件库
链接:[https://github.com/h6ah4i/android-advancedrecyclerview](https://github.com/h6ah4i/android-advancedrecyclerview)
#### ExoPlayer播放器
##### 音频播放
链接:[https://github.com/google/ExoPlayer](https://github.com/google/ExoPlayer)
#### 下拉刷新框架
##### 列表信息列表主要依赖框架 包含(经典刷新头、雷达刷新头、虚拟刷新头、谷歌刷新头、二级刷新头、球脉冲加载、经典加载)
链接:[https://github.com/scwang90/SmartRefreshLayout](https://github.com/scwang90/SmartRefreshLayout)
#### 多状态布局
##### 列表信息列表加载时状态
链接:[https://github.com/czy1121/loadinglayout](https://github.com/czy1121/loadinglayout)
#### 带索引的回收视图
##### 列表人列表主要依赖
链接:[https://gitee.com/androidx_xy/IndexableRecyclerViewX](https://gitee.com/androidx_xy/IndexableRecyclerViewX)
#### 第三方弹出框 DialogX 以及 其IOS主题样式
链接:[https://github.com/kongzue/DialogX](https://github.com/kongzue/DialogX)
#### AndroidX-VBanner
##### 走马灯广告展示组件
链接:[https://github.com/xiaohaibin/XBanner](https://github.com/xiaohaibin/XBanner)
#### SwitchButton 开关
链接:[https://github.com/zcweng/SwitchButton](https://github.com/zcweng/SwitchButton)