Android App架构设计
2016-04-08 14:35
274 查看
我结合以前的工作和现在的工作,整理了下目前能想到的最好的Android App架构设计,在这里记录一下,以便以后用。
如图所示,为什么需要这样的架构?
现在的公司有的能同时进行好几个App的开发,那么这些App开发的时候不可能都是从0开始,肯定要是把以前的工程另存一份来做。那么问题来了,就是,比如以前的工程里面用到的网络请求库改了,比如增加了统一上传手机IMEI,那么你是不是也要把这个改动同步到别的App里面呢,如果同步,就意味着要一个个的复制粘贴过去。这样的事情出现一次还好,如果经常这样,难免会疏漏。那有没有一个最简单的方法做这些事情呢。好,那就是如图所示了。
App基础层:这个可以作为一个Library的形式提供给别的工程引用,里面提供一些最常用,且最通用的功能,比如统一样式的对话框,统一样式的正在加载框,基类BaseActivity,统一样式的空页面和无网页面。把这个library托管到svn或git上,那么当在这个library里面改了代码,只需要提交代码别的项目更新一下,即可。一劳永逸(注:这个即使不用library,也可以用下面提到的用maven管理的依赖库层实现)
用maven管理的依赖库层:这个是用来提供通用功能jar的东西,maven是一种可以管理代码让别的工程引用的东西。比如我们可以把图片加载,网络请求等自己wrapper过的东西放到这里,让别的项目作为jar包引用。那么当我们改了网络请求的一个参数,提交代码,让别的工程更新即可,这样所有的改动就同步到别的工程上了。
App主工程业务层:这个就不用过多解释了,就是咱们的主工程了,上面的两个都是为这个服务的。
可能我写这么多,没实践过的也很难看的懂。不过实践过的一看就能明白,也许只是以前没总结过而已。
如图所示,为什么需要这样的架构?
现在的公司有的能同时进行好几个App的开发,那么这些App开发的时候不可能都是从0开始,肯定要是把以前的工程另存一份来做。那么问题来了,就是,比如以前的工程里面用到的网络请求库改了,比如增加了统一上传手机IMEI,那么你是不是也要把这个改动同步到别的App里面呢,如果同步,就意味着要一个个的复制粘贴过去。这样的事情出现一次还好,如果经常这样,难免会疏漏。那有没有一个最简单的方法做这些事情呢。好,那就是如图所示了。
App基础层:这个可以作为一个Library的形式提供给别的工程引用,里面提供一些最常用,且最通用的功能,比如统一样式的对话框,统一样式的正在加载框,基类BaseActivity,统一样式的空页面和无网页面。把这个library托管到svn或git上,那么当在这个library里面改了代码,只需要提交代码别的项目更新一下,即可。一劳永逸(注:这个即使不用library,也可以用下面提到的用maven管理的依赖库层实现)
用maven管理的依赖库层:这个是用来提供通用功能jar的东西,maven是一种可以管理代码让别的工程引用的东西。比如我们可以把图片加载,网络请求等自己wrapper过的东西放到这里,让别的项目作为jar包引用。那么当我们改了网络请求的一个参数,提交代码,让别的工程更新即可,这样所有的改动就同步到别的工程上了。
App主工程业务层:这个就不用过多解释了,就是咱们的主工程了,上面的两个都是为这个服务的。
可能我写这么多,没实践过的也很难看的懂。不过实践过的一看就能明白,也许只是以前没总结过而已。
相关文章推荐
- Android DDMS 连接真机 看不到data目录
- app如何保证通讯安全
- 极光推送iOS
- 在Android studio里面使用AIDL
- iOS 用weak修饰自定义控件,结果线上闪退问题
- android添加重启功能
- android graphic(21)—view tree的创建过程
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Error:(1, 0) Plugin with id 'com.android.application' not found
- Android开发——自动生成Android屏幕适配的dimens.xml文件
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.解决办法
- 深入剖析Android的Volley库中的图片加载功能
- JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-007Inheritance of embeddable classes(@MappedSuperclass、@Embeddable、@AttributeOverrides、、)
- AndroidStudio - 手动更新gradle及关联项目详解
- JNI(深入理解Android卷I)的读书笔记
- Android使用Fragment打造万能页面切换框架(三)
- 对自己团队项目的意见以及移动App需求分析
- ios真机和模拟器用到的库文件
- Genymotion虚拟机运行app报错java.lang.UnsatisfiedLinkError: Couldn't load xxx: findLibrary returned null
- Android学习笔记:简易五子棋(上)