一. 利用配置文件

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

在基于 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"    }  }}