Android-JetpackAndroid 开发技术分享Android 与 设计模式

一次组件化与Android Jetpack的实践

2019-08-02  本文已影响452人  林栩link

前言

至今为止从事Android开发两年多了,17年开始实习时,恰逢APP刚刚立项不久,当时新项目沿用了旧项目古老的MVC架构。从那之后一直都是根据飘忽不定的需求,没有规则的垒代码。

直到18年中,其他项目组开发的APP要求集成到了我们项目组的APP中,从这时开始项目的代码,APP的功能爆炸性增多,代码本身也开始变得极难维护,调试旧代码经常找不到位置,需要全局搜索有时还要连蒙带猜,也就是从那时起,我开始意识到一个好架构与规范的重要性!

目录

正文

一、项目简介

本次实践的内容是基于Android JetPack组件实现MVVM架构,并结合当下较为流行的组件化开发方式,编写的一个菜谱类型的小型应用。组件化的过程中结合了我把公司的APP组件化后,得到一些经验和教训,做了一些优化和调整。

需要强调的是,实际使用了Data Binding后,不仅调试bug时想砸电脑,后来在读过nanchen大佬的文章《不一样的角度谈 DataBinding的坑》后决定,在本次实践不采用Data Binding。

项目当前的MVVM架构设计的可能并不理想,而且界面优化还存在一定的问题,不过没关系,后续会以该项目为案例,系统性的实践Android中常见的启动优化、内存优化以及布局优化等等,实践过程也会完整的整理成文章记录下来,方便日后学习、讨论,如果感兴趣话记得关注哦。

数据来源聚合数据-菜谱大全

后台服务器Bmob

开发语言:Kotlin(部分使用了Java)

主要使用的Jetpack组件
LiveData-Android Architecture Components探索(1)-LiveData
ViewModel-Android Architecture Components探索(2)-ViewModel
Navigation-Android Architecture Components探索(3)-Navigation
Room、Lifecycle

使用到的第三方框架:App中使用了很多第三方框架,这里只列举几种,Tinker、ARouter、Glide、Rxjava、Retrofit、BaseRecyclerViewAdapterHelper等等。

开源地址https://github.com/linux-link/Fan

二、APP概览

首页 分类 发现 我的

三、源码结构

本项目概念上的结构如图所示

image

实际结构如图所示

image

下面分别解释各个module的作用:

需要单独说明的是,每一个子组件中还包含了一个gradle.properties文件,里面设定了该组件被编译成AAR库时一些属性,以及私有maven仓库的地址和用户名与密码。

后面可以将子组件编译一个aar库,然后通过maven_push.gradle上传到私有maven仓库里,不过本项目只完成了一部分,关键的私有maven仓库还没有搭建好,后续会陆续处理。

后续展望

当前的APP依然十分简单,或者说简陋,当前正在学习如何部署、开发一个简单的后台,后面会逐渐放弃bmob,同时增加APP的复杂度,引入更多的开发技术,比如我最感兴趣的插件化、NDK、React Native或者Flutter等等。

最终目的还是希望能在一个APP实践当下的主流开发技术,然后从中选择一个方向深入研究,不过这都是后话了。毕竟理想很丰满,现实很骨干=_=。

四、总结

以上就是本项目的大致概览,总得来说,你既可以用它来学习组件化开发,也可以用它来学习Android Jetpack组件的实际运用,还可以用来学习如何优化一个APP,不过这等我后续的更新了,内存优化部分,已经先行发布了,请移步「Android内存优化 1」-Android的内存机制与管理建议

如有任何问题、建议请给我留言或者在github中提交issue。感谢您的阅读,欢迎下载体验。


下载二维码.png

五、参考资料

《如何构建Android MVVM 应用框架》

《Android 组件化最佳实践》

《来自一位阿里朋友的组件化架构实践》

上一篇下一篇

猜你喜欢

热点阅读