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合理地组合并部署到不同的设备上,按需加载所需模块,应用资源共享以及减少程序包大小。
松耦合和紧耦合的对比
下表摘自:耦合,紧耦合,松耦合,解耦
紧耦合架构 | 松耦合架构 | |
---|---|---|
工作方式 | 同步 | 异步 |
程序关联依赖 | 强 | 弱 |
业务逻辑关系 | 集中控制 | 分散控制 |
设计难度 | 容易 | 比较复杂 |
响应能力 | 快 | 和并行工作量成反比 |
时效表现 | 实时 | 无要求 |
业务使用范围 | 简单计算 | 复杂计算 |
安全 | 弱 | 强 |
应用领域 | 小规模并行处理环境 | 大规模、超大规模并行环境 |
系统稳定性 | 弱 | 强 |
应用领域 | 小规模并行处理环境 | 大规模、超大规模并行环境 |
系统稳定性 | 弱 | 强 |