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

367 阅读5分钟

一. 应用配置文件

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

在基于 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 文件配置标签说明

图片

图片

图片

图片

图片

三. 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 配置文件配置标签说明

图片

图片

图片

deviceTypes 标签 图片

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 配置文件标签说明

图片

表 4 pages 配置文件中的 window 标签说明 图片

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

metadata 标签

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

表 5 metadata 标签说明

图片

{
  "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 标签说明

图片

图片

图片

图片

图片

图片

图片

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 标签说明 图片

表 8 uris 对象内部结构说明 图片 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 标签说明

图片

图片

图片

图片

requestPermissions 标签

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

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

表 10 requestPermissions 标签说明

图片

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 标签说明

图片

\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 标签说明 图片

表 12 distributionFilter 标签说明 图片

表 14 screenWindow 对象的内部结构说明 图片

表 15 screenDensity 对象的内部结构说明 图片

表 16 countryCode 对象的内部结构说明 图片

在开发视图的 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 标签说明

图片

testRunner 标签示例:

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

为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙(HarmonyOS)开发学习指南》需要的可以

👀关注公众号:Android老皮!!!

《鸿蒙(HarmonyOS)开发学习指南》

第一章 快速入门

1、开发准备

2、构建第一个ArkTS应用(Stage模型)

3、构建第一个ArkTS应用(FA模型)

4、构建第一个JS应用(FA模型)

5、........

图片

第二章 开发基础知识

1、应用程序包基础知识

2、应用配置文件(Stage模型)

3、应用配置文件概述(FA模型)

4、.......

图片

第三章 资源分类与访问

1、 资源分类与访问

2、 创建资源目录和资源文件

3、 资源访问

4、.......

图片

第四章 学习ArkTs语言

1、初识ArkTS语言

2、基本语法

3、状态管理

4、其他状态管理

5、渲染控制

6、......

图片

第五章 UI开发

1.方舟开发框架(ArkUI)概述

2.基于ArkTS声明式开发范式

3.兼容JS的类Web开发范式

4.......

图片

第六章 Web开发

1.Web组件概述

2.使用Web组件加载页面

3.设置基本属性和事件

4.在应用中使用前端页面JavaScript

5.ArkTS语言基础类库概述

6.并发

7.......

图片

11.网络与连接

12.电话服务

13.数据管理

14.文件管理

15.后台任务管理

16.设备管理

17......

图片

第七章 应用模型

1.应用模型概述

2.Stage模型开发指导

3.FA模型开发指导

4.......

图片