第一章 HarmonyOS概述

本章介绍HarmonyOS产生的历史背景,特点及开发环境的搭建,并演示如何通过 DevEco Studio来初始化HarmonyOS项目结构。

1.1 HarmonyOS概述

2022年11月4日,华为开发者打回2022正式在华为东莞松山湖基地拉开帷幕,华为如期为消费者带来了众多软件创新,其中最受期待的莫过于华为HarmonyOS3.1开发者尝鲜版本的面市。

那么到底什么是HarmonyOS?为什么需要HarmonyOS?

1.1.1 什么是HarmonyOS

HarmonyOS在2019年8月9日华为开发者大会上首次公开亮相,时任华为消费者业务CEO的余承东进行了关于HarmonyOS的主题演讲。

HarmonyOS也成为鸿蒙系统,或者鸿蒙OS,是一款面向万物互联时代的,全新的分布式操作系统。

在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力,适配多种终端形态的分布式理念,能够支持收集,平板,智能穿戴,智慧屏,车机,PC,智能音箱,耳机,AR/VR眼镜等多种终端设备,提供全场景(移动办公,运动健康,社交通信,媒体娱乐等)业务能力。

举例来说,当用户走进厨房,用HarmonyOS手机一碰微波炉,就能实现设备急速联网;用HarmonyOS手机一碰豆浆机,就能快速实现无屏变有屏。

自HarmonyOS诞生以来,经过3年多的发展,终于迎来了HarmonyOS3。HarmonyOS3也带来了更多惊喜,全新退出应用开发Stage模型,并在ArkTS语言,应用程序框架,Web,ArkUI等子系统能力方面有所更新和增强。

1.1.2 HarmonyOS应用开发

为了进一步扩大HarmonyOS的生态圈,面对广大的硬件设备厂商,鸿蒙通过 SDK 源代码开发板模组。和华为开发软件等装备共同构成了完备的开发平台与工具链,让鸿蒙设备开发易如反掌。

应用创新是一款操作系统发展的关键,应用开发体验更是如此,在一条完整的应用开发生态链中,应用框架、编译器、IDE、API/SDK 都是必不可少的。赋能开发者,鸿蒙提供了一系列构建全场景应用的完整平台工具链以生态链。可以助力开发者,让应用能力可以可分可合、可流转,轻松构筑全场景创新体验。

本书就是介绍如何针对鸿蒙 OS 进行应用的开发,可以预见的是,鸿蒙必将是进行年的热门话题,对于能在早期投身于鸿蒙开发的技术人员而言,其意义不亚于当年早期安卓的开发,鸿蒙必将带给开发者广阔的前景,同时基于鸿蒙 OS 所提供的完善的平台工具链与生态体系。相信广大读者一定能轻松入门鸿蒙 OS。

5G 网络准备就绪,物联网产业链也已经渐趋成熟。在物联网即将爆发的前夜,需一套专为物联网准备的操作系统,华为的鸿蒙 OS 阵风,其实 Windows 成就了微软,安卓成就了谷歌,鸿蒙 OS 是否能成为华为,那我们拭目以待。

1.2 HarmonyOS的特征

1.2.1 硬件互助,资源共享

鸿蒙 OS 把各终端硬件的能力虚拟成可共享的能力资源池,让应用通过系统调用其所需的硬件能力。在这个构架下,硬件能力类似于活字印刷术中的一个个单字字母可以被无限次重复使用。简单来说,各终端实现了硬件互助、资源共享,应用拥有了调用远程终端的能力,向调用本地终端一样方便,而用户收获一个多设备组成的超级终端。

那么是如何实现硬件互助资源共享的?主要是基于以下几个方面实现的。

(1)分布式软总线

分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备高效的分发任务和传输数据。分布式软总线示意图如图所示。

简而言之,分布式软总线提供了多设备连接能力。

(2)分布式设备虚拟化

分布式设备虚拟化平台可以实现不同设备的资源融合。设备管理、数据处理,多种设备共同形成一个超级虚拟终端,针对不同类型的任务为用户匹配并选择能力合适的执行硬件,让业务连续的在不同设备间流转,充分发挥不同设备的资源优势。分布式设备虚拟化示意图如图所示。

举一个无人机的例子,传统的无人机分享视频的步骤如下,

1、拍摄无人机的画面。

2、将无人机拍摄的视频保存下来。

3、通过通信软件分享视频。

而在分布式设备虚拟化后,无人机可以被当做是手机的一个摄像头,在视频通话软件中,可以直接使用无人机的摄像头进行实时分享。

(3)分布式数据管理

分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件。分布式数据管理示意图

在全场景新时代,每个人拥有的设备越来越多,单一设备的数据往往无法满足用户的诉求,数据在设备间的流转变得越来越频繁,以一组照片数据在手机、平板电脑、智慧屏和计算机之间相互浏览和编辑为例,需要考虑到照片数据在多设备间是怎么存储、怎么共享和怎么访问的。鸿蒙 OS 分布式数据管理的目标是为开发者在系统层面解决这些问题,让应用开发变得简单,它能够保证多设备间的数据安全,解决多设备间数据同步、跨设备查找和访问的各种关键技术问题。

鸿蒙 OS 分布式数据管理,对开发者提供分布式数据库、分布式文件系统和分布式检索能力。开发者在多设备上开发应用时,对数据的操作共享检索可以跟使用本地数据一样处理,为开发者提供便捷、高效和安全的数据管理能力,大大降低了应用开发者实现数据分布式访问的门槛。同时,由于在系统层面实现了这样的功能,可以结合系统资源调度,大大提升跨设备数据远程访问和检索的性能,让更多的开发者可以快速上手,实现流畅的分布式应用。

(4)分布式任务调度

分布式任务调度基于分布式软总线、分布式数据管理、分布式 Profile 等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设 备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。

在传统的终端设备上做跨设备的应用访问时,需要应用自己完成服务,发现连接、命令监听、命令解析等一系列的工作,无论是应用开发者自己开发,还是使用第三方库,都让应用开发过程变得沉重。分布式任务调用就是在系统层面为应用提供通用的分布式服务,让应用开发可以聚焦在业务实现上。鸿蒙 OS 在分布式任务调度上充分考虑了应用开发者的使用便利性。提供了应用信息自动同步的能力。通过。查询远程 ability接口。既可以指定 ability。查询设备列表,又可以指定设备标识查询 ability 列表,开发者可以根据实际场景灵活使用,在 API 形式上保持了和本地使用基本一致,增加了远程设备标识的参数,这让开发者使用起来完全没有障碍,开发者生态十分友好。举例来说,在手机和手表间进行,应用间协同在游乐场游玩的场景,用户可以全程不使用手机,解决了在游乐场游玩过程中手机容易丢失、损坏的痛点,非常好的提升了用户体验。

(5)分布式连接能力

分布式连接能力提供了智能终端底层和应用层的连接能力,通过 USB 接口共享终端部分的硬件资源和软件能力。开发者基于分布式连接能力可以开发相应形态的生态产品和消费者,提供更丰富的连接体验。

1.2.2 一次开发,多端部署

HarmonyOS 提供了用户程序框架、 Ability 框架以及 UI 框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。

1.2.3 统一OS,弹性部署

HarmonyOS 通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。支撑通过编译链关系去自动生成组件化的依赖关系,形成组件树依赖图,支撑产品系统的便捷开发,降低硬件设备的开发门槛。

支持各组件的选择(组件可有可无) :根据硬件的形态和需求,可以选择所需的组件。

支持组件内功能集的配置(组件可大可小) :根据硬件的资源情况和功能需求,可以选择配置组件中的功能集。例如,选择配置图形框架组件中的部分控件。

支持组件间依赖的关联(平台可大可小) :根据编译链关系,可以自动生成组件化的依赖关系。例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。

1.3 HarmonyOS 3的新特性

HarmonyOS 3.1 全新退出了应用开发Stage模型,并在ArkTS语言,应用程序框架,Web,ArkTS等子系统能力方面有所更新或增强。

1.3.1 Ability组件的生命周期

Ability生命周期切换以及和AbilityStage,WindowStage之间的调度。

Stage模型定义了Ability组件的生命周期,只包含创建,销毁,前后台等状态,而将与界面强相关的获焦,失焦状态都放在WindowStage中,从而实现Ability与窗口之间的弱耦合;在服务侧,窗口管理服务依赖于组件管理服务,前者通知后者前后台变化,这样组件管理服务仅感知前后台变化,不感知焦点变化。

需要注意的是,在Ability中存在两个于WindowStage相关的生命周期状态,分别是onWindowStageCreate和onWindowStageDestroy,这两个生命周期状态的变化仅存在于具有显示能力的设备中。前者表示WindowStage已经创建完成,开发者可以通过执行loadContent的操作设置Ability需要加载的页面;后者在WindowStage销毁后调用,以便开发者对资源进行释放。

1.3.2 ArkTS开发框架

基于ArkTS的声明式开发凡是的方舟开发框架(ArkUI)是一套开发极简,高性能,跨设备应用的UI开发框架,支持开发者高效的构建跨设备应用UI界面。

1.3.3 ArkTS编程语言

HarmonyOS 提供了支持多种开发语言的API,供开发者进行应用开发,支持的开发语言包括ArkTS,JS,C/C++,Java。

ArkTS是HarmonyOS 优选的主力应用开发语言。ArkTS基于TypeScript(简称TS)语言扩展而来,是TS的超集。这也是ArkTS的原名叫eTS的原因,它是extend TypeScript的简写。

ArkTS继承了TS的所有特性,并且ArkTS在TS基础上还扩展了声明式UI能力,让开发者以更简洁、更自然的方式开发高性能应用。

1.3.4 ExtensionAbility机制

不同于页面展示的Ability,ExtensionAbility提供的是一种受限的运行环境。

ExtensionAbility组件具有如下特点:

  • 运行在独立于主进程的单独进程中,与主进程无IPC(Inter-Process Communication,进程间通信),但共享一个存储沙箱。

  • 独立的Context提供基于相应业务场景的API能力。

  • 由系统触发创建,应用不能直接创建。

  • ExtensionAbility和进程的生命周期受系统管理。

1.4 DevEco Studio的安装

要想快速体验HarmonyOS应用开发,IDE必不可少,而DevEco Studio是华为官方指定的HarmonyOS集成开发环境。本节介绍DevEco Studio的安装步骤。

1.4.1 下载DevEco Studio

目前,HarmonyOS专属IDE的新版本为DevEco Studio 3.1 Release,可以从HarmonyOS官方网站免费下载使用。 ​ DevEco Studio支持Windows(64-bit)、Mac(Intel)两个操作系统。 ​ 以Windows(64-bit) 操作系统为例,下载获得devecostudio-windows-3.1.0.500.zip压缩包。解压该压缩包,就能得到一个deveco-studio-3.1.0.500.exe安装文件。 HarmonyOS3.1/4.0及以下-鸿蒙3.1/4.0开发-华为开发者联盟

1.4.2 安装DevEco Studio

双击deveco-studio-3.1.0.500.exe文件执行安装。DevEco Studio支持Windows(64-bit)、Mac(Intel)两个操作系统。

点击next进入下一步,更改安装的盘符,建议不安装在C盘,后期SDK以及模拟器需要大量的内存,避免C盘内存不够,导致运行不了。

点击next进入下一步,勾选上桌面创建图标,以及将启动路径添加至环境变量中。

再点击next,进入安装界面

正在安装……

安装完成,不需要更改,直接点击完成按钮即可。

这时候桌面上会出现启动图标。

1.4.3 配置DevEco Studio

双击DevEco Studio桌面上的快捷方式以启动DevEco Studio。并同意使用开发软件协议。

是否导入本地已存在的配置,我们是第一次安装,并不存在以前的配置信息,选择不需要导入配置。

HarmonyOS 3需要手动选择下载和安装node.js和Ohpm插件,这里我们选择下载以及下载在指定的文件路径下。

接下来配置SDK的下载指定文件夹路径

接下来同意下载HarmonyOS的SDK以及开源鸿蒙的SDK

等待在线下载和集成安装所有需要的插件即可

安装完成后,可以开发我们的项目了。

1.5 创建第一个HarmonyOS应用

本节将演示如何基于DevEco Studio开发第一个HarmonyOS应用。

1.5.1 选择创建新项目

后续如果在已打开项目的状态下,也可以从DevEco Studio菜单选择File--New--Create Project。

1.5.2 选择模板

这里给我们提供了搭载在各种终端设备上的应用模板,这里我们选择没有任何功能的应用。

1.5.3 配置项目信息

配置项目信息,比如项目名称、包名、位置、SDK版本等

1.5.4 自动生成工程代码

在上述工程代码初始化完成之后,就能在该程序的基础上进行代码开发和运行了。

1.5.5 预览项目

可以使用预览器来预览项目。打开预览器有以下两种方式:

  • 通过菜单栏,单击View--Tool Windows--Previewer打开预览器

  • 在编辑窗口右上角的侧边工具栏单击Previewer打开预览器

1.5.6 运行项目

HarmonyOS支持本地模拟器,远程模拟器,本地真机,远程真机等多种方式来运行项目。上述方式各有利弊,比如本地模拟器不需要华为开发者联盟账号登录使用,但所支持的API版本不是很高,而且需要下载本地模拟器占用内存较大;远程模拟器可以支持新的API版本,但需要通过华为开发者联盟账号登录,使用一次就要登录一次,在使用过程中也有市场的限制;本地真机需要读者自己专本具有HarmonyOS系统的手机;远程真机也需要使用华为开发者联盟账号,是部署在云端的真机设备资源,但使用过程中需要给应用签名,同时还需要登录AppGallery Connect创建项目和应用,因此过程上相对繁琐。运行的方式大家可以自行选择。

打开View--Device Manager进入设备管理界面。在这个界面选择Remote Emulater进入远程模拟器。

本地模拟器需要下载,电脑运行性能内存还可以的可以下载安装本地模拟器,运行比较方便。远程模拟器需要登录华为账号才能使用。  

这里我是通过下载本地模拟器的方式运行项目代码。

1.6 应用工程结构介绍

1.6.1 工程级目录

详细说明如下:

  • AppScope中存放应用全局所需要的资源文件。

  • entry是应用的主模块,存放HarmonyOS应用的代码,资源等。

  • node_modules是工程的依赖包,存放工程依赖的源文件。

  • build-profile.json5是工程级配置信息,包括签名,产品配置等。

  • hvigorfile.ts是工程级编译构建任务脚本,Hvigor是基于任务管理机制实现的一款全新的自动化构建工程,主要提供任务注册编排,工程模型管理,配置管理等核心能力。

  • package.json是工程级依赖配置文件,用于记录引入包的配置信息。

在AppScope中还有resources文件夹和配置文件app.json5。

在AppScope中还有resources文件夹下的base中包含element和media两个文件夹,其中element文件夹主要存放公共的字符串,布局文件等资源;emdia文件夹存放全局公公共的多媒体资源文件。

1.6.2 entry模块级目录

entry下的src目录中主要包含总的main文件夹,单元测试目录ohosTest以及模块级的配置文件。

  • 在main文件夹中,额头上文件夹用于存放额头上代码,resources文件夹用于存放模块内的多媒体及布局文件等。module.json5文件为模块的配置文件。

  • ohosTest是单元测试目录。

  • build-profile.json5是模块级配置信息,包括编译构建配置项。

  • hvigorfile.ts文件时模块级构建脚本。

  • oh-package.json5是模块级依赖配置信息文件。

进入src--main--ets目录,其分为entryability和pages两个文件夹,entryability存放Ability文件,用于当前Ability应用逻辑和生命周期管理;Pages存放UI姐买你相关代码文件,初始会产生一个Index页面。

resources目录下存放模块公共的多媒体,字符串及布局文件等资源,分别存放在element,media文件夹中。

1.6.3 配置文件

1.app.json5

AppScope下的app.json5是应用的全局配置文件,用于存放应用公共的配置信息。

{
  "app": {
    "bundleName": "com.example.day0125_v3",
    "vendor": "example",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name"
  }
}

其中配置信息如下:

  • bundleName是包名。

  • vendor是应用程序供应商。

  • versionCode用于区分应用的版本。

  • versionName是版本号。

  • icon是应用的显示图标。

  • label是应用名。

2.module.json5

依次打开entry--src--main文件夹,其下的module.json5是模块的配置文件,包含当前模块的配置信息。

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

其具体属性机器描述如下:

属性名称含义数据类型是否可缺省
name标识当前Module的名称,确保该名称在整个应用中唯一。命名规则如下 :- 由字母、数字和下划线组成,且必须以字母开头。- 最大长度31字节。应用升级时允许修改该名称,但需要应用适配Module相关数据目录的迁移,详见文件管理接口。字符串该标签不可缺省。
type标识当前Module的类型。支持的取值如下:- entry:应用的主模块。- feature:应用的动态特性模块。- har:静态共享包模块。- shared:动态共享包模块。字符串该标签不可缺省。
srcEntry标识当前Module所对应的代码路径,取值为长度不超过127字节的字符串。字符串该标签可缺省,缺省值为空。
description标识当前Module的描述信息,取值为长度不超过255字节的字符串,可以采用字符串资源索引格式。字符串该标签可缺省,缺省值为空。
mainElement标识当前Module的入口UIAbility名称或者ExtensionAbility名称,取值为长度不超过255字节的字符串。字符串该标签可缺省,缺省值为空。
deviceTypes标识当前Module可以运行在哪类设备上。说明:当存在多个模块时,各模块中的配置可以不一致,但必须包含所需的设备类型以确保正常运行。字符串数组该标签不可缺省。
deliveryWithInstall标识当前Module是否在用户主动安装的时候安装,即该Module对应的HAP是否跟随应用一起安装。- true:主动安装时安装。- false:主动安装时不安装。布尔值该标签不可缺省。
installationFree标识当前Module是否支持免安装特性。- true:表示支持免安装特性,且符合免安装约束。- false:表示不支持免安装特性。说明:当bundleType]为元服务时,该字段需要配置为true。反之,该字段需要配置为false。布尔值该标签不可缺省。
virtualMachine标识当前Module运行的目标虚拟机类型,供云端分发使用,如应用市场和分发中心。如果目标虚拟机类型为ArkTS引擎,则其值为“ark+版本号”。字符串该标签由IDE构建HAP的时候自动插入。
pages标识当前Module的profile资源,用于列举每个页面信息,取值为长度不超过255字节的字符串。字符串在有UIAbility的场景下,该标签不可缺省。
metadata标识当前Module的自定义元信息,可通过资源引用的方式配置distributionFilter、shortcuts等信息。只对当前Module、UIAbility、ExtensionAbility生效。对象数组该标签可缺省,缺省值为空。
abilities标识当前Module中UIAbility的配置信息,只对当前UIAbility生效。对象数组该标签可缺省,缺省值为空。
extensionAbilities标识当前Module中ExtensionAbility的配置信息,只对当前ExtensionAbility生效。对象数组该标签可缺省,缺省值为空。
definePermissions标识系统资源hap定义的权限,不支持应用自定义权限。对象数组该标签可缺省,缺省值为空。
requestPermissions标识当前应用运行时需向系统申请的权限集合。对象数组该标签可缺省,缺省值为空。
testRunner
atomicService标识当前应用是元服务时,有关元服务的相关配置。对象该标签可缺省,缺省值为空。
dependencies标识当前模块运行时依赖的共享库列表。对象数组该标签可缺省,缺省值为空。
targetModuleName标识当前包所指定的目标module,确保该名称在整个应用中唯一。取值为长度不超过31字节的字符串,不支持中文。配置该字段的Module具有overlay特性。仅在动态共享包(HSP)中适用。字符串该标签可缺省,缺省值为空。
targetPriority标识当前Module的优先级,取值范围为1~100。配置targetModuleName字段之后,才需要配置该字段。仅在动态共享包(HSP)中适用。整型数值该标签可缺省,缺省值为1。
proxyData标识当前Module提供的数据代理列表。对象数组该标签可缺省,缺省值为空。
isolationMode标识当前Module的多进程配置项。支持的取值如下:- nonisolationFirst:优先在非独立进程中运行。- isolationFirst:优先在独立进程中运行。- isolationOnly:只在独立进程中运行。- nonisolationOnly:只在非独立进程中运行。字符串该标签可缺省,缺省值为nonisolationFirst。
generateBuildHash标识当前HAP/HSP是否由打包工具生成哈希值。当配置为true时,如果系统OTA升级时应用versionCode保持不变,可根据哈希值判断应用是否需要升级。该字段仅在app.json5文件中的generateBuildHash字段为false时使能。说明:该字段仅对预置应用生效。布尔值该标签可缺省,缺省值为false。
compressNativeLibs标识libs库是否以压缩存储的方式打包到HAP。- true:libs库以压缩方式存储。- false:libs库以不压缩方式存储。布尔值该标签可缺省,缺省值为false。
libIsolation用于区分同应用不同HAP下的.so文件,以防止.so冲突。- true:当前HAP的.so文件会储存在libs目录中以Module名命名的路径下。- false:当前HAP的.so文件会直接储存在libs目录中。布尔值该标签可缺省,缺省值为false。
fileContextMenu标识当前HAP的右键菜单配置项。取值为长度不超过255字节的字符串。字符串该标签可缺省,缺省值为空。
querySchemes标识允许当前应用进行跳转查询的URL schemes,只允许entry类型模块配置,最多50个,每个字符串取值不超过128字节。字符串数组该标签可缺省,缺省值为空。
routerMap标识当前模块配置的路由表路径。取值为长度不超过255字节的字符串。字符串该标签可缺省,缺省值为空。
appEnvironments标识当前模块配置的应用环境变量,只允许entry和feature模块配置。对象数组该标签可缺省,缺省值为空。
appStartup标识当前Module启动框架配置路径,仅在Entry中生效。字符串该标签可缺省,缺省值为空。
hnpPackages标识当前应用包含的Native软件包信息。只允许entry类型模块配置。对象数组该标签可缺省,缺省值为空。

3.main_pages.json

依次打开src--main--resources--base--profile文件夹,旗下的main_pages.json文件保存的是页面page的路径配置信息,所有需要进行路由跳转的page页面都要在这里进行配置。

1.7 总结

本章主要介绍了HarmonyOS的概念,背景,特征,以及如何通过DevEco Studio来创建HarmonyOS项目。本章也详细介绍了HarmonyOS应用工程结构的含义。

1.8 习题

1.判断题

(1)main_pages.json存放页面page路径配置信息。( )

(2)DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。( )

2.单选题

(1)在Stage模型中,下列配置文件属于AppScope文件夹的是?( )

A.main_pages.json

B.module.json5

C.app.json5

D.package.json

3.多选题

(1)如何在DevEco Studio中创建新项目?( )

A.在计算机上创建一个新文件,并将其命名为“new harmonyOS项目”

B.如果已打开项目,从DevEco Studio菜单选择File--New--Create Project

C.如果第一次打开DevEco Studio,在欢迎页单击Create new Project按钮

(2)module.json5配置文件中包含以下哪些信息?( )

A.Ability的相关配置信息

B.模块名

C.应用的版本号

D.模块类型

 

### DevEco Studio 右侧手机导航栏的使用说明 在 DevEco Studio 中,右侧的 **手机导航栏** 是用于辅助开发者查看和操作虚拟设备界面的重要功能组件之一。以下是关于其使用方法以及位置调整的具体说明: #### 功能概述 右侧的手机导航栏通常被称为 **Tool Window Bars**,它提供了多种工具窗口的快捷入口,便于开发者快速访问所需的面板或视图。要显示或隐藏该导航栏,可以在主菜单栏中依次点击 `View` -> `Appearance` -> 勾选或取消勾选 `Tool Window Bars`[^1]。 #### 位置调整方法 如果希望重新定位右侧的手机导航栏或者将其移动到其他区域,可以按照以下方式实现: - 将鼠标悬停至目标工具窗口的标题栏上(通常是带有名称的部分)。 - 单击并拖拽该工具窗口至所需的新位置。 - 松开鼠标后,工具窗口会固定在其新放置的位置,并可能与其他窗口形成嵌套布局。 此外,在某些情况下,也可以通过右键单击工具窗口标签页上的空白处,选择相应的选项来自定义其行为或外观设置。 #### 自动化配置建议 为了进一步优化工作流体验,《第二章、DevEco Studio 的使用》提到过一种机制允许用户自定义代码风格及格式化的例外情况[^3]。虽然这主要针对的是源码管理方面的需求,但对于习惯于特定布局安排的人来说同样适用——即利用类似的个性化设定手段去满足个人偏好下的 UI 排列需求。 另外值得注意的一点是,当涉及到频繁切换不同视角时,“全局搜索”功能显得尤为重要。正如文档所描述那样,借助 Shift 键组合能够迅速唤起统一查询框从而定位任意符号、类别乃至整个项目内的资源项[^4]。此特性间接支持了灵活操控含手机预览在内的各类子画面排列可能性。 ```python # 示例:如何通过 Python 实现简单的 GUI 移动逻辑 (仅作示意用途) import tkinter as tk def move_window(event): root.geometry(f"+{event.x_root}+{event.y_root}") root = tk.Tk() label = tk.Label(root, text="Drag me to move", width=20, height=10) label.bind("<B1-Motion>", move_window) label.pack() tk.mainloop() ``` 上述脚本展示了一个基础图形界面上对象位移的概念验证过程,尽管实际应用于 HarmonyOS 开发环境需遵循官方 API 规范而非直接移植此类通用编程模式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笔触狂放

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值