您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > android-框架设计分享
Android框架设计分享宗燕山前言做AndroidAPP项目开发几年时间,参与开发的完整的项目也有很多个了,其中也主导完成过几个项目,从一开始的毫无架构概念到现在对如何架构也有一点心得,所以在此分享出来,大家一起交流学习。目录12345选择什么架构?MVC还是MVP?框架选择及使用个人体会与建议什么是Android开发框架Android开发框架的作用什么是android开发框架Android开发框架设计绝对不只是一系列功能框架的堆砌,架构是为了提高生产力、方便软件维护、扩展、安全性、切入性。一个好的框架使得程序在开发的过程中,开发人员能够快速入手,并且只需要专注于具体业务实践,提高程序开发的效率,并且更容易进行后续的测试以及定位问题。但设计不能违背目的,对于不同量级的工程,具体架构的实现方式必然是不同的,切忌犯为了设计而设计,为了架构而架构的毛病。服务端架构与APP架构对比易维护性易扩展性安全性高方便切入Android框架的作用1.代码规范2.框架稳定性3.封装4.耦合1.抽象接口2.元素重用3.单一职责4.替换性1.数据安全性2.操作安全性1.文档2.注释3.包名代码规范:项目开发必须遵循一个统一的代码规范,一份代码如果没有遵循任何规范,那么我相信它的可维护性是很差的保证使用框架的稳定性:针对具体功能选择框架时尽量选择成熟稳定的框架,谨慎使用新技术心框架,不建议使用三方框架封装:就是把一些常用的、通用的东西进行一个封装,通过统一入口进行调用,这样出问题就只需要修改一个地方,就能全部修改过来04解耦:不相关的模块之间尽量减少解耦,但也要把握这个度,避免花费大力气、浪费大量性能解耦。010203可维护性可替换性:替换性包含里氏代换但是也不仅仅是里氏代换,如类似布局界面使用相同id,图片加载对外暴露统一接口,与具体实现架构隔离等等元素重用:很多功能模块可能使用到相同或者类似的元素,组件、布局等,当然这个是项目一开始并不能预见的,所以需要在开发中不断的去重构单一职责:一个类的功能应该封装的功能是单一的,一个类仅仅处理一个问题,或者是仅仅做一组相近的工作。例如android中Dialog封装010203可扩展性数据安全性:数据安全就包括APP应用数据抓取、数据拦截以及数据修改。我们写出尽量安全的代码。操作安全性:比如Android用户的快速点击输入,用户使用权限的管理等等。文档、注释:文档不仅要写,还要规范。每个类必须要有注释,方法也要有注释,同时也要标注好方法最后修改人是谁。04项目结构包名:目前常见的Android分包包括针对功能分包(不是指程序功能,而是指UI,http,bean这些功能),还有就是模块分包。团队协商约定。010203安全性与切入性MVC是以XML布局为V(视图),Activity或Fragment为C(控制器),数据实体为M(模型)Android并非严格意义上的MVC模式。它可以将数据模型、视图行为抽象分离,我们将UI层中的业务逻辑单独抽离出来。技术就是数据绑定(databinding),框架替应用开发者做了一些工作。MVP是为XML配合Activity或Fragment为V(视图),同时抽象出接口,界面相关业务抽离出来的P(Presenter)同时通过视图接口来更新UI,数据实体为M(模型)MVVMMVPMVC整体架构选择优点:开发迅速,结构易理解缺点:当一个界面业务逻辑一多,不方便维护应用场景:MVC适合不需要太多业务逻辑和功能性少的APP,比如数据展示类应用优点:业务发生变化时易修改,同时能减少修改过程中引发bug,也能将多人协同开发充分调用起来缺点:开发速度会有所降低应用场景:MVP适合每个界面有复杂逻辑以及大型多人开发的APP优点:解耦合,业务逻辑和视图分离;项目代码结构清晰,一看就知道什么类干什么事情;便于单元测试;缺点:数据绑定使得Bug很难被调试;对于过大的项目,数据绑定需要花费更多的内存,View展示控制存在问题。应用场景:与MVP类似。整体架构选择如何选择Android开源框架当前流行的整体框架:Afinal、ThinkAndroid,xUtils,LoonAndroid…针对这些快速开发框架,个人认为可以参考,但并不推荐使用,因为企业级App整体依赖一个个人维护的框架风险实在太大,框架存在一些学习成本,本身也不一定完全符合App的需求,使用后的收益并没有想象中大。稳定性封装性封装性是指能否针对框架进行二次封装,以及封装后的耦合度。便于替换维护。扩展性选择框架时一定要了解好框架本身的扩展性如何,或者对框架有较深的理解,能够自己扩展框架,当然有些框架解决的问题比较单一,一般也不用担心过多的扩展性如果框架本身就不稳定,那么导致的结果就是程序本身也会漏洞百出,所以选择框架一定要选择经历过考验的稳定的框架Android开源框架如何选择Android开源框架学习的成本代码的体积体积当然不能太大了流行的程度该开源框架是否流行,github上start的个数,Issues问题反馈,文档完整性等都是我们考量的标准对该框架学习的时间长短,文档是否齐全的考虑Android开源框架如何选择Android开源框架图片加载封装基础架构MVP抽象封装消息通信封装基础服务framework搭建日志管理封装Json解析数据库封装网络访问封装权限管理封装缓存管理封装Android常用单功能框架库http请求(okhttp、volley、android-async-http)数据库(greenDAO,ORMLite…)网络图片加载(Fresco、Glide、Android-Universal-Image-Loader)json解析(Gson、Fastjson)消息通信(EventBus、Otto)权限管理(PermissionsDispatcher,Easypermissions)Log日志管理(LoggerHugo,Timber)缓存(DiskLruCache,RxCache…)utils工具类封装模块化开发模块化就是将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容。模块我们相对熟悉,比如登录注册功能可以是一个模块,发票查询功能可以是一个模块,申请代开也可是一个模块.将一个app分成多个模块,每个模块都是一个可单独运行的组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件化的每个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。组件化开发插件化开发项目结构选择Android组件化开发随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样发展下去单一工程下的APP架构势必会影响开发效率,增加项目的维护成本,每个工程师都要熟悉如此之多的代码,将很难进行多人协作开发,而且Android项目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一处代码后都要重新编译打包测试,导致非常耗时,最重要的是这样的代码想要做单元测试根本无从下手,所以必须要有更灵活的架构代替过去单一的工程架构。Android组件化开发好处1、加快业务迭代速度,各个业务模块组件更加独立,不再出现业务耦合情况;2、稳定的公共模块采用依赖库方式,提供给各个业务线使用,减少重复开发和维护工作量;3、迭代频繁的业务模块采用组件方式,各业务研发可以互不干扰、提升协作效率,并控制产品质量;4、为新业务随时集成提供了基础,所有业务可上可下,灵活多变;5、降低团队成员熟悉项目的成本,降低项目的维护难度;6、加快编译速度,提高开发效率;7、控制代码权限,将代码的权限细分到更小的粒度;Android项目框架举例APP框架搭建,创建修改文档框架使用、发现问题解决问题、完善优化框架APP框架使用与维护APP框架使用与维护因为封装了大量的基础服务库,APP里面需要写的代码量就大幅减少了,每个功能都是按照文档在组件库或者framework库里面拿,写法上统一,每个接手的人都能轻易看懂理解。屏蔽掉了许多繁杂的工作,这样可以对多个项目进行一个很好的管理。Android框架搭建个人体会针对android开发项目,我们首先要考虑的是这个项目或者说这个产品的核心功能是什么。比如,图片处理和展示类app,我们更多考虑对大量图片的处理,防止OOM等等;如果是理财营销类软件,比如微众银行、同花顺这种大量采用H5页面的app,考虑需要对webview控件优化和Js交互框架的搭建;总之,框架是为了便于业务的展开,是为业务而服务的,框架的选择是和业务需求紧密相连的。感谢观看@Android开发框架设计分享
本文标题:android-框架设计分享
链接地址:https://www.777doc.com/doc-6691958 .html