技术日益更替,层出不穷。此文章基于第一视角来从零开始搭建Android项目,欢迎技术交流以及分享
开发工具(Mac用户,Win用户大同小异)
- 毫无疑问首选AndroidStudio
- 网络工荐PostMan
- 网络抓包Charles
- Git和SvnSourcetree。studio自带的git管理工具也好用
- 切换HostSwitchHosts
- 颜色工具Sip
- 代码编辑SublimeText
架构的选择
从mvc延伸到mvp直到mvvm。我的感悟就是没有最好的架构,只有最合适的架构,根据自身条件按时完成开发任务才是首要。但强烈推荐使用Google Jetpack全家桶,即选择mvvm架构,同时选择使用Kotlin为首要开发语言delegate思想
假设Activity/Fragment(统称View层)业务太过繁重,代码达到1000+行。将业务分发成一个或者多个delegate,在其内部使用接口与View层交互,这是一种减轻View层负担的其中一种做法(可以不叫delegate),与mvp架构类似,层级分明,职责明确
SDK的选择
有以下几点原则,仅供参考
- 会使apk体积增大的SDK慎重
不能因为某个功能而导入一个体积略大的库(只使用了该库的一个功能)从而导致apk体积的增加;多想想办法曲线救国 - SDK质量
SDK的质量如何,得自己查看源码进行判断 - **避免重复
假设项目中已存在关于DIalog的SDK,那么大可不必再导入另外一个类似的SDK;择优选择
**
推荐使用的SDK
- 网络方面选择耳熟能详的Retrofit2
- Fragment管理使用Jetpack Navigation
- 常见工具类可根据Utils库,选择需要的
- 数据库也是Jetpack Room
- ConsecutiveScroller用于复杂布局,避免嵌套(项目中已使用)
- Mojito用于常见的查看图片、大图支持视频等功能
- 如遇多人开发需要组件化可使用WMRouter或者ARouter,个人偏向前者
- 各种SDK下的KTX引入;简化代码
- 图片加载,如果使用Kotlin开发,考虑Coil其次Glide
- 使用协程
- MaterialDialog用于App内一些提示、编辑等功能的Dialog
- 消除findViewById使用ViewBInding或者DataBInding
- 二维码功能使用Zxing
- 视频播放功能使用GSYVideoPlayer
- 自行封装Recycleview或者使用BaseRecyclerViewAdapterHelper
- 线上检测崩溃使用Bugly(其他也可)
- PopupWindow使用BasePopup
- 大量动画效果结合需求考虑Lottie
- 轮播图Banner(支持ViewPager2)
- 关于标签使用LabelsView
- 图片选择库习惯用Matisse或者PictureSelector
- MMKV基于mmap的高性能通用key-value组件
- DataStore是一种数据存储解决方案
- PagerBottomTabStrip解决底部栏功能(或者使用自带控件)
- 可考虑使用依赖注入
- 开发规范结合《阿里巴巴Android开发规范》
编码规范
遵循六大基本原则
- 单一职责原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 迪米特原则
- 开闭原则
编码规范是个主观的话题,上班遵循公司的编码规范即可。其余可参考官方规范也可以设计一套自己的规范(前提是让读的人舒服)
其他
- Icon放在drawable-xhdpi目录下,logo放在mipmap目录下下
- 模块化是必须的
- Application保持简洁;别做过于繁重的代码
