1.3 框架设计原则
为了解决上述模块化的问题,我们要遵循以下原则去设计客户端框架:
- 根据基础技术层级、客户端的业务线等原则,对客户端应用程序进行模块化拆分。
- 每一个模块由独立的小团队或者个人来进行开发、维护、测试、集成。
- 模块与模块之间要做到彻底解耦,模块之间可以通过接口进行依赖。
- 每一个模块可以进行热插拔,单个模块的插拔不影响整体的工程的编译运行。
2. Quinox 简介
Quinox 客户端框架是类 OSGi( like-as)框架的实现。Quinox 一词来源于著名的 OSGi 框架的实现 Equinox。
基于此框架的客户端 App,都是由一个个的积木搭建而成,这些积木被称之为:Bundle。
3. Bundle 介绍
3.1 什么是 Bundle
Bundle 是 OSGi 规范的模块化基本单位,与 Android 里的 android.os.Bundle 是两个完全不同的概念。 OSGi 里的 Bundle 指的是 Java 应用程序的基本单位,它是一个模块单元(Jar 格式),也是上文 Quinox 简介里提到的积木。 基于 Quinox 容器框架开发的应用程序也是由众多的 Bundle(APK 格式)构成。
本章节将从项目开发的三个不同的时期对 Bundle 的形态进行阐述:
时期 | 形态 |
---|---|
开发期 | Bundle 工程 |
构建期 | Bundle 包 |
集成期 | 集成客户端的 Bundle 基线 |
3.2 Bundle 工程
常规的 Android 项目开发,代码工程通常有两种(两级)类型
工程类型 | Library | Application |
---|---|---|
工程输出 | Aar | Apk |
基于 Quinox 容器框架开发的 Android 项目,代码工程则有三种(三级)类型
工程类型 | Library | Bundle(工程包) | Application(测试包/安装包/Final APK) |
---|---|---|---|
工程输出 | Aar | Apk(.jar) | Apk |
关于 Bundle 工程,我们需要了解以下三点:
- Bundle 工程跟常规的 Android Application 工程非常的类似:它内部也会有多个 Library(Android Module);它的输出形式也是 APK 格式。
- 虽然 Bundle 包文件本质上是 APK 格式,但是该 APK 是无法运行的。同时,Bundle 工程被 deploy 到 mvn 仓库里时,它的后缀名是会改为.jar。
- 基于 Quinox 容器的 Application 工程(可称之为 Portal 工程)则是将众多 Bundle(APK)合并成一个 APK(Final)的过程。这里是合并,而不是编