UnityApp
Unity应用程序 #设计文档
FMP Unity Application(简称UnityApp)作为FMP解决方案中的视觉呈现终端部分,能灵活的搭配使用FMP方案构建出的标准模块,快速制作数字内容的交互终端。
功能特性(Features)
全局配置 (AppConfig)
UnityApp使用AppConfig作为应用的全局的配置文件。
虚拟环境(Vendor)
为了在开发和实际使用中,能使用一个UnityApp切换不同的内容呈现,特别设计了虚拟环境的功能,vendor是一个文件结构,包含了应用程序运行时需要的所有数据。 在UnityApp的数据持久化路径下,可以存在多个虚拟环境,在应用启动的时候,可以通过配置文件或命令行参数,指定激活一个虚拟环境作为此次启动的数据目录。
应用升级 (Application Upgrade)
TODO
框架更新(Framework Update)
FMP构建出的标准模块,在发布后,会存放在仓库中(Repository),在UnityApp运行时,可以通过模块的更新,从仓库中获取指定版本的模块。
资源聚合(Asset Syndication)
TODO
许可证(License)
许可证使用设备码(Device Code)进行激活,设备码由设备的相关硬件信息进行生成,可保证物理上的不可篡改。
模块管理(Module Management)
UnityApp本身只是一个基础应用,为了使用FMP方案中构建出的标准模块。需要在UnityApp启动后,将模块载入运行时。 FMP方案中的标准模块,均基于FMP-MVCS架构,具有统一的结构和接口。
定制化引导 (Customizable Bootload)
FMP程序运行时,会按照定义的引导步骤(Steps),依次加载对应的模块,并加载模块对应的资源。
衍生应用(Clone Application)
UnityApp是一个母体应用,不推荐在生产环境中使用。 在UnityApp的基础上,使用自定义的程序图标,程序名称,密钥等所创建出的应用,统称为衍生应用。在生产环境中推荐使用衍生应用。
业务分支 (Business Branch)
业务分支主要用于在构建衍生应用时,替换敏感数据,分为源文件替换和资源文件替换两种方式。
源文件替换 在构建时,替换业务分支的源文件,这种方式适合直接使用母体应用构建衍生应用的情况。
资源文件替换 在启动时,读取工程中的资源文件,解析后,重写业务分支的敏感数据,这种方式适合将母体应用编译为库的情况。
皮肤(Skin)
TODO
架构设计 (Architecture Design)
架构总览
FMP-UnityApp使用模块化动态加载作为核心技术。在程序运行时,动态加载指定的程序集、配置、资源等文件。

一个Unity项目最大化构建完成的模块,包含以下内容:
proto程序集
protobuf定义的接口编译完成的程序集,用于同后端进行网络通信。被Unity程序集引用。
bridge程序集
mvcs中视图层的桥接接口,用于mvcs程序集适配不用的UI系统。被Unity程序集引用。
mvcs程序集
数据、视图、控制、服务四层核心框架,用于运行时将所有模块统合在一起,为跨模块跨层访问提供支撑。被Unity程序集引用。
Unity程序集
Unity项目的编译完成的程序集。包含Unity层级的业务逻辑。
xml配置文件
Unity程序集使用的配置文件,包含样式的定义。
json资源目录文件
Unity程序集使用的资源文件的清单,用于Unity程序集加载文本、图片、视频等文件内容。
windows资源包
Unity程序使用的Windows平台的AssetBundle。
osx资源包
Unity程序使用的OSX平台的AssetBundle。
linux资源包
Unity程序使用的Linux平台的AssetBundle。
android资源包
Unity程序使用的Android平台的AssetBundle。
ios资源包
Unity程序使用的IOS平台的AssetBundle。
webgl资源包
Unity程序使用的WebGL平台的AssetBundle。
虚拟环境(Vendor)
元数据文件(meta file)
虚拟环境的元数据文件以meta.json命名,保存于vendor的目录下。
元数据文件中定义了以下功能:
基础信息
皮肤设置 在生命周期的过场(Splash)阶段,可以从vendor根目录下加载一张平铺的图片作为背景,以及一张保持长宽比例的图片作为标语图。
图像设置
依赖设置
引导设置
资源配置
模块配置
主题配置
文件结构
|+ vendor/
|+ configs/
|+ modules/
|+ uabs/
|+ themes/
|- Bootloader.xml
|- Upgrade.xml
流程设计(Design)
生命周期
UnityApp的生命周期为启动(Launcher)、选择(Selector)、过场(Splash)、框架更新(Framework Update)、资源聚合(Asset Syndication)、开始(Startup)六个阶段。
启动阶段
此阶段完成以下工作:
加载应用配置文件,如果不存在,创建一个默认的配置文件存放到数据持久化路径下。
解析命令行参数,如果指定了vendor,使用此参数值作为激活的vendor。
如果命令行参数没有指定vendor,则使用配置文件中激活的vendor。
进入选择阶段。
选择阶段
此阶段完成以下工作:
如果有激活的vendor,直接进入过场阶段。
如果没有激活的vendor,显示选择界面后等待用户选择后进入过场阶段。
过场阶段
此阶段完成以下工作:
加载激活的vendor的皮肤。
根据应用配置文件调整画质。
检查许可证。
根据许可证状态决定是否进入升级阶段。
进入框架更新阶段。
框架更新阶段
此阶段完成以下工作:
根据vendor中的配置中的更新策略进行更新。
更新过程会将所有的更新文件存放到临时文件夹中。
更新成功后,使用临时文件加中的文件覆盖需要更新的文件。
更新失败后,不做任何数据的更改。
进入资源聚合阶段。
资源聚合阶段
此阶段完成以下工作:
根据vendor中的配置中的更新策略进行更新。
更新资源文件夹中的文件。
进入开始阶段。
开始阶段
此阶段完成以下工作:
使用应用配置文件中的配置,调整界面适配。
初始化FMP-MVCS框架。
载入模块到运行时,完成模块的装载
按加载器的配置,依次执行模块
进入事件循环
在应用程序退出后,完成模块的拆卸
释放FMP-MVCS框架。
Last updated