
鸿蒙5应用配置文件解析:app.json5全攻略
一、app.json5配置文件概述
在鸿蒙5(HarmonyOS 5)应用开发中,app.json5是每个应用都必须包含的核心配置文件。它位于项目的AppScope/resources/base/profile/目录下,定义了应用的基本信息、权限要求、模块结构等重要内容。
ArkCompiler作为鸿蒙的编译工具链,会解析这个文件来正确构建应用包。下面我们将全面解析app.json5的各个配置项,并提供实用代码示例。
二、app.json5基础结构
一个最基本的app.json5文件结构如下:
{
“app”: {
“bundleName”: “com.example.myapplication”,
“vendor”: “example”,
“versionCode”: 1,
“versionName”: “1.0.0”,
“minAPIVersion”: 9,
“targetAPIVersion”: 9,
“apiReleaseType”: “Release”
}
}
三、详细配置解析
- 应用基本信息配置
{
“app”: {
“bundleName”: “com.example.myapplication”, // 应用包名,唯一标识
“vendor”: “example”, // 厂商名称
“versionCode”: 1, // 内部版本号,整数
“versionName”: “1.0.0”, // 展示版本号
“minAPIVersion”: 9, // 最低支持的API版本
“targetAPIVersion”: 9, // 目标API版本
“apiReleaseType”: “Release”, // API发布类型:Canary/Beta/Release
“icon”: “$media:app_icon”, // 应用图标资源引用
“label”: “$string:app_name”, // 应用名称资源引用
“description”: “$string:app_description”, // 应用描述
“distributedNotificationEnabled”: true // 是否支持分布式通知
}
} - 模块配置
{
“module”: {
“name”: “entry”, // 模块名称
“type”: “entry”, // 模块类型:entry/feature/har
“srcEntry”: “./ets/MainAbility/pages/Index.ets”, // 入口文件路径
“description”: “$string:module_description”, // 模块描述
“mainElement”: “MainAbility”, // 主Ability
“deviceTypes”: [ // 支持的设备类型
“default”,
“tablet”,
“tv”,
“wearable”,
“car”
],
“deliveryWithInstall”: true, // 是否随应用安装时安装
“installationFree”: false, // 是否支持免安装
“pages”: “$profile:main_pages”, // 页面配置文件引用
“abilities”: [
{
“name”: “MainAbility”,
“srcEntry”: “./ets/MainAbility/MainAbility.ts”,
“label”: “$string:MainAbility_label”,
“icon”: “$media:icon”,
“description”: “$string:MainAbility_description”,
“visible”: true,
“skills”: [
{
“actions”: [
“action.system.home”
],
“entities”: [
“entity.system.home”
]
}
]
}
]
}
} - 权限配置
{
“module”: {
“requestPermissions”: [
{
“name”: “ohos.permission.INTERNET”,
“reason”: “$string:internet_permission_reason”,
“usedScene”: {
“abilities”: [“MainAbility”],
“when”: “always”
}
},
{
“name”: “ohos.permission.LOCATION”,
“reason”: “需要获取位置信息以提供附近服务”,
“usedScene”: {
“abilities”: [“MapAbility”],
“when”: “inuse”
}
}
]
}
}
四、高级配置示例 - 多模块配置
{
“app”: {
“bundleName”: “com.example.multimodule”,
“versionCode”: 1,
“versionName”: “1.0.0”
},
“modules”: [
{
“name”: “entry”,
“type”: “entry”,
“abilities”: [
{
“name”: “MainAbility”,
“srcEntry”: “./ets/MainAbility/MainAbility.ts”
}
]
},
{
“name”: “feature”,
“type”: “feature”,
“abilities”: [
{
“name”: “FeatureAbility”,
“srcEntry”: “./ets/FeatureAbility/FeatureAbility.ts”
}
]
},
{
“name”: “shared”,
“type”: “har”
}
]
} - 多设备适配配置
{
“module”: {
“deviceTypes”: [“phone”, “tablet”, “tv”],
“distroFilter”: [
{
“name”: “screenShape”,
“value”: [“round”, “rect”]
},
{
“name”: “countryCode”,
“value”: [“CN”, “US”]
}
],
“abilities”: [
{
“name”: “MainAbility”,
“forms”: [
{
“name”: “widget”,
“type”: “JS”,
“src”: “./ets/widgets/WeatherWidget.ts”,
“window”: {
“designWidth”: 720,
“autoDesignWidth”: true
},
“updateEnabled”: true,
“scheduledUpdateTime”: “10:30”,
“updateDuration”: 1
}
]
}
]
}
}
五、最佳实践 - 资源引用规范
{
“app”: {
“icon”: “$media:app_icon”,
“label”: “$string:app_name”,
“splashscreen”: {
“icon”: “$media:splash_icon”,
“label”: “$string:app_name”,
“background”: “$color:splash_background”
}
},
“module”: {
“abilities”: [
{
“icon”: “$media:ability_icon”,
“label”: “$string:ability_label”,
“metaData”: {
“customData”: [
{
“name”: “config”,
“value”: “$string:ability_config”,
“extra”: “$media:config_icon”
}
]
}
}
]
}
} - 国际化配置
{
“app”: {
“label”: “$string:app_name”,
“splashscreen”: {
“label”: “$string:app_name”
}
},
“module”: {
“abilities”: [
{
“label”: “$string:main_ability_label”,
“description”: “$string:main_ability_description”
}
],
“requestPermissions”: [
{
“reason”: “$string:internet_permission_reason”
}
]
}
}
六、常见问题与调试
版本兼容性问题:
确保minAPIVersion和targetAPIVersion设置正确
使用apiReleaseType指定API的稳定性级别
权限申请失败:
检查权限名称是否正确
确保在requestPermissions中声明了所有需要的权限
提供合理的权限使用原因(reason)
模块加载问题:
检查模块类型(type)是否正确设置
确保entry模块的deliveryWithInstall为true
调试技巧:
// 在代码中获取配置信息
import abilityAccessCtrl from ‘@ohos.abilityAccessCtrl’;
const atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context,
[‘ohos.permission.INTERNET’]).then((data) => {
console.log(app.json5权限申请结果: ${JSON.stringify(data)}
);
});
七、总结
鸿蒙5的app.json5配置文件是应用开发的核心,ArkCompiler依赖此文件进行正确的应用构建和部署。通过合理配置app.json5,开发者可以:
定义应用的基本属性和行为
管理模块结构和依赖关系
控制权限和安全策略
实现多设备适配和国际化支持
