乐趣区

关于harmonyos:建议收藏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 文件配置标签阐明

三. 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"
    }
  }
}
退出移动版