起因
- 官方一直在推Compose,号称性能比肩原生,开发效率又高,这不妥妥“高副帅”?入手不亏
- 加上自己本身也在学习Android开发,一直写的原生,短暂接触过Flutter,但是Flutter是Dart,略显水土不服,所以,对于原生就支持Kotlin,并且还能直接和原生互调的Compose,确实是不错的选择
- 学习东西,当然要落实到项目里啦,那写个什么项目呢?这不就巧了,学校开了门安卓的课,这不直接课设搞起来,题目就选《图片分享APP》
- 项目名字一下子就出来了——PicSingular
设计
后端——PicSingularCore
- 既然是图片分享,那就少不了要服务端了,这样才能和别人一起分享嘛~
- 其实学校是给了一个OpenAPI的后端的,但是,跟大多数开放平台一样,有访问次数限制,限制一天只能访问一百次,这能忍?一百次那不是分分钟就用完了,一点体验没有,怎么办呢?
- 当然是自己实现咯。想访问多少次都行,还能对接口进行更多自定义设置,所以,直接经典一套,SpringBoot 走起,感兴趣可以看看这里:PicSingularCore
- 既然要自己写了,那基本的鉴权授权当然也要有了,于是,引入 SpringSecurity
- 至于数据库操作方面,由于时间原因以及方便性考虑,直接上Spring Data JPA,方便又省事,问就是偷懒
- 最后,关于部署,直接部署到个人服务器上即可,配套来个docker-compose,直接up一下,即可了
Android端——PicSingular
- 架构模式:由于选择了Compose,以及抱着学习的态度,恰巧Google又在大力支持MVI,所以,整个项目采用 MVI 架构模式
- 相关技术点:(都用Compose了,当然全面向Jetpack靠拢了.
- ViewModel
- DataStore
- Hilt
- Retrofit
- Paging3
- Coil
- 界面预览:
体验
- Compose的开发效率确实比传统View开发来得高,布局直接声明,不要太爽
- MVI 的架构模式,在Compose中结合其state,界面更新都不用自己操心,省心又省力
- 虽然界面UI没有经过设计,但是可以看出,利用Compose进行页面布局,UI部分不会差到哪去,操心的东西又少了有没有
总结
- Compose 虽然是近几年新推出的,但是开发体验确实不错,特别是开了
LiveEdit之后,实时预览,这是传统View开发无法比拟的,大大提高了开发效率 - 在写项目过程中,因为是第一次写Compose,也是第一次写MVI,所以也参考了一些开源项目的写法,整体开发体验还是不错的,对于一些Jetpack的一些使用还是不够熟练,还是有待学习
- 最后,Compose作为新的开发框架,加上现在官方大吹
KMM,个人认为是下一个风口,学习入手一下不亏