鸿蒙OS 应用配置文件解析

鸿蒙OS(HarmonyOS)的应用配置文件是应用开发的核心组成部分,定义了应用的基本信息、权限、能力等。配置文件分为两种类型:config.json(适用于API 8及以下版本)和module.json(适用于API 9及以上版本)。以下内容以module.json为例展开说明。


配置文件结构解析

基本结构
{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "MainAbility",
    "deviceTypes": ["default", "tablet"],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "MainAbility",
        "type": "page",
        "label": "$string:MainAbility_label",
        "icon": "$media:icon",
        "launchType": "standard"
      }
    ]
  }
}

  • name: 模块名称,需唯一。
  • type: 模块类型(entry表示主模块,feature表示功能模块)。
  • pages: 页面路由配置文件路径,使用$profile引用资源。
  • abilities: 应用的能力(如页面Ability、服务Ability等)。

关键配置示例

1. 定义Ability

Ability是鸿蒙应用的核心能力单元,支持页面(Page)、服务(Service)、数据(Data)等类型。

"abilities": [
  {
    "name": "MainAbility",
    "type": "page",
    "label": "Main",
    "icon": "$media:app_icon",
    "backgroundModes": ["dataTransfer"], // 后台模式
    "permissions": [], // 所需权限
    "uri": "scheme://host/path" // Data Ability的URI
  }
]

2. 权限声明

应用需在配置文件中声明所需权限:

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET",
    "reason": "$string:permission_reason"
  }
]

3. 多设备适配

通过deviceTypes指定支持的设备类型:

"deviceTypes": ["phone", "tablet", "tv", "wearable"]


资源引用规范

鸿蒙采用资源ID统一管理资源,格式为$type:name

  • $string: 字符串资源(如$string:app_name)。
  • $media: 媒体资源(如图片$media:icon)。
  • $profile: 配置文件(如页面路由$profile:main_pages)。

示例:

"label": "$string:app_name",
"icon": "$media:app_icon"


页面路由配置

页面路由文件(如resources/base/profile/main_pages.json)定义Ability与页面的映射:

{
  "src": [
    "pages/index/index",
    "pages/detail/detail"
  ]
}


常见场景代码示例

动态权限申请

在Ability中动态申请权限:

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(
  ['ohos.permission.INTERNET'],
  (err, data) => {
    if (err) {
      console.error('Permission request failed');
    } else {
      console.info('Permission granted');
    }
  }
);

跨设备启动Ability

通过隐式Want启动其他设备的Ability:

let want = {
  deviceId: "123456", // 目标设备ID
  bundleName: "com.example.app",
  abilityName: "MainAbility"
};
this.context.startAbility(want).catch(err => {
  console.error(`Start ability failed: ${err}`);
});


配置文件的校验与调试

使用ohos-validator工具校验配置文件:

ohos-validator --path ./module.json

日志中可通过hilog输出配置加载状态:

import hilog from '@ohos.hilog';
hilog.info(0x0000, 'Config', 'Module config loaded successfully');


总结

鸿蒙OS的应用配置文件是应用行为的蓝图,合理配置可确保多设备兼容性和功能完整性。开发时需注意:

  • 资源引用使用$type:name格式。
  • 权限声明需与实际使用匹配。
  • 多设备适配通过deviceTypes实现。
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐