1.3 鸿蒙操作系统开发基础知识
本节详细讲解鸿蒙项目中配置文件config.json中的知识点(如应用的包名、图标配置、abilitie声明等)、HarmonyOS系统的分布式数据管理,以及应用开发完成后的签名发布。
1.3.1 鸿蒙操作系统开发中的配置文件、资源文件
应用的资源文件(如字符串、图片、音频等)统一存放于resources目录下,包括两大类目录,一类为base目录与限定词目录,另一类为rawfile目录,在后续章节中会跟随项目逐步讲解,资源目录示例如下。
一个应用是由一个或多个HAP组成,每个HAP的根目录下都存在一个config.json配置文件,文件内容主要涵盖以下三个方面。
●应用的包名、生产厂商、版本号等基本信息。
●应用在具体设备上的配置信息,包含应用的备份恢复、网络安全等配置信息。
●HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型,以及Ability提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。
配置文件config.json采用JSON文件格式,其中包含了一系列配置项,每个配置项由属性和值两部分构成,DevEco Studio提供了两种编辑config.json文件的方式,在config.json的编辑窗口中,可在右上角切换代码编辑视图或可视化编辑视图,如图1-21所示。
图1-21中config.json文件由app、deviceConfig和module三个部分组成。app部分是配置应用的基本信息;deviceConfig部分是应用在具体设备上的配置信息;module部分是当前HAP包的配置信息。
bundleName表示应用的包名,用于标识应用的唯一性,是由字母、数字、下画线(_)和点(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节,对于原子化服务,其包名必须以“.hmservice”结尾。
vendor是对当前应用的描述,非必须填写;version是配置应用的版本信息,version中的code仅用于HarmonyOS管理该应用,不对应用的终端用户显示,新版本code取值必须大于旧版本code的值,version中的name用于向应用的终端用户显示版本信息。
●图1-21 配置文件预览模式切换
package表示HAP的包结构名称,在应用内应保证唯一性;name对应HAP的类名;mainAbility配置HAP包入口页面的Ability名称。
deviceType表示允许Ability运行的设备类型。系统预定义的设备类型包括:phone(手机)、tablet(平板计算机)、tv(智慧屏)、car(车机)、wearable(智能穿戴)、liteWearable(轻量级智能穿戴)等。
distro表示HAP发布的具体描述,其中deliveryWithInstall的值为true时表示当前HAP支持随应用安装;moduleName表示当前HAP的名称;moduleType表示当前HAP的类型,包括两种类型:entry(主模块)和feature(动态特性模块)。
abilities表示当前模块内的所有Ability,在应用开发中创建使用的Ability必须在此处声明。
launchType表示Ability的启动模式,支持standard、singleMission和singleton三种模式,详细描述如表1-2所示。
表1-2 launchType模式说明
type表示Ability的类型,详细描述如表1-3所示。
表1-3 type模式说明
orientation用来配置Ability的显示模式,该标签仅适用于page类型的Ability,详细描述如表1-4所示。
表1-4 orientation显示模式说明
module中的js标签,表示基于ArkUI框架开发的JS模块集合,其中的每个元素代表一个JS模块的信息,如图1-22所示为第1.2.3小节中创建的实例使用JS语言以低代码方式开发的应用,创建的页面需要在js标签中声明。
●图1-22 JS低代码模式项目配置文件
1.3.2 数据管理的方式与策略
HarmonyOS应用数据管理支持单设备的各种结构化数据的持久化,以及跨设备之间数据的同步、共享和搜索功能。
例如,健康类应用的一些基本数据会暂时保存在设备中,这就需要使用到本地应用数据管理。在HarmonyOS中使用SQLite作为持久化存储引擎,支持关系型数据库(Relational Database)、对象关系映射数据库(Object Relational Mapping Database)和轻量级偏好数据库(Light Weight Preference Database)。
轻量级偏好数据存储适用于对Key-Value结构的数据进行存取和持久化操作;关系型数据库对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要;对象关系映射数据库是一款基于SQLite的数据库框架,屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增、删、改、查等一系列的面向对象接口,应用开发者不必再去编写复杂的SQL语句就可以以操作对象的形式来操作数据库,提升效率的同时也能聚焦于业务开发。
分布式数据服务(Distributed Data Service,DDS)通过结合账号、应用和数据库三元组,在通过可信认证的设备间,为用户提供在多种终端设备上最终一致的数据访问体验,如图1-23所示。
●图1-23 分布式数据服务结构图
分布式文件服务可以为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同账号下同一应用文件的跨设备访问,可以实现应用程序在多个设备之间无缝获取文件。
1.3.3 HarmonyOS应用签名
使用真机设备进行调试,真机设备分为本地物理真机和远程真机,其调试流程完全相同,需要对应用进行签名。原子化服务(Atomic Service)和应用(Application)的签名方式不同。其中,原子化服务签名通过HAG(HUAWEI Ability Gallery)申请签名文件,而应用通过AGC (AppGallery Connect)申请签名文件。
调试应用的签名方式包括如下两种。
1)手动签名方案:通过从AppGallery Connect中申请调试证书和Profile文件后,再进行签名。
2)自动化签名方案:通过DevEco Studio自动化签名的方式对应用进行签名。该方式相比手动签名方案,在调试阶段更加简单和高效,推荐使用。
自动化签名可分以下6步完成。
1)确保DevEco Studio与真机设备已连接,真机连接成功后如图1-24所示。
●图1-24 DevEco Studio设备连接显示说明图
2)在DevEco Studio开发工具中,选择File菜单→Project Structure选项,打开Project Structure窗口,然后单击Project菜单→Signing Configs按钮,打开签名配置界面,单击Sign In按钮进行登录。
3)在AppGallery Connect中创建项目,项目创建完成后,在项目中创建一个应用,如图1-25所示。如果是非实名认证的用户,请单击左侧导航下方的“HAP Provision Profile管理”界面的HarmonyOS应用按钮。
●图1-25 AppGallery Connect中创建应用效果图
如果项目中已有应用,则展开顶部应用列表框,单击“添加应用”按钮,如图1-26所示。
●图1-26 AppGallery Connect中添加应用效果图
4)添加应用时,填写应用的相关信息,选择平台,这里选择App(HarmonyOS应用),应用包名必须与config.json文件中的bundleName取值保持一致,应用包名在AppGallery Connect上必须保持唯一,不能与其他应用包名(包含所有用户的包名)冲突。
5)返回DevEco Studio的自动签名界面,单击Try Again按钮即可自动进行签名。自动生成的签名所需的密钥(.p12)、数字证书(.cer)和Profile文件(.p7b)会存放到用户user目录下的.ohos\config目录下。
6)签名信息设置完成后,单击OK按钮进行保存,然后可以在工程下的build.gradle中查看签名的配置信息。