Android 软件平台架构设计
试想你做的不是一个软件, 而是一个软件族, 这个些软件需要在Android平台发布, 你应该做何种规划? 这些问题需要在以下真实场景中考虑:
- QQ发布的特有手机, 需要继承多个软件: QQ空间、股票、聊天、游戏等
- 一个具有学习平台功能的手机, 需要多个软件: 电子词典、数学工具、学习进度安排、在线教学、绘图板、考试系统
- 机械物联网应用, 需要多个服务: 电子商务、工况查询、专家系统、行业信息检索等
事实上, 随着客户端的独占性/垂直型需求的增加, 这类跟硬件绑定的诉求将日益增加, 因此软件的平台规划能力要求会逐步加强。 Android系统在设计之初也考虑到不同应用(进程)之间的通信, 为此实现了非常多的机制来解决进程通信的问题。这些正是本文需要探求的问题。
需要关注的典型问题包含:
- 为了方便低耦合的管理, 要求一个应用能拆分成多个下级apk. 单个APK以足够自我管理.
- apk自我升级到能力, 不会对整体造成影响
- 应用能对下级APK进行权限控制(比如访问、卸载、剔除)
- apk与上级应用以及平级apk之间, 保持最大限度的低耦合
- apk保持良好的高内聚能力, 不会跟其它APK产生功能上的相似点
- APK之间的能保持紧密的发生关系
- apk能保持调用
- apk能传递数据
- apk之间可共享库或者共享数据
曾经走过的弯路:
1. 软件分离带来的问题, 就是管理, 典型的问题就是插件过多的问题。 分离的代价, 需要在管理上下功夫。
2. 一些个人经验:
- 严格命插件或者可分离软件的命名规范
- 无需分开的插件/软件尽量合并, 避免后期软件带来的膨胀
- 摒弃个人陋习, 自己曾经的想法是: 本项目的代码, 直接可以搬移到另外一个项目中运行, 甚至可以到达无需移植的效果, 其实这个想法是很脑残的。 允许一定范围内的修改和移植, 这已经是可重用插件不错的境界了。不要过于追求完美。
本文示例代码下载
Android 软件平台架构设计相关推荐
- android客户端框架,最新的一版,通用Android 客户端架构设计,只有你还没看过
客户端架构设计 客户端设计 目的是整体设计客户端App,架构上打好铺垫. Android客户端架构设计 主要从以下几个方面进行设计:MVP设计风格.整体架构.日志系统.网络系统.本地存储.Test模块 ...
- Android APP架构设计——MVP的使用示例
0. 前言 为了更好地进行移动端架构设计,我们最常用的就是MVC.MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛.对于这三种架构设计以及优缺点已经在Android APP架构设计-- ...
- Android App 架构设计相关资料汇总
1. 前言 只要有1,2年工作经验的程序员,多多少少都会接触到架构东西.可能平时工作中不一定会有机会从0到1完完全全自己去设计一套架构出来,但是如果想成为高级工程师,技术专家,架构师--尽早接触架构方 ...
- Android LCE架构设计
Android LCE架构设计 LCE架构,按拆字法解析:L:Loading加载,C:Content加载内容,E:Error加载失败. LCE架构使用最为常见的场景是做列表数据的加载,在加载时,如果隔 ...
- 一种Android客户端架构设计分享
转载请注明出处:http://blog.csdn.net/ahence/article/details/56678126 技术发展日新月异,业界各种Android客户端架构设计,五花八门,但我们不能简 ...
- 浅谈一种Android客户端架构设计
技术发展日新月异,业界各种Android客户端架构设计,五花八门,但我们不能简单地说哪种架构更好,因为脱离业务谈架构是没有任何意义的,适合业务的才是好架构.而架构也不是一成不变的,随着业务的发展,也许 ...
- Android项目架构设计深入浅出
简介:本文结合个人在架构设计上的思考和理解,介绍如何从0到1设计一个大型Android项目架构. 作者 | 璞珂 来源 | 阿里技术公众号 前言:本文结合个人在架构设计上的思考和理解,介绍如何从0到1 ...
- Android 项目架构设计深入浅出
前言:本文结合个人在架构设计上的思考和理解,介绍如何从0到1设计一个大型Android项目架构. 一 引导 本文篇幅较长,可结合下表引导快速了解全文主脉络. 二 项目架构演进 该章节主要对一个Andr ...
- Android App架构设计
前言 Web的架构经过多年的发展已经非常成熟了,我们常用的SSM,SSH等等,架构都非常标准.个人认为,Web服务逻辑比较清晰,目的明确,流程也相对固定,从服务器收到请求开始,经过一系列的的拦截器,过 ...
最新文章
- 如何读取多个文件,文件后缀名不一致,不过类似source.1 source.2 source.3等
- ASP.NET MVC – 视图简介
- 二分平均值聚类 java_二分K-均值聚类算法
- Svn安装成功后的操作
- 【ajax】readyState=4并且status=200时,还进error方法
- SuperMap GIS查询
- Java并发编程实战————可重入内置锁
- 阿里云产品汇总及解释
- 操作class属性的新API--classList
- 动态规划经典题之石子合并
- Oracle触发器2-DML触发器
- 大厂十年IT老兵血泪教训,IT人到底要如何选择合适的报表工具?
- Eclipse 中 去掉控制台最大行数限制
- matlab画圆的命令_matlab画矩形和matlab画圆
- mysql 内连接与外连接的区别
- My Firest FireMonkey App
- Java 开通会员增加会员天数(LocalDateTime)
- Tensorboard无法显示图像
- 漫谈程序员(十六)健康程序猿系列之健康体魄
- mac系统python读取文件路径_mac下python目录
热门文章
- php下载pdf文件不全,关于php:Zip PDF文件下载无效
- 计算机视觉——全景图像拼接
- 【毕业设计/课程设计】智能会议室
- XUI 熟练使用之(三) -----------启动页( SimpleGuideBanner的使用)
- Galera Cluster一致性问题
- C#实现自定义打印文字和图片
- offiice2013全套软件,加破击工具,教程,真是验证过链接:https://pan.baidu.com/s/1Csv4ZXDQyK_cKfpIXwwn6Q 提取码:h7dp 复制这段内容后打
- adobe cs5 indesign 不显示文本框_Adobe CS5 InDesign自动添加页码
- spring-定时任务
- 天龙八部TLBB从0到1搭建教程-中