一、配置文件结构
-
核心组成部分
app
:应用全局配置,包含bundleName
(应用唯一标识)、version
(版本信息)和apiVersion
(API依赖版本)deviceConfig
:设备特定配置,包含default
(通用设备)、phone
、tablet
等设备类型配置module
:HAP包配置,包含package
(包结构名称)、abilities
(能力配置)和reqPermissions
(权限声明)
-
关键配置示例
css{ "app": { "bundleName": "com.example.myapplication", "version": { "code": 1, "name": "1.0" }, "apiVersion": { "compatible": 4, "target": 5 } }, "deviceConfig": {}, "module": { "package": "com.example.myapplication.entrymodule", "abilities": [ { "skills": [{"entities": ["entity.system.home"], "actions": ["action.system.home"]}], "name": "com.example.myapplication.MainAbility", "type": "page" } ] } }
二、常见问题解决方案
-
bundleName配置错误
- 问题:包名格式不符合规范导致安装失败
- 解决方案 :采用反向域名格式(如
com.company.app
),至少包含三段,避免使用保留词(harmony/ohos等)
-
权限声明缺失
- 问题:应用无法访问网络或存储
- 解决方案 :在
module
中添加权限声明
json"reqPermissions": [ {"name": "ohos.permission.INTERNET"}, {"name": "ohos.permission.READ_USER_STORAGE"} ]
-
多HAP包冲突
- 问题:entry和feature模块配置冲突
- 解决方案 :在
build-profile.json5
中配置多目标产物
json"targets": [ {"name": "phone", "config": {"deviceType": ["phone"]}}, {"name": "tablet", "config": {"deviceType": ["tablet"]}} ]
三、开发案例参考
-
多设备适配案例
- 通过
deviceType
配置支持多设备类型
json"deviceType": ["phone", "tablet", "car"]
- 通过
-
动态Bundle加载
- 配置按需加载的动态模块
json"dynamic": [ { "name": "payment", "condition": "device.storage > 128GB", "prefetch": true } ]
-
签名配置最佳实践
- 使用V3签名机制
json"signingConfig": { "version": "3.0", "certificatePath": "./keys/release.p12", "provisionProfile": "./profiles/distribution.mobileprovision" }
四、关键注意事项
- 配置文件位置 :Stage模型使用
app.json5
和module.json5
,FA模型使用config.json
- 版本兼容性:API版本需与DevEco Studio和SDK版本匹配
- 多目标构建 :通过
product
和target
配置实现差异化打包