> 文档中心 > Stage模型工程结构、进程模型和多HAP包结构模型

Stage模型工程结构、进程模型和多HAP包结构模型


app.json5配置文件

{  "app": {    "bundleName": "com.application.myapplication",  // 应用包名    "debug": false,   // 是否可调试    "icon": "$media:app_icon",   // 应用的图标    "label": "$string:app_name",   // 应用的名称    "description": "$string:app_description",   // 应用的描述信息    "vendor": "example",  // 应用开发厂商的描述    "versionCode": 1000000,  // 版本号,32位非负整数,数值越大版本越高    "versionName": "1.0.0",  // 应用版本号的文字描述,给用户展示的    "distributedNotificationEnabled": true,  // 是否开启分布式通知    "minCompatibleVersionCode": 1000000, // 兼容的最低历史版本号    "minAPIVersion": 9, // SDK的API最小版本    "targetAPIVersion": 9,  // 运行需要的API目标版本    "apiReleaseType": "Release",  // 目标版本的类型,Canary、Beta和Release    "entityType": "media",  // 应用的类别    "multiProjects": true,  // 工程是否支持多个工程的联合开发    "tablet": {   //  对tablet设备做的特殊配置    "minAPIVersion": 8,    },    "tv": {  //  对tv设备做的特殊配置    "minAPIVersion": 8,    },    "wearable": {  //  对wearable设备做的特殊配置    "minAPIVersion": 8,    },    "car": {  //  对car设备做的特殊配置      "minAPIVersion": 8,    },    "default": {  //  对default设备做的特殊配置      "minAPIVersion": 8,    }  },}

module.json5配置文件

{  "module": {    "name": "entry",  // Module的名称    "type": "entry",  // Module的类型,entry和feature    "srcEntrance": "./ets/myabilitystage/MyAbilityStage.ts",  // 标识当前Module所对应的代码路径    "description": "$string:module_desc",  // Module的描述信息    "process": "com.example.smartagriculture",  // Module的进程名    "mainElement": "EntryAbility",  // Module的入口UIAbility名称或者ExtensionAbility名称    "deviceTypes": [  // 可运行的设备      "default",      "tablet"    ],    "deliveryWithInstall": true,  // 当前Module是否在用户主动安装的时候安装    "installationFree": false,  // 是否支持免安装特性(true时的例子:快应用),Module和feature这里要统一    "virtualMachine": "ark",  // 目标虚拟机类型,供云端分发使用    "uiSyntax": "ets",  // 定义该JS Component的语法类型(标签从API9开始废弃)    "pages": "$profile:main_pages", // 列举JS Component中每个页面信息,页面跳转要把页面信息填进去才可跳转    "metadata": [  // 自定义元信息      { "name": "module_metadata",  // 数据项的键名称 "value": "a test demo for module metadata",  // 数据项的值 "resource": "$profile:shortcuts_config"  // 定义用户自定义数据格式      }    ],    "abilities": [  // UIAbility的配置信息,配置只对当前UIAbility生效      {     "name": "EntryAbility",  // UIAbility组件的名称     "srcEntrance": "./ets/entryability/EntryAbility.ts",  // UIAbility的代码路径     "launchType":"standard",  // UIAbility组件的启动模式,默认singleton     "description": "$string:description_main_ability",  // UIAbility组件的描述信息     "icon": "$media:icon",  // UIAbility组件的图标     "label": "Login",  // UIAbility组件对用户显示的名称     "permissions": [],  // 权限信息     "metadata": [],  // UIAbility组件的元信息     "visible": true,  // 是否可以被其他应用调用     "continuable": true, // UIAbility组件是否可以迁移     "skills": [{  // 能够接收的Want的特征集"actions": [  // 能够接收的Want的Action值的集合     "action.system.home"   ],   "entities": [  // 能够接收Want的Entity值的集合     "entity.system.home"],  "uris": [  // Want中URI(Uniform Resource Identifier)相匹配的集合  { "scheme":"http",  // URI的协议名部分 "host":"example.com",  // URI的主机地址部分 "port":"80",  // URI的端口部分 "path":"path",  // URI的路径部分,path、pathStartWith和pathRegex配置时三选一 "type": "text/*"  // 与Want相匹配的数据类型,使用MIME类型规范。可与schema同时配置,也可以单独配置      }  ]     }],     "backgroundModes": [  // UIAbility组件的长时任务集合,background开头,一看就是可后台运行"dataTransfer","audioPlayback","audioRecording","location","bluetoothInteraction","multiDeviceConnection","wifiInteraction","voip","taskKeeping"     ],     "startWindowIcon": "$media:icon",  // 启动页面图标资源文件的索引     "startWindowBackground": "$color:red",  // 启动页面背景颜色资源文件的索引     "removeMissionAfterTerminate": true,  // 组件销毁后是否从任务列表中移除任务     "orientation": " ",  // 组件启动时的方向     "supportWindowMode": ["fullscreen", "split", "floating"],  // 组件所支持的窗口模式     "priority": 5,  // 组件的优先级,仅支持系统应用配置,三方应用配置不生效     "maxWindowRatio": 3.5,  // 支持的最大的宽高比     "minWindowRatio": 0.5,  // 支持的最小的宽高比     "maxWindowWidth": 2560,  // 支持的最大的窗口宽度     "minWindowWidth": 1400,  // 支持的最小的窗口宽度     "maxWindowHeight": 300,  // 支持的最大的窗口高度     "minWindowHeight": 200,  // 支持的最小的窗口高度     "excludeFromMissions": false  // 是否在最近任务列表中显示      }    ],    "extensionAbilities": [  // extensionAbilities的配置信息 {   "name": "FormName",  // ExtensionAbility组件的名称   "srcEntrance": "./form/MyForm.ts",  // ExtensionAbility组件所对应的代码路径   "icon": "$media:icon",  // 组件的图标   "label" : "$string:extension_name",  // 对用户显示的名称   "description": "$string:form_description",  // 组件的描述   "type": "form",  // 组件的类型   "permissions": ["ohos.abilitydemo.permission.PROVIDER"],  // 权限信息   "readPermission": "",   "writePermission": "",   "visible": true,  // 是否可以被其他应用调用   "uri":"scheme://authority/path/query",  // 当前ExtensionAbility组件提供的数据URI   "skills": [{     "actions": [],     "entities": [],     "uris": []   }],   "metadata": [     {"name": "ohos.extension.form","resource": "$profile:form_config",      }   ] }  ],    "requestPermissions": [  // 应用运行时需向系统申请的权限集合      {  "name": "ohos.abilitydemo.permission.PROVIDER",  // 需要使用的权限名称 "reason": "$string:reason",  // 用于描述申请权限的原因 "usedScene": {  // 描述权限使用的场景由abilities和when组成   "abilities": [  // UIAbility或者ExtensionAbility组件的名称     "FormAbility"   ],   "when": "inuse"  // inuse(使用时)、always(始终) }      }    ],    "testRunner": {  // 支持对测试框架的配置      "name": "myTestRunnerName",  // 测试框架对象名称      "srcPath": "etc/test/TestRunner.ts"  // 测试框架代码路径    }  }}

进程内存模型

进程模型示意图

在这里插入图片描述

多HAP包结构模型

​ 多HAP包将业务划分成多个模块,每个模块放到独立的HAP中,进行模块化管理,模块之间属于松耦合关系。如下图的appA包含一个Entry包和FeatrueA包,appB包含一个Entry包、FeatrueA包和FeatrueB包,appA包含一个Entry包、FeatrueB包和FeatrueC包。多HAP包结构,方便了开发者将多HAP合理地组合并部署到不同的设备上,按需加载所需模块,应用资源共享以及减少程序包大小。

松耦合和紧耦合的对比

下表摘自:耦合,紧耦合,松耦合,解耦

紧耦合架构 松耦合架构
工作方式 同步 异步
程序关联依赖
业务逻辑关系 集中控制 分散控制
设计难度 容易 比较复杂
响应能力 和并行工作量成反比
时效表现 实时 无要求
业务使用范围 简单计算 复杂计算
安全
应用领域 小规模并行处理环境 大规模、超大规模并行环境
系统稳定性
应用领域 小规模并行处理环境 大规模、超大规模并行环境
系统稳定性

在这里插入图片描述