共计 6352 个字符,预计需要花费 16 分钟才能阅读完成。
一. 利用配置文件
每个利用我的项目必须在我的项目的代码目录下退出配置文件,这些配置文件会向编译工具、操作系统和利用市场提供利用的根本信息。
在基于 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"
}
}
}