系列文章索引:
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(一)》
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(二)》
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(三)》
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(四)》
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(五)》
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(六)》
- 《献给android原生应用层开发初学者技术架构选型和整合的方案思路(七)》
才疏学浅,本文不准备详细讲解各个技术面和代码原理分析,着重于技术方案的组合搭建和使用及注意点,有关技术面详解我会尽量列出技术大神们的博客文章供参阅(随着时间推移不保证引用超链接永久有效)。
欢迎找 bug 和补充我没有涉及到但又必需的方案。
(Kotlin语言 MVVM+RxJava2/Retroft2+EventBus+ARouter等等的整合方案)
本方案不包含 android NDK 及 hybird 混合开发方案技术选型。
所有的示例代码工程上传在 github 上面,点击查看。
- 开发语言: Kotlin 为主 + Java 为辅
- 开发工具:android studio 3.3.2 + android SDK
- 采用的技术选型
- 来自 airbnb 的 MvRx MVVM 有关 mvrx 的技术原理讲解请参阅《Android真响应式架构——MvRx》
- 来自 aribnb的 Epoxy 辅助构建从简单到复杂的 recycleView ,有关技术文章请参阅《Epoxy——RecyclerView的绝佳助手》
- rxJava2/rxAndroid 异步编程组件,有关技术文章可参阅《优美的异步 --- RxAndroid》
- rxJava2的生命周期组件RxLifecycle及 Kotlin语言实现,用于解决 RxJava 的内存泄露
- 来自 Uber 公司的autoDispose(可选项),可代替 RxLifeCycle 解决内存泄露,技术文章可参阅《代替RxLifecycle》《添加AutoDispose解决RxJava内存泄漏》
- 远程 http请求库 Retrofit2/okhttp3 及 RxJava2的 adpter,有关技术文章请参阅《Retrofit2深入浅出》
- 内存泄露检测工具 leakcanary,请参阅译文《LeakCanary: 让内存泄露无所遁形》
- okhttp3访问拦截器okhttpprofiler 以及 android studio 对应的插件来显示拦截数据,请参阅 此组件的github readme.
- 阿里巴巴 ARouter 及相关插件来解耦路由跳转和路由拦截,请参阅《阿里巴巴ARouter基本使用方法》
- 事件总线 EventBus来解耦数据回调或传递,请参阅《手把手教你使用EventBus》
- 谷歌 muitl-dex 技术解决64K方法数限制问题,请参阅《Android 突破 DEX 文件的 64K 方法数限制》
- 谷歌ORM 持久化 解决方案ROOM(可选项,greenDAO也不错)
- fragment 动画加载跳转,手势滑动退出开源组件 fragmentation,参见文章《Android框架之路——Fragmentation的使用》《Fragment之我的解决方案:Fragmentation》
- 腾讯 UI组件QMUI,实现全局 theme,跨 android版本统一 UI布局,也有 iOS 版本可统一 UI 风格(可选项)
- 其它一些工具类组件(可选项,本例中采用到部分 UI 或者工具库,您可选择使用或者采用您自己封装),如RxTool有关相机,支付等封装,弹窗组件TDialog编写自定义交互弹窗(或者采用 Xpopup,目前比 TDialog 更新频繁),常用方法工具集AndroidUtilCode,精品图片加载库glide(文章《Google推荐——Glide使用详解》),aribnb的自定义动画加载库Lottie(支持 android,ios,react native),rxPermission2权限申请库等等。
- 其他精品,但暂时在 demo 中未使用到的库,如控件事件绑定库Butterknife,依赖注入库Dagger2,rxBinding等,请读者自行斟酌使用(可能在 MVVM架构以及 Kotlin 的 kotlin-android-extensions的功能下Butterknife和 Dagger2用处不很大或不太适用)。rxBinding 可参考《RxBinding系列之RxView(一)》。