您的位置:首页 > 运维架构 > 网站架构

Android项目重构及架构设计

2016-11-27 23:01 357 查看
Android的开发知识,Android的单元测试、代码规范、版本控制、重构、架构等。

Android开发框架大全- http://www.ctolib.com/topics-113373.html?ref=myread
平安好医生技术栈的分析(APP架构)- http://blog.csdn.net/caroline_wendy/article/details/51426837
基于RxJava+Retrofit精心打造的Android基础框架(源码)-http://download.csdn.net/detail/xiaoyaoyou1212/9755991

好客户端是怎样炼成的- http://blog.csdn.net/a345017062/article/details/45538187
程序的功能才是我做的所有工作中用户真正想要和关心的。架构能够满足应用的需要即可。

安居客 Android 项目架构演进- https://mp.weixin.qq.com/s/aizuJ2qZhP-lYANirXI1og
>  模块化开发

有赞 App 模块化实战经验总结- https://youzanmobile.github.io/2017/04/14/youzan-app-modularization/
Android 开发:由模块化到组件化(一)- http://blog.csdn.net/dd864140130/article/details/53645290
将项目分为了四个层级:模型层、接口层、核心层、界面层。模型层定义了所有的模型;接口层封装了服务器提供的API;核心层处理所有业务逻辑;界面层就处理界面的展示。在Android Studio分为了相应的四个模块(Module):model、api、core、app。

model为模型层,api为接口层,core为核心层,app为界面层。

model、api、core这三个模块的类型为library,app模块的类型为application。

四个模块之间的依赖设置为:model没有任何依赖,接口层依赖了模型层,核心层依赖了模型层和接口层,界面层依赖了核心层和模型层。
  模块化就是将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容。模块我们相对熟悉,比如登录功能可以是一个模块,搜索功能可以是一个模块,汽车的发送机也可是一个模块.

  模块化开发,模块化开发中最大的问题就是组件间通讯-->路由的概念,把项目模块化了, 那两个组件间进行通讯或者跳转, 我们一般构建Intent的方式就不再使用了

 路由的方案:

1.完全自己实现路由, 完全封装跳转参数

2.利用隐式意图跳转(Android原生支持,仅支持Activity, Service, BroadcastReceiver)

go web开发之url路由设计- http://blog.csdn.net/qibin0506/article/details/52614290
Android路由实现- http://blog.csdn.net/qibin0506/article/details/53373412
App模块化分为5层模型:

(1)应用层是生成app和初始化操作的加载

(2)模块层,每个模块相当于一个业务,通过module来分隔开每个业务的逻辑。

(3)基础层,基础组件的整合,提供基础组件能力给业务层使用。

(4)组件层,通过图片加载,网络http,socket等基础功能划分为一层。

(5)基础库层,更加基础的库类依赖,此层非必须,例如(Rxjava,EventBus等一些代码结构优化的库),还有自己编写的封装类。

插件化,研发阶段考虑的问题

(1)资源冗余解决,包括对于base module的依赖和库依赖

(2)混淆相关和资源冲突

(3)插件加载方式

(4)通信依赖,数据交互,事件触发

模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,也是我们在写程序中经常使用的;回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口,这句话可能有点绕,等文章后面举例说明;异步调用是一种类似消息或事件的机制,解决了同步阻塞的问题。

> 路由机制

模块化开发中最大的问题就是组件间通讯

开源最佳实践:Android平台页面路由框架ARouter- https://yq.aliyun.com/articles/71687?t=t1#
Android平台页面路由框架ARouter的技术方案- https://github.com/alibaba/ARouter
> 重构围绕一个老生常谈的概念「解耦」展开,设定几个目标:

1.清晰划分各模块的角色

2.明确架构层级及各个模块所在的层级

3.提高整个架构横向扩展的能力

4.提高编译效率,由于我们项目大量使用 Kotlin 开发和 AOP 技术,在编译上面个比较耗时,期望在架构调整后,在整个项目的编译效率上又一次大的提升

5.各模块独立开发,面向接口和协议编程

6.提高可维护性

充分考虑可拓展性和可维护性,把模块化、性能优化、用户体验等

关于App重构的几个方面- http://www.jianshu.com/p/1125f4be4cc3
Android重构记录及其模块化- http://blog.csdn.net/jonstank2013/article/details/56833462
Android项目重构之路:架构篇 - http://keeganlee.me/post/android/20150605
Android项目重构之路:界面篇 - http://keeganlee.me/post/android/20150619
Android项目重构之路:实现篇- http://keeganlee.me/post/android/20150629
> App架构设计

App架构设计经验谈:接口的设计     - http://keeganlee.me/post/architecture/20160107
App架构设计经验谈:技术选型         - http://keeganlee.me/post/architecture/20160114
App架构设计经验谈:数据层的设计 - http://keeganlee.me/post/architecture/20160120
App架构设计经验谈:业务层的设计 - http://keeganlee.me/post/architecture/20160214 App架构设计经验谈:展示层的设计 - http://keeganlee.me/post/architecture/20160222
Android中级第十二讲浅谈架构设计- http://blog.csdn.net/reboot123/article/details/51321248
内容型App的客户端架构之道- http://www.infoq.com/cn/presentations/content-type-app-client-architecture
> 网络请求框架

各种Android网络请求框架、工具类- http://www.ctolib.com/topics-113377.html?ref=myread
网络框架AndNet- https://github.com/qibin0506/AndNet
Okhttp

----------------------------

一个千万量级的APP使用的一些第三方库- http://blog.csdn.net/android_technology/article/details/52248197
史上最流行的Android组件、工具、框架大全- http://blog.csdn.net/android_technology/article/details/52248287
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: