20

看 Android 的发展历程-谈一下当下最合适的架构

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIxNzU1Nzk3OQ%3D%3D&%3Bmid=2247489549&%3Bidx=1&%3Bsn=9afc3be6ea06e65644ac0cd0624222db
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

code小生 一个专注大前端领域的技术平台 公众号回复 Android 加入安卓技术群

作者: i校长

链接: https://www.jianshu.com/p/d90dbed80a38

声明: 本文已获 i校长

授权发表,转发等请联系原作者授权

上次我们讲到一个好的架构有哪些优点,当然好的架构肯定还有其他方面的优势,我只是表达了自己的一些观点,有问题欢迎反驳,我们一起讨论。下面我们来看看当前版本的Android架构,如何做到最合适,也不一定是最合适,但大方向肯定要正确。我们先看看架构的历程。

Android架构演进

MVC > MVP > MVVM

我们先回顾一下google为我们做了什么,一开始我们接触android,大家都在用MVC,甚至可以说没有架构,而且那个时候app是真的简单,但随着不断的迭代,问题越来越多,google也发现了这个问题,于是github开源了MVP架构的示例,教我们如何整合框架,如何在架构设计上保证业务的发展需求,再到现在主推的MVVM,其实不难发现一个共性,WEB端大家都知道吧,你看现在最火的React、Vue,不都是MVVM的架构吗(有人说不是,有人说是,这里不多解释,我们不应该纠结是不是,应该理解M-V 、 V-M 是数据绑定UI,无非是单向还是双向的,都属于一种理念吧,理解就行。)

原生 > React Native > Flutter

一个好的架构只是MVC到MVVM吗?我不这么认为,从一开始我们接触到原生的Android开发,到后来大火的React Native,我们16年还专门集成了React Native模块,但做了几个迭代后放弃了,我们发现为了适配Android、Ios 也花费了很多时间,倒不如用原生做的好用。目前最火的Flutter,也是Google主推的跨平台框架,而且我们现在就在C端项目中集成了,效果还不错,虽然也是有很多问题,但总体来看比React Native 要好,还有一点Google内部正在开发的另一个操作系统Fuchsia的UI layer采用的是Flutter,也就是说Flutter天然可以支持Android、IOS以及未来的Fuchsia。在大前端方向,对于跨平台开发中一直在不断迭代中寻找更好、更优的解决方案,目前来看Flutter还是更有优势

Java > Kotlin,Dart

来说说语言,你说语言属于架构吗?我也不知道,但这是我架构的时候考虑的一个方向,语言是我们组织架构最基础的单元,kotlin的普及,应该不仅仅是google认为语言不错,让我们广大开发者使用,其实这里面涉及了很多东西,我们知道最新的android引用的是open jdk,前几年的官司打个不停,付出了不少人力财力,这肯定不是我们还要考虑的,但有一点可以肯定,kotlin语言确实是个趋势,因为他有更合理的设计,更安全的性能表现,更加简洁的代码,当然你可以用java写android写到老,我也不认为你用kotlin写就一定比java写的好,看个人选择吧。再说说Dart,这个我就有点不理解,为啥Flutter一定要用Dart写,好像Google工程师这么回答:说Dart就在隔壁啊,好沟通。哈哈。

小总结

通过上面的闲扯,我们基本已经有了架构的雏形了吧

  1. MVVM + 原生 + Kotlin 或

  2. MVVM + 原生、Flutter + Kotlin、Dart 等等.. 自己组合吧,我目前选择第二种,相信很多人的项目都已经是这样了。那么接下来我们就要实现这样的架构,架子有了,就该塞东西了,这样就显得饱满一些。

如何实现一个基础MVVM

architecture-samples

https://github.com/android/architecture-samples

这里肯定想到Android Jetpack,2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,只有你想不到,没有它做不到的,上面就是谷歌官方给的示例,学习起来很简单,但对于大多数人是不是更喜欢我们国内写的博客,这里我就不啰嗦了,我再实现一遍MVVM其实也跟他们没啥区别,我贴一个,你慢慢看。一个美团的作者,不错哦,请看他的文章。

项目: https://github.com/Kelin-Hong/MVVMLight

文章:

https://tech.meituan.com/2016/11/11/android-mvvm.html

工作这么多年,经验告诉我,一切从简设计,不要一开始就搞那么复杂,因为我们不确定你现在做的东西会在什么时候直接被抛弃,当然你也要有个预估,看项目的大小决定,适可而止。谈对象都知道,不是越大越好,而是合适最好,哈哈,你肯定想污了,我不敢看。

如何集成Flutter

Add-Flutter-to-existing-apps

https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

到目前为止,应该会有很多人的项目都在集成Flutter了,特别是大厂,他们早就跟进了,我这有一个咸鱼Flutter最佳实践,有需要的私聊我哦,我发给你。博客的话请看: https://www.yuque.com/xytech/flutter

结语

从Android的架构演进,不难看出未来的世界肯定是大前端的,所谓的大前端也许是大佬们一个概念,但从这几年好多大统一的技术出现,感觉未来不远,也许就是明天,在这奉劝各位读者,提升自己就在现在,JS、Dart、Java、Kotlin、Python等等吧,T型人才未来才是互联网的中流砥柱,不光要学好android,也要横行发展哦。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK