建议收藏!Harmony应用配置文件概述(Stage模型)

一. 应用配置文件

每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。

在基于 Stage 模型开发的应用项目代码下,都存在一个 app.json5 及一个或多个 module.json5 这两种配置文件。

app.json5主要包含以下内容:

●应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。

●特定设备类型的配置信息。

module.json5主要包含以下内容:

●Module 的基本配置信息,例如 Module 名称、类型、描述、支持的设备类型等基本信息。

应用组件信息,包含 UIAbility 组件和 ExtensionAbility 组件的描述信息。

●应用运行过程中所需的权限信息。

二. app.json5 配置文件

先通过一个示例,整体认识一下 app.json5 配置文件。

{
  "app": {
    "bundleName": "com.application.myapplication",
    "vendor": "example",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name",
    "description": "$string:description_application",
    "minAPIVersion": 9,
    "targetAPIVersion": 9,
    "apiReleaseType": "Release",
    "debug": false,
    "car": {
      "minAPIVersion": 8,
    }
  },
}

app.json5 配置文件包含以下标签。
表 1 app.json5 文件配置标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第1张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第2张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第3张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第4张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第5张图片

三. module.json5 配置文件

先通过一个示例,整体认识一下module.json5配置文件。

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "default",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "virtualMachine": "ark",
    "metadata": [
      {
        "name": "string",
        "value": "string",
        "resource": "$profile:distributionFilter_config"
      }
    ],
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "ohos.want.action.home"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
        "name": "ohos.abilitydemo.permission.PROVIDER",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "FormAbility"
          ],
          "when": "inuse"
        }
      }
    ]
  }
}

module.json5 配置文件包含以下标签。

表 1 module.json5 配置文件配置标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第6张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第7张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第8张图片

deviceTypes 标签
建议收藏!Harmony应用配置文件概述(Stage模型)_第9张图片

deviceTypes 示例:

{
  "module": {
    "name": "myHapName",
    "type": "feature",
    "deviceTypes" : [
       "tablet"
    ]
  }
}

pages 标签

该标签是一个 profile 文件资源,用于指定描述页面信息的配置文件。

{
  "module": {
    // ...
    "pages": "$profile:main_pages", // 通过profile下的资源文件配置
  }
}

在开发视图的 resources/base/profile 下面定义配置文件 main_pages.json,其中文件名(main_pages)可自定义,需要和前文中 pages 标签指定的信息对应,配置文件中列举了当前应用组件中的页面信息。

表 3 pages 配置文件标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第10张图片

表 4 pages 配置文件中的 window 标签说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第11张图片

{
  "src": [
    "pages/index/mainPage",
    "pages/second/payment",
    "pages/third/shopping_cart",
    "pages/four/owner"
  ]
}

metadata 标签

该标签标识 HAP 的自定义元信息,标签值为数组类型,包含 name,value,resource 三个子标签。

表 5 metadata 标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第12张图片

{
  "module": {
    "metadata": [{
      "name": "module_metadata",
      "value": "a test demo for module metadata",
      "resource": "$profile:shortcuts_config",
    }],

    "abilities": [{
      "metadata": [{
        "name": "ability_metadata",
        "value": "a test demo for ability",
        "resource": "$profile:config_file"
      },
      {
        "name": "ability_metadata_2",
        "value": "a string test",
        "resource": "$profile:config_file"
      }],
    }],

    "extensionAbilities": [{
      "metadata": [{
        "name": "extensionAbility_metadata",
        "value": "a test for extensionAbility",
        "resource": "$profile:config_file"
      },
      {
        "name": "extensionAbility_metadata_2",
        "value": "a string test",
        "resource": "$profile:config_file"
      }],
    }]
  }
}

abilities 标签

ablities 标签描述 UIAbility 组件的配置信息,标签值为数组类型,该标签下的配置只对当前 UIAbility 生效。

表 6 abilities 标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第13张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第14张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第15张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第16张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第17张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第18张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第19张图片

abilities 示例:

{
  "abilities": [{
    "name": "EntryAbility",
    "srcEntry": "./ets/entryability/EntryAbility.ts",
    "launchType":"singleton",
    "description": "$string:description_main_ability",
    "icon": "$media:icon",
    "label": "Login",
    "permissions": [],
    "metadata": [],
    "exported": true,
    "continuable": true,
    "skills": [{
      "actions": ["ohos.want.action.home"],
      "entities": ["entity.system.home"],
      "uris": []
    }],
    "backgroundModes": [
      "dataTransfer",
      "audioPlayback",
      "audioRecording",
      "location",
      "bluetoothInteraction",
      "multiDeviceConnection",
      "wifiInteraction",
      "voip",
      "taskKeeping"
    ],
    "startWindowIcon": "$media:icon",
    "startWindowBackground": "$color:red",
    "removeMissionAfterTerminate": true,
    "orientation": " ",
    "supportWindowMode": ["fullscreen", "split", "floating"],
    "maxWindowRatio": 3.5,
    "minWindowRatio": 0.5,
    "maxWindowWidth": 2560,
    "minWindowWidth": 1400,
    "maxWindowHeight": 300,
    "minWindowHeight": 200,
    "excludeFromMissions": false
  }]
}

skills标签

该标签标识 UIAbility 组件或者 ExtensionAbility 组件能够接收的Want的特征。

表 7 skills 标签说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第20张图片

表 8 uris 对象内部结构说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第21张图片
skills 示例:

{
  "abilities": [
    {
      "skills": [
        {
          "actions": [
            "ohos.want.action.home"
          ],
          "entities": [
            "entity.system.home"
          ],
          "uris": [
            {
              "scheme":"http",
              "host":"example.com",
              "port":"80",
              "path":"path",
              "type": "text/*"
            }
          ]
        }
      ]
    }
  ]
}

extensionAbilities 标签

描述 extensionAbilities 的配置信息,标签值为数组类型,该标签下的配置只对当前 extensionAbilities 生效。

表 9 extensionAbilities 标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第22张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第23张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第24张图片

建议收藏!Harmony应用配置文件概述(Stage模型)_第25张图片

requestPermissions 标签

该标签标识应用运行时需向系统申请的权限集合。

说明
● 在 requestPermissions 标签中配置的权限项将在应用级别生效,即该权限适用于整个应用程序。
● 如果应用需要订阅自己发布的事件,而且应用在 extensionAbilities 标签中的 permissions 字段中设置了访问该应用所需要的权限,那么应用也需要在 requestPermissions 标签中注册相关权限才能收到该事件。

表 10 requestPermissions 标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第26张图片

requestPermissions 示例:

{
  "module" : {
    "requestPermissions": [
      {
        "name": "ohos.abilitydemo.permission.PROVIDER",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "EntryFormAbility"
          ],
          "when": "inuse"
        }
      }
    ]
  }
}

shortcuts 标签

shortcuts 标识应用的快捷方式信息。标签值为数组,最多可以配置四个快捷方式。其包含四个子标签 shortcutId、label、icon、wants。

metadata 中指定 shortcut 信息,其中:

● name:指定 shortcuts 的名称。使用 ohos.ability.shortcuts 作为 shortcuts 信息的标识。
● resource:指定 shortcuts 信息的资源位置。

表 11 shortcuts 标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第27张图片

1.  在/resource/base/profile/目录下配置 shortcuts_config.json 配置文件。

{
  "shortcuts": [
    {
      "shortcutId": "id_test1",
      "label": "$string:shortcut",
      "icon": "$media:aa_icon",
      "wants": [
        {
          "bundleName": "com.ohos.hello",
          "abilityName": "EntryAbility"
        }
      ]
    }
  ]
}

2.  在 module.json5 配置文件的 abilities 标签中,针对需要添加快捷方式的 UIAbility 进行配置 metadata 标签,使 shortcut 配置文件对该 UIAbility 生效。

{
  "module": {
    // ...
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        // ...
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "ohos.want.action.home"
            ]
          }
        ],
        "metadata": [
          {
            "name": "ohos.ability.shortcuts",
            "resource": "$profile:shortcuts_config"
          }
        ]
      }
    ]
  }
}

distributionFilter 标签

该标签下的子标签均为可选字段,用于定义 HAP 对应的细分设备规格的分发策略,以便应用市场在云端分发 HAP 时做精准匹配。该标签需要配置在/resource/profile 资源目录下;在进行分发时,通过 deviceType 与下表属性的匹配关系,唯一确定一个用于分发到设备的 HAP。

表 12 distributionFilter 标签说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第28张图片

表 12 distributionFilter 标签说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第29张图片

表 14 screenWindow 对象的内部结构说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第30张图片

表 15 screenDensity 对象的内部结构说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第31张图片

表 16 countryCode 对象的内部结构说明
建议收藏!Harmony应用配置文件概述(Stage模型)_第32张图片

在开发视图的 resources/base/profile 下面定义配置文件 distro_filter_config.json,文件名可以自定义。

{
  "distributionFilter": {
    "screenShape": {
      "policy": "include",
      "value": [
        "circle",
        "rect"
      ]
    },
    "screenWindow": {
      "policy": "include",
      "value": [
        "454*454",
        "466*466"
      ]
    },
    "screenDensity": {
      "policy": "exclude",
      "value": [
        "ldpi",
        "xldpi"
      ]
    },
    "countryCode": { // 支持中国和香港地区分发
      "policy": "include",
      "value": [
        "CN",
        "HK"
      ]
    }
  }
}

在 module.json5 配置文件的 module 标签中定义 metadata 信息。

{
  "module": {
    // ...
    "metadata": [
      {
        "name": "ohos.module.distro",
        "resource": "$profile:distro_filter_config",
      }
    ]
  }
}

testRunner 标签

此标签用于支持对测试框架的配置。
表 17 testRunner 标签说明

建议收藏!Harmony应用配置文件概述(Stage模型)_第33张图片

testRunner 标签示例:

{
  "module": {
    // ...
    "testRunner": {
      "name": "myTestRunnerName",
      "srcPath": "etc/test/TestRunner.ts"
    }
  }
}

你可能感兴趣的:(harmonyos)