app对象内部结构

app对象包含应用全局配置信息,内部结构如下:

表1 app对象内部结构说明

属性名称 含义 数据类型 是否可缺省
bundleName 标识应用的Bundle名称,用于标识应用的唯一性。Bundle名称是由字母、数字、下划线(_)和点号(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节。Bundle名称通常采用反向域名形式表示(例如,“com.example.myapplication”)。建议第一级为域名后缀"com",第二级为厂商/个人名,也可以采用多级。 字符串 不可缺省。
vendor 标识对应用开发厂商的描述。字符串长度不超过255字节。 字符串 可缺省,缺省值为空。
version 标识应用的版本信息。 对象 不可缺省。
apiVersion 标识应用程序所依赖的HarmonyOS API版本。 对象 可缺省,缺省值为空。
smartWindowSize 标识应用在模拟器中运行时使用的屏幕尺寸。 字符串 可缺省,缺省值为空。
smartWindowDeviceType 标识应用在模拟器中运行时可以模拟的设备。 字符串数组 可缺省,缺省值为空。

version对象内部结构

表2 version对象内部结构说明

属性名称 含义 数据类型 是否可缺省
name 标识应用的版本号,用于向应用的终端用户呈现。取值可以自定义,长度不超过127字节。自定义规则如下:API5及更早的版本:推荐使用三段数字版本号(也兼容两段式版本号),如A.B.C(也兼容A.B),其中A、B、C取值为0-999范围内的整数。除此之外不支持其他格式。A段,一般表示主版本号(Major)。B段,一般表示次版本号(Minor)。C段,一般表示修订版本号(Patch)。API6版本起:推荐采用四段式数字版本号,如A.B.C.D,其中A、B、C取值为0-99范围内的整数,D的取值为0-999范围内的整数。A段,一般表示主版本号(Major)。B段,一般表示次版本号(Minor)。C段,一般表示特性版本号(Feature)。D段,一般表示修订版本号(Patch)。 数值 不可缺省。
code 标识应用的版本号,仅用于HarmonyOS管理该应用,不对应用的终端用户呈现。取值规则如下:API5及更早版本:二进制32位以内的非负整数,需要从version.name的值转换得到。转换规则为:code值=A * 1,000,000 + B * 1,000 + C例如,version.name字段取值为2.2.1,则code值为2002001。API6版本起:code的取值不与version.name字段的取值关联,开发者可自定义code取值,取值范围为2^31以内的非负整数,但是每次应用版本的更新,均需要更新code字段的值,新版本code取值必须大于旧版本code的值。 数值 不可缺省。
minCompatibleVersionCode 标识应用可兼容的最低版本号,用于跨设备场景下,判断其他设备上该应用的版本是否兼容。格式与version.code字段的格式要求相同。说明当前版本暂不支持跨设备能力。 数值 可缺省,缺省值为code标签值。

apiVersion内部结构

表3 apiVersion内部结构说明

属性名称 含义 数据类型 是否可缺省
compatible 运行应用所需要的最低API版本,取值范围为0~2147483647。 数值 配置在build.profile中,打包时由IDE填充到config.json中。
target 用于标识应用运行时使用的API版本,取值范围为0~2147483647。 数值 配置在build.profile中,打包时由IDE填充到config.json中。
releaseType 用于标识应用运行时SDK的状态。canary:面向特定开发者早期预览版本,不承诺质量,不承诺API稳定。beta:公开发布的Beta版本,早期Beta版本不承诺API稳定,经历若干次发布后,通过Release Notes对开发者声明该Beta版本为API稳定里程碑,后续版本的API冻结。release:正式发布版本,承诺质量,API不可变更。当版本处于此状态时版本号中不呈现Stage字段。 字符串 配置在build.profile中,打包时由IDE填充到config.json中。

app对象示例

"app": {    "bundleName": "com.example.myapplication",    "vendor": "example",    "version": {      "code": 8,      "name": "8.0.1"    },    "apiVersion": {      "compatible": 8,      "target": 9,      "releaseType": "Beta1"    }  }

deviceConfig内部结构

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

deviceConfig对象内部结构

表1 deviceConfig对象内部结构说明

属性名称 含义 数据类型 是否可缺省
default 能够使用全部系统能力的HarmonyOS设备。 对象 可缺省,缺省值为空。
tablet 标识平板特有的应用配置信息。 对象 可缺省,缺省值为空。
tv 标识智慧屏特有的应用配置信息。 对象 可缺省,缺省值为空。
car 标识车机特有的应用配置信息。 对象 可缺省,缺省值为空。
wearable 标识智能穿戴特有的应用配置信息。 对象 可缺省,缺省值为空。

上表中各类设备对象的内部结构说明请见表2。

deviceConfig设备对象内部结构

表2 deviceConfig设备对象内部结构说明

属性名称 含义 数据类型 是否可缺省
process 标识应用或者Ability的进程名。如果在deviceConfig标签下配置了process标签,则该应用的所有Ability都运行在这个进程中。如果在abilities标签下也为某个Ability配置了process标签,则该Ability就运行在这个进程中。该标签最大长度为31。 字符串 可缺省,缺省值为空。
keepAlive 标识应用是否始终保持运行状态,仅支持系统应用配置,三方应用配置不生效。该标签为布尔类型,可缺省,缺省值为false,如果配置为true,应用将始终保持为运行状态,并在系统启动的时候被系统驱动起来,应用进程退出后,系统也会重新启动应用进程。 布尔值 可缺省,缺省值为false。
supportBackup 标识应用是否支持备份和恢复。如果配置为"false",则不支持为该应用执行备份或恢复操作。 布尔值 可缺省,缺省值为false。
compressNativeLibs 标识libs库是否以压缩存储的方式打包到HAP。如果配置为"false",则libs库以不压缩的方式存储,HAP在安装时无需解压libs,运行时会直接从HAP内加载libs库。 布尔值 可缺省,缺省值为true。
network 标识网络安全性配置。该标签允许应用通过配置文件的安全声明来自定义其网络安全,无需修改应用代码。 对象 可缺省,缺省值为空。

network对象的内部结构

表3 network对象的内部结构说明

属性名称 含义 数据类型 是否可缺省
cleartextTraffic 标识是否允许应用使用明文网络流量(例如,明文HTTP)。true:允许应用使用明文流量的请求。false:拒绝应用使用明文流量的请求。 布尔值 可缺省,缺省值为false。
securityConfig 标识应用的网络安全配置信息。 对象 可缺省,缺省为空。

securityConfig对象的内部结构

表4 securityConfig对象的内部结构说明

属性名称 含义 数据类型 是否可缺省
domainSettings 标识自定义的网域范围的安全配置,支持多层嵌套,即一个domainSettings对象中允许嵌套更小网域范围的domainSettings对象。 对象类型 可缺省,缺省为空。

domainSettings对象内部结构

表5 domainSettings对象内部结构说明

属性名称 含义 数据类型 是否可缺省
cleartextPermitted 标识自定义的网域范围内是否允许明文流量传输。当cleartextTraffic和security同时存在时,自定义网域是否允许明文流量传输以cleartextPermitted的取值为准。true:允许明文流量传输。false:拒绝明文流量传输。 布尔类型 可缺省,缺省值为空。
domains 标识域名配置信息,包含两个参数:subdomains和name。subdomains(布尔类型):表示是否包含子域名。如果为"true",此网域规则将与相应网域及所有子网域(包括子网域的子网域)匹配。否则,该规则仅适用于精确匹配项。name(字符串):表示域名名称。 对象数组 可缺省,缺省值为空。

deviceConfig示例

"deviceConfig": {  "default": {    "process": "com.example.test.example",    "supportBackup": false,    "network": {      "cleartextTraffic": true,      "securityConfig": {        "domainSettings": {          "cleartextPermitted": true,          "domains": [            {              "subdomains": true,              "name": "example.ohos.com"            }          ]        }      }    }  }}

最后

这里整理了一份《鸿蒙零基础入门学习指南》,希望能对那些想要学习鸿蒙,但是有没有方向的人提供一点帮助。本文档适用于HarmonyOS应用开发的初学者(由于文档内容过多,因此为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的看文末有免费的获取方式!)

《鸿蒙零基础入门学习指南》

目录

在这里插入图片描述

一、快速入门

适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。

  • 开发准备
    • 基本概念
    • 工具准备
  • 构建第一个ArkTS应用(Stage模型)
  • 构建第一个ArkTS应用(FA模型)
  • 构建第一个JS应用(FA模型)

在这里插入图片描述

二、开发基础知识

  • 应用程序包基础知识
    • 应用程序包概述
    • 应用程序包结构
    • 应用程序包多HAP机制
    • 应用程序包安装和卸载流程
    • 应用程序包更新流程
    • 共享包
    • 应用程序包快速修复
  • 应用配置文件(Stage模型)
    • 应用配置文件概述(Stage模型)
    • app.json5配置文件
    • module.json5配置文件
  • 应用配置文件概述(FA模型)
    • 应用配置文件概述(FA模型)
    • app对象内部结构
    • deviceConfig内部结构
    • module对象内部结构

在这里插入图片描述

三、资源分类与访问

应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。

  • 资源分类与访问
    • 资源分类
    • 资源目录
    • 资源组目录
  • 创建资源目录和资源文件
    • 创建资源目录和资源文件
    • 创建资源目录
    • 创建资源文件
  • 资源访问
    • 应用资源
    • 系统资源
    • 资源匹配
      在这里插入图片描述

四、学习ArkTs语言

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,建议开发者具备TS语言开发能力。

  • 初识ArkTS语言
  • 基本语法
    • 基本语法概述
    • 声明式UI描述
    • 自定义组件
  • 状态管理
  • 其他状态管理
    • 其他状态管理概述
    • @Watch装饰器:状态变量更改通知
    • $$语法:内置组件双向同步
  • 渲染控制
    • 渲染控制概述
    • if/else:条件渲染
    • ForEach:循环渲染
    • LazyForEach:数据懒加载

在这里插入图片描述

扫描下方二维码免费领取,《鸿蒙5.0零基础入门学习指南》

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐