鸿蒙config.json详解【鸿蒙开发06】

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 上一节我在webview的实现中,用到了几个文件夹,这是单独拎出来,做一个介绍,这样的好处就是可以使你更加容易理解一个应用的开发流程。

上一节我在webview的实现中,用到了几个文件夹,这是单独拎出来,做一个介绍,这样的好处就是可以使你更加容易理解一个应用的开发流程。

第一个就是config.json

配置文件“config.json”采用JSON文件格式,其中包含了一系列配置项,每个配置项由属性和值两部分构成:

属性出现顺序不分先后,但是每个属性最多只允许出现一次。

每个属性的值为JSON的基本数据类型(数值、字符串、布尔值、数组、对象或者null类型)

那我我们来看一下他的这个文件里都包含那些内容,按照我学习小程序的经验,小程序里有app.json文件,我们就结合小程序来看看他的这里面的东西

小程序启动之后首先就是解析app.json,其实鸿蒙也一样,应用启动之后,先解析config.json文件。

config.json分为三个部分:app 、deviceConfig 、module

也可以通过这个截图查看,我这里展示的三块是缩放后的内容,也是为了方便观察。

网络异常,图片无法展示
|

  • app是整个项目的配置,包含了厂商信息、版本号等。
  • deviceConfig:表示应用在设备上的配置信息。
  • module:表示整个代码的配置信息。

接下来就详细了解一下

1.app

"app": {
   "package": "com.example.harmonyosdemo",   //新建项目时指定的PackageName,而且IDE建议以 com.开头
   "name": ".MyApplication",
   "mainAbility": "com.example.harmonyosdemo.MainAbility",                 //根据新建项目时指定的PackageName 的第一个 . 之后的字符串
    "version": {                        //版本
      "code": 1,                        //版本号,目前测试看,系统并不会阻止降级安装。
      "name": "1.0"                     //版本名
    },
    "apiVersion": {                     //依赖的鸿蒙SDK版本
      "compatible": 3,                  //兼容版本
      "target": 3                       //编译版本
    }
  },
复制代码
  1. bundleName包名,你创建时候的
  2. vendor,是应用开发厂商的描述,也就是开发公司的名字。我这是这是一个demo,所以是example,后面正式开发的时候记得修改。
  3. version:版本号,包含:name、code。通常通过检查code,进行版本升级。

2.deviceConfig解析

deviceConfig:应用在设备上配置信息,进程名等等,可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等属性。default标签内的配置是适用于所有设备通用,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。

比如我这里设置的是为了能在http下也可以请求成功,鸿蒙的默认是https访问模式,如果您的请求网址是http开头的,请在config.json文件中的deviceConfig下,添加如下设置

"deviceConfig": {
  "default": {
    "network": {
      "cleartextTraffic": true
    }
  }
},
复制代码

3.module解析

"module": {                           //模块列表,有三个必填的属性 : package,deviceType,distro
    "package": "com.example.harmonyosdemo",      //模块的包名
    "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.example.harmonyosdemo.DataAbilityShellProvider.PROVIDER",   //权限名称
      "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模式。
      }
    ]
  }
}
复制代码

参考表来自于

  • package 包名
  • name是hap包的名字,至于什么是HAP,我在后面介绍
  • mainAbility表示HAP包的入口ability名称,可自定义,这样你后期调试也会简单
  • deviceType表示项目可以在哪些设备上运行。 因为可能有多个设备,所以有个方括号,表示这些值可以写到一个数组中。如下,你能看懂是那些设备吧,其实这些你应该在创建项目的时候就观察到。
"deviceType": [
      "phone",
      "tablet",
      "tv",
      "wearable",
      "car"
    ],
复制代码
  • distro表示HAP包的描述信息
  • deliveryWithInstall 当前hap包是否可以支持随应用安装。一般都写成true。
  • moduleName:当前HAP的名称
  • moduleType:表示当前HAP的类型。entry也表示当前的hap是一个主要的模块,可以单独安装并运行
  • abilities:代码中每一个页面的配置信息。

HarmonyOS的DevEco Studio支持两种编辑config.json的方式,分别是代码编辑视图和可视化编辑视图。

1.代码视图

{
  "app": {
    "bundleName": "com.example.harmonyosdemo",
    "vendor": "example",
    "version": {
      "code": 1000000,
      "name": "1.0.0"
    }
  },
  "deviceConfig": {
    "default": {
      "network": {
        "cleartextTraffic": true
      }
    }
  },
  "module": {
    "package": "com.example.harmonyosdemo",
    "name": ".MyApplication",
    "mainAbility": "com.example.harmonyosdemo.MainAbility",
    "deviceType": [
      "phone",
      "tablet",
      "tv",
      "wearable",
      "car"
    ],
    "distro": {
      "deliveryWithInstall": true,
      "moduleName": "entry",
      "moduleType": "entry",
      "installationFree": false
    },
    "abilities": [
      {
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ],
        "orientation": "unspecified",
        "visible": true,
        "name": "com.example.harmonyosdemo.MainAbility",
        "icon": "$media:icon",
        "description": "$string:mainability_description",
        "label": "$string:entry_MainAbility",
        "type": "page",
        "launchType": "standard"
      },
      {
        "name": "com.example.harmonyosdemo.DataAbility",
        "icon": "$media:icon",
        "description": "$string:dataability_description",
        "type": "data",
        "uri": "dataability://com.example.harmonyosdemo.DataAbility"
      }
    ],
    "defPermissions": [
      {
        "name": "com.example.harmonyosdemo.DataAbilityShellProvider.PROVIDER"
      }
    ],
    "reqPermissions": [
      {
        "reason": "",
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}
复制代码

2. 编辑视图

网络异常,图片无法展示
|

总结:

这里了解了config.json的三个部分,app 、deviceConfig 、module,以及他的两种编辑方式,大家可以按照自己的需求实现自己想要的。

参考文档:应用配置介绍



相关文章
|
14天前
|
Android开发
鸿蒙开发:自定义一个简单的标题栏
本身就是一个很简单的标题栏组件,没有什么过多的技术含量,有一点需要注意,当使用沉浸式的时候,注意标题栏的位置,需要避让状态栏。
鸿蒙开发:自定义一个简单的标题栏
|
14天前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
鸿蒙开发:切换至基于rcp的网络请求
|
20天前
|
监控 开发者
鸿蒙5.0版开发:使用HiLog打印日志(ArkTS)
在HarmonyOS 5.0中,HiLog是系统提供的日志系统,支持DEBUG、INFO、WARN、ERROR、FATAL五种日志级别。本文介绍如何在ArkTS中使用HiLog打印日志,并提供示例代码。通过合理使用HiLog,开发者可以更好地调试和监控应用。
65 16
|
20天前
|
监控 UED 开发者
鸿蒙next版开发:订阅应用事件(ArkTS)
在HarmonyOS 5.0中,ArkTS引入了强大的应用事件订阅机制,允许开发者订阅和处理系统或应用级别的事件,这对于监控应用行为、优化用户体验和进行性能分析至关重要。本文详细介绍了如何在ArkTS中订阅应用事件,并提供了示例代码,包括导入模块、创建观察者、设置事件参数等步骤。通过这些方法,开发者可以更智能地管理和响应应用事件。
73 11
|
19天前
|
UED
鸿蒙next版开发:相机开发-适配不同折叠状态的摄像头变更(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的相机开发能力,特别是针对折叠屏设备的摄像头适配。本文详细介绍了如何在ArkTS中检测和适配不同折叠状态下的摄像头变更,确保相机应用在不同设备状态下的稳定性和用户体验。通过代码示例展示了具体的实现步骤。
54 8
|
19天前
|
API 内存技术
鸿蒙next版开发:相机开发-拍照(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机功能,特别是拍照功能。本文详细介绍如何在ArkTS中实现拍照功能,包括导入接口、创建会话、配置会话、触发拍照及监听拍照输出流状态,并提供代码示例进行详细解读。通过本文,你将掌握如何在HarmonyOS 5.0中使用ArkTS实现高效的拍照功能。
42 7
|
19天前
|
监控 开发者
鸿蒙next版开发:使用HiDebug获取调试信息(ArkTS)
在HarmonyOS 5.0中,HiDebug是一个强大的应用调试工具,可帮助开发者获取系统的CPU使用率、内存信息等关键性能数据。本文详细介绍了如何在ArkTS中使用HiDebug,并提供了示例代码,帮助开发者进行性能分析和问题诊断。
43 7
|
20天前
|
开发者 容器
鸿蒙next版开发:ArkTS组件通用属性(文本通用)
在HarmonyOS 5.0中,ArkTS提供了丰富的文本通用属性,如textAlign、maxLines、textOverflow、fontSize、fontColor、fontStyle、fontWeight、fontFamily、lineHeight、letterSpacing和decoration等,用于实现多样的文本显示和样式效果。本文详细解读了这些属性,并提供了示例代码,帮助开发者更好地利用这些工具,提升应用界面的美观和实用性。
54 8
|
19天前
|
前端开发 API
鸿蒙next版开发:相机开发-预览(ArkTS)
在HarmonyOS 5.0中,使用ArkTS进行相机预览是核心功能之一。本文详细介绍了如何使用ArkTS实现相机预览,包括导入相机接口、创建Surface、获取相机输出能力、创建会话并开始预览,以及监听预览输出状态等步骤,并提供了代码示例。通过本文,读者可以掌握在HarmonyOS 5.0中使用ArkTS进行相机预览的基本方法。
43 6
|
19天前
|
编解码 开发工具 计算机视觉
鸿蒙5.0版开发:命令行工具(mediatool工具)
在HarmonyOS 5.0的开发中,命令行工具mediatool基于FFmpeg库,提供了丰富的媒体处理功能,如视频和音频的转码、封装格式转换、提取媒体信息等。本文详细介绍mediatool的功能和使用方法,并提供代码示例。
41 6

热门文章

最新文章