天天看點

config.json解析

config.json作用

  1. 規定應用資訊:包名、版本号等
  2. 在此聲明Ability,及其屬性、類型等。
  3. 規定應用支援的裝置,和每種裝置上面的屬性或配置,如可以指定在 tv 裝置中設定 keepAlive=true(跟随系統啟動,僅限系統應用),而在wearable 中則不跟随系統啟動。
  4. 聲明需要的權限、定義自身需要的權限

    等等功能。

簡介

在下面我整理了一些屬性的作用。

有一些是項目建立後就預設有的。還有一些是我自己覺得比較常用的及其可選項,也加在了裡面。

{
  "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模式。
      }
    ]
  }
}
           

稍微解釋一下

  1. vender我測試是每次都選 第一個和第二個 . 中間的字元串,并且 建議 使用com…開頭
  2. version.code和version.name 目前看在系統層面并無卵用,不影響覆寫安裝或者使用。
  3. 權限grantMode 作用不明。
  4. 所有系統權限都可以在 ohos.security.SystemPermission中找到。
  5. reqPermissions雖然不是 required,預設項目配置中也沒有,但是實際開發過程中會經常使用。比如應用聯網就需要ohos.permission.INTERNET。
  6. AbilityForm 按我的了解就是安卓或者iOS上面的桌面小部件,但是不同的是鴻蒙貌似可以使用在非桌面應用中,沒有測試過。
  7. PageAbility,ServiceAbility,DataAbility這三個概念可以參考這裡
  8. 官方介紹