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合理地组合并部署到不同的设备上,按需加载所需模块,应用资源共享以及减少程序包大小。

松耦合和紧耦合的对比

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

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

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值