Kotlin组件化电商APP – 迟到的练手项目3


一:软件背景

上一个项目手机助手的完结到现在也已经过去很长一段时间了,同时kotlin在这个圈子里的出现频次的提升,开始就接触了些kotlin的我,为了更清晰熟练的了解MVP、组件化、Kotlin,便撸了这样的一个项目,目前项目已经大致完成,正在填坑。

该项目再一次加深了rxjava的熟练度,因为又来了一次rxjava1升rxjava2,同时dagger2与mvp、组件化呈现的整体效益相比较之前的手机助手有一种豁然开朗的感觉,因为分了模块后,层次清晰了很多。当然,相对于一个真正的线上电商APP还是有区别的,我这里与大牛相比,顶多算是有了些基础的了解,并且更多的是在架构和思想上,整体功能一人是没有那个精力做到至善至美的。

二:组件化介绍

基础模块(业务无关)

封装整体 MVP通用架构   构建Dagger2全局组件
构建视图层-泛型性            创建Kotlin全局扩展
构建业务层-全局性            通用View及样式引入
构建数据层-独立性            集成第三方依赖库

中间件模块(业务有关)

事件总线-全局事件
模块间跳转
模块间接口调用
业务全局资源

商品模块

高仿京东APP商品分类 / 分类或名称搜索商品
上下拉瀑布流商品列表 / Tab切换商品详情
SKU出现消失动画 / SKU动态加载流式布局
SKU选择联动 / 跨模块跳转

购物车模块

全选/反选购物车商品 / 编辑购物车商品
购物车数量及价格联动

订单模块

订单流程逻辑梳理 / 订单管理UI实现及封装
收货信息统一管理 / Kotlin新特性实现序列化
Kotlin顶层函数应用

支付模块

支付宝支付流程梳理 / 支付宝集成与调试
独立SDK模块间通讯 / 支付实现与调试

用户模块

登录、注册、忘记密码、个人信息
通用自定义View封装 / 相机图片通用封装
七牛云应用

消息模块

RecyclerView样式 / 极光推送Jpush集成

图片搬运工:

三:使用的框架(AS3.1)

-A  Anko Commons,kotlin的扩展语法糖,专为Android提供。这里只用了common。
api "org.jetbrains.anko:anko-commons:$anko_version"
// Appcompat-v7 (only Anko Commons)
api "org.jetbrains.anko:anko-appcompat-v7-commons:$anko_version"
// Support-v4 (only Anko Commons)
api "org.jetbrains.anko:anko-support-v4-commons:$anko_version"

-B  Rxkotlin 当然顾名思义,rxjava在kotlin上的体现,我选rxjava2
api "io.reactivex.rxjava2:rxkotlin:$rxkotlin_version"

-C  RxAndroid 对于rxjava的扩展,主要使用其主线程调度切换
api "io.reactivex.rxjava2:rxandroid:$rxandroid_version"

-D Retrofit 基于okhttp的网络框架 无需多言
api "com.squareup.okhttp3:okhttp:${ok_http_version}"
api "com.squareup.retrofit2:retrofit:${retrofit_version}"
api "com.squareup.okhttp3:logging-interceptor:${ok_http_version}"
api "com.squareup.retrofit2:converter-gson:${retrofit_version}"
api "com.squareup.retrofit2:adapter-rxjava2:${retrofit_version}"

-E 依赖注入框架 Dagger2
api "com.google.dagger:dagger:${dagger2_version}"
kapt "com.google.dagger:dagger-compiler:${dagger2_version}"

-F Kotlin上对rxjava的生命周期管理框架
api "com.trello.rxlifecycle2:rxlifecycle-kotlin:${rxlifecycle_version}"

api "com.trello.rxlifecycle2:rxlifecycle-components:${rxlifecycle_version}"

-G Glide4当前最火的图片加载框架
api "com.github.bumptech.glide:glide:${glide_version}"

-H 一个圆形的自定义图片view CircleImageView
api "de.hdodenhof:circleimageview:${circleimageview_version}"

-I TakePhoto 一个类似微信的强大图片选择框架
api 'com.github.crazycodeboy:TakePhoto:v4.1.0'

-J Alertview仿IOS弹窗
api "com.bigkoo:alertview:${alertview_version}"

-K 七牛云 主要使用其对象存储,用于存放上传的用户头像 (服务器 移动端均已用腾讯云COS替代)
api "com.qiniu:qiniu-android-sdk:${qiniu_version}" 

-L 底部导航 一个比较好用的底部导航栏
api "com.ashokvarma.android:bottom-navigation-bar:${bottom_navigation_version}"

-M banner轮播图
api 'com.youth.banner:banner:1.4.10'

-N 角标标签,一般用于右上角折扣展示
api 'com.github.shts:TriangleLabelView:1.1.2'

-O 画廊 比较酷的画廊效果
api 'com.github.crosswall:Android-Coverflow:release-v1.0.5'

-P MultiStateView 多状态视图
api 'com.github.Kennyc1012:MultiStateView:1.3.2'

-Q 下拉上拉刷新布局
api 'cn.bingoogolapple:bga-refreshlayout:1.1.8@aar'

-R Rxbus kotlin版本的消息总线
api 'com.eightbitlab:rxbus:1.0.2'

-S Flowlayout 鸿神的流式布局
api 'com.hyman:flowlayout-lib:1.1.2'

-T Numberbutton 商品数量的一种布局,中间是数字,左右分别为-+按钮
api 'ren.qinc.numberbutton:numberbutton:0.0.1'

-U Arouter 阿里巴巴的模块路由框架,用于各模块跳转和数据传递
api 'com.alibaba:arouter-api:1.3.1'

-V Badgeview 一个可以自由定制外观、支持拖拽消除的MaterialDesign风格Android BadgeView
api 'q.rorbin:badgeview:1.1.3'

-W 极光推送

api 'cn.jiguang.sdk:jpush:3.1.2'
api 'cn.jiguang.sdk:jcore:1.2.0'

-X 插件级 类似butterKnife的插件
apply plugin: 'kotlin-android-extensions'

-Y 插件级 注解代码预生成插件,可以注解实现Parcelable,无需手动书写
apply plugin: 'kotlin-kapt'

kapt { arguments {arg("moduleName", project.getName())}}

四:预览图(这次就不动图了,因为~没价值,毕竟我只是想学Kotlin与组件化嘛)

五:近期活动

重写后台,将七牛云换为腾讯云(已完成),加强功能建设,顺便复习下组件化,将手机助手重写(已完成),确实需要时间。。。

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - Kotlin组件化电商APP – 迟到的练手项目3


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.