最近在整理项目重构的时候,突然想到,为什么不封装一个常规工程都可以用的library呢?我花了整整一个星期的时间,完成了这个工作,下面就简单的总结一下吧。
首先先整理项目里面常规的功能:三方登陆分享、网络请求、数据存储、图片加载、极光推送、bugly崩溃日志分析、Eventbus以及一些常用的工具类。因为整个项目是mvp的一个架构模式,通过这一星期的整理,又重新认识了这个模式,才发现之前的理解很多都是片面错误的。
整个工程的目录结构我想通过对应的文件夹,大概就能知道里面对应的功能点。先从三方登陆分享说起,我用的是mob的sharesdk,登陆分享遇到的问题,主要的功能代码在mob文件夹下面。网络请求我用的reretrofit+rxjava(目前主流吧),主要的功能代码在network文件夹下面,整个项目的mvp的架构模式,在mvp的文件夹下面,网络请求和mvp架构也算是自己整理总结的收获吧,在使用glide的时候也遇到了一些问题,详情可以看Glide V4 新版中GlideApp配置方法和androidx下Glide使用报错,Events使用很简单,这里我就不细说了,在base文件夹下面的内容也是挺重要的,因为所有的界面里面的一些功能逻辑都是直接封装在base文件夹下面的。数据存储是我之前就封装好的一个远程依赖库,数据存储的GitHub地址。这些差不多就是base这个library里面所有的功能了,为什么要把这些功能放在base这个library里面,以为现在比较流行的是模块化开发,可能其它的module会用到这些方法,只要让module依赖这个library,里面的所有功能就都可以实现了,而推送和bugly本身就是针对整个项目而言的,所有我就把它们放在了app module里面了。基本上涉及到的功能我在app module里面都写了测试的代码。特别在从0到1开发新应用的时候,就省了好多的时间和精力,只要拿到对应第三方的appkey之后在base这个library对应替换掉就可以了,这样是不是一劳永逸的事,当然随着功能点增加,后续我也会继续扩充base这个library里面的功能。整个工程的地址链接。因为测试的时候多个环境切换很麻烦,频繁的卸载安装真的很麻烦,刚刚又把多环境切换的工作做完了,在打包的时候可以指定环境。因为我都是按照对应的功能点提交代码的,实在不清楚的可以看我提交的commit信息。
一抬头已经凌晨一点多了,被自己小小感动了一下,这也算是我一周的辛苦积累吧,特意记录一下,希望可以给浏览的你一点帮助。
网友评论