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這三個概念可以參考這裡
- 官方介紹