config.json作用
- 规定应用信息:包名、版本号等
- 在此声明Ability,及其属性、类型等。
- 规定应用支持的设备,和每种设备上面的属性或配置,如可以指定在 tv 设备中设置 keepAlive=true(跟随系统启动,仅限系统应用),而在wearable 中则不跟随系统启动。
- 声明需要的权限、定义自身需要的权限
等等功能。
简介
在下面我整理了一些属性的作用。
有一些是项目创建后就默认有的。还有一些是我自己觉得比较常用的及其可选项,也加在了里面。
{
"app": {
"bundleName": "com.aos.learning", //新建项目时指定的PackageName,而且IDE建议以 com.开头
"vendor": "aos", //根据新建项目时指定的PackageName 的第一个 . 之后的字符串
"version": { //版本
"code": 1, //版本号,目前测试看,系统并不会阻止降级安装。
"name": "1.0" //版本名
},
"apiVersion": { //依赖的鸿蒙SDK版本
"compatible": 3, //兼容版本
"target": 3 //编译版本
}
},
"deviceConfig": { //应用在不同设备上面的配置。
"tv": { //目前看是有 "default","tv","wearable"。分别可以配置属性
"keepAlive": true
}
},
"module": { //模块列表,有三个必填的属性 : package,deviceType,distro
"package": "com.aos.learning", //模块的包名
"name": ".Learning", //模块名称
"reqCapabilities": [
"video_support"
],
"deviceType": [ //目前看是有 "default","tv","wearable",smartVision 。
"tv"
],
"distro": { //distro下面都是必填项
"deliveryWithInstall": true, //是否在应用安装时,安装此模块的 hap
"moduleName": "entry",
"moduleType": "entry" //现在是有 entry,feature,har 三种。
},
"defPermissions": { //其它应用要访问你的App时需要拥有的权限。
"name": "com.aos.permission.learning", //权限名称
"grantMode": "user_grant" //user_grant 或者 system_grant
},
"reqPermissions": [ //你的应用需要的权限列表,这里写明后,同样需要运行时申请。
{
"name": "ohos.permission.INTERNET" //举例:网络访问权限。
}
],
"abilities": [ //Ability列表
{
"skills": [
{
"entities": [
"entity.system.home" //在全部应用上面显示此Ability
],
"actions": [
"action.system.home" //默认启动此Ability
]
}
],
"orientation": "landscape", //横屏
"formEnabled": false, //是否支持AbilityForm。
"name": "com.aos.learning.MainAbility", //Ability名称
"icon": "$media:icon", //Ability图标
"description": "$string:mainability_description", //Ability描述
"label": "Learning", //Ability标题
"type": "page", //Ability类型 :PageAbility or ServiceAbility or DataAbility
"launchType": "standard" //启动模式,目前支持 standard模式和 singleton模式。
}
]
}
}
稍微解释一下
- vender我测试是每次都选 第一个和第二个 . 中间的字符串,并且 建议 使用com…开头
- version.code和version.name 目前看在系统层面并无卵用,不影响覆盖安装或者使用。
- 权限grantMode 作用不明。
- 所有系统权限都可以在 ohos.security.SystemPermission中找到。
- reqPermissions虽然不是 required,默认项目配置中也没有,但是实际开发过程中会经常使用。比如应用联网就需要ohos.permission.INTERNET。
- AbilityForm 按我的理解就是安卓或者iOS上面的桌面小部件,但是不同的是鸿蒙貌似可以使用在非桌面应用中,没有测试过。
- PageAbility,ServiceAbility,DataAbility这三个概念可以参考这里
- 官方介绍