精华内容
下载资源
问答
  • 华为鸿蒙操作系统学习资料,文章介绍了HarmonyOS开发的知识,适合深入了解、学习鸿蒙系统开发者参考使用。
  • HarmonyOS开发文档(二); HarmonyOS开发文档(一); HarmonyOS入门文档; HarmonyOS设备应用开发文档; HarmonyOS应用设计文档; HarmonyOS智慧屏设计文档; HarmonyOS智能穿戴应用设计文档; Huawei DevEco ...
  • BearPi-HM Nano开发板——HarmonyOS开发环境搭建[Linux篇] 环境搭建参考博文:https://editor.csdn.net/md?articleId=111412257
  • 目录前言认识HarmonyOS系统定义技术特性硬件互助,资源共享一次开发,多次部署统一O S,弹性部署技术架构内核层系统服务层框架层应用层系统安全正确的人正确的设备正确地使用数据拓展:HarmonyO在硬件、系统、数据、...

    系列文章目录

    HarmonyOS(一):快速开始学习鸿蒙开发,官方文档学习路线解析

    HarmonyOS(二):应用开发环境搭建准备

    HarmonyOS(三):创建你的第一个HelloWorld应用



    前言

    北京时间 2020 年 9 月 10 日就在 2020 华为开发者大会上,鸿蒙OS2.0正式发布并且开源。告别 PPT 的鸿蒙 OS 2.0 系统赢得开发者们的一片叫好。

    谈及鸿蒙OS 2.0的规划,杨海松表示,大家非常期待的手机的Beta版本会在今年12月份向我们的开发者开放,而面向三方的生态设备,当前已经做到了向128K到128兆的轻量级的IoT设备,完整的开源和开放。

    华为软件部副总裁杨海松表示,希望在一年的时间内,华为自有设备搭载鸿蒙OS的过亿,三方搭载鸿蒙OS的装机量过亿,当然如果华为真的实现了这个目标,对于我们开发者来说,也不乏为一个全新的蓝海市场,可以多关注下。HarmonyOS官方的文档相对也比较完善和丰富了,但是面对这么多的文档学习起来也不妨有种无从下手的感觉,不用纠结,下面博主为大家整理了下HarmonyOS设备开发的学习路线,以助力设备厂商高效快捷的完成开发,打破硬件边界,融入全场景智慧生态。


    认识HarmonyOS

    HarmonyOS的能力、特性、架构、安全性简述

    系统定义

    HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。

    • 对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,形成一个“超级虚拟终端”,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
    • 对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。
    • 对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。

    技术特性

    鸿蒙OS技术的特性,可以用官方的六句话来概括:

    硬件互助,资源共享

    一次开发,多次部署

    统一O S,弹性部署

    硬件互助,资源共享

    Harmonyos为我们提供了分布式软总线、分布式设备虚拟化、分布式数据管理、分布式任务调度这几种通用的终端协调标准,用来作为不同终端设备之间设备通信、数据资源交换、终端设备发现管理、终端业务/数据分离等功能实现,帮助我们能够更高效快捷的完成开发,打破硬件边界,融入全场景智慧生态

    • 分布式软总线

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

      分布式软总线

    • 分布式设备虚拟化

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

      分布式设备虚拟化

    • 分布式数据管理

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

      分布式数据管理

    • 分布式任务调度

      分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建了统一的分布式服务管理(发现、同步、注册、调用)机制,是不是看着很眼熟,跟微服务中的服务注册中心很像,其实这个确实是参考了微服务的注册中心的一些概念来开发的,确实对于我们的智慧化设备场景提供了很大的方便,不同的是它还支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。分布式任务调度能力图示如下:

      分布式任务调度能力图示

    一次开发,多次部署

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

    1

    统一O S,弹性部署

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

    • 支持各组件的选择(可选,组件可有可无):根据硬件的形态和需求,可以选择所需的组件
    • 支持组件内功能集的配置(组件可大可小):根据硬件的资源情况和功能需求,可以选择组件中的功能集。例如,选择配置图形框架中的部分控件
    • 支持组件间依赖的关联:根据编译链关系,可以自动化生成组件化的依赖关系,例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。

    技术架构

    HarmonyOS整体设计遵从分层模式,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照 系统>子系统>功能/模块 逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能模块。HarmonyOS技术架构如图:

    HarmonyOS技术架构

    内核层

    个人理解,内核层如果我们从电脑设备整体架构的角度来对比考虑的话,其实就是我们电脑的bios这一块类似的服务,结合硬件为系统底层服务提供相关硬件能力支撑

    • 内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用合适的OS内核。内核抽象层(KAL,KernelAbstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括线程/进程管理、内存管理、文件系统、网络管理和设备管理等
    • 驱动子系统:HarmonyOS驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架

    系统服务层

    系统服务层是HarmonyOS的核心能力集合,通过框架层对应用框架提供服务。该层包含以下几个部分:

    • 系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
    • 基础软件服务子系统集:为HarmonyOS提供公共的通用软件服务,由事件通知、电话、多媒体、DFX、MSDP&DV等子系统组成
    • 增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,有智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
    • 硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成

    根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度进行裁剪,每个子系统内部又可以按照功能粒度裁剪。

    框架层

    框架层为HarmonyOS的应用程序提供了Java/C/C++/Js等多语言的用户程序框架和Ability框架,以及各种软硬件服务对外开放的多语言框架API;同时为采用HarmonyOS的设备提供了C/C++/JS等多语言的框架API,不同设备支持的API与系统的组件化裁剪程度有关。

    应用层

    应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力。而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的应用业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

    系统安全

    对于系统安全这一块,在搭载HarmonyOS的分布式终端上,可以保证正确的人,通过正确的设备,正确地使用数据

    • 通过分布式多端协同身份认证,来保证正确的人
    • 通过在分布式终端上构筑可信运行环境来保证正确的设备
    • 通过分布式终端数据在跨终端流动的过程中,对数据进行分类分级管理,来保证正确地使用数据

    正确的人

    在分布式终端场景下,正确的人是指通过身份认真的数据访问者和业务操作者。正确的人是确保用户数据不被非法访问,用户隐私不被泄露的前提条件。HarmonyOS通过三个方面来实现协同身份认证:

    1. 零信任模型:HarmonyOS基于零信任模型,实现对用户的身份认证和对数据的访问控制。当用户需要跨设备访问数据资源或者发起高安全等级的业务操作(例如,对安防设备的操作等)时,HarmonyOS会对用户进行身份认证,确保其身份的可靠性
    2. 多因素融合认证:HarmonyOS通过用户身份管理,将不同设备上标识同一用户的认证凭据关联起来,用于标识一个用户,提高认证的准确度
    3. 协同互助认证:HarmonyOS通过将认证能力和硬件解耦(即信息采集和用户认证可以在不同的设备上完成),来实现不同设备的资源池化以及能力的互助和共享,让高安全等级的设备协助低安全等级的设备完成用户身份认证

    正确的设备

    在分布式终端场景下,只有保证用户使用的设备是安全可靠的,才能保证用户数据在虚拟终端上得到有效的保护,避免用户隐私泄露

    • 安全启动

      确保源头每个虚拟设备运行的系统固件和应用程序是完整的、未经篡改的。通过安全启动,各个设备厂商的镜像包就不易被非法替换为恶意程序,从而保护用户的数据和隐私安全

    • 可信执行环境

      提供了基于硬件的可信执行环境(TEE,Trusted Execution Environment)来保护用户的个人敏感数据的存储和处理,确保数据不会被泄露。由于分布式终端硬件的安全能力不同,对于用户的个人敏感数据,需要使用高安全等级的设备进行处理和存储。HarmonyOS使用基于数学可证明的形式开发和验证的TEE微内核,获得了商用OS内核CC EAL5+的认证评级

    • 设备证书认证

      支持为具备可信执行环境的设备预置设备证书,用于向其他设备终端证明自己的安全能力。对于有TEE环境的设备,通过预置PKI(Public Key Infrastructure)设备证书给设备身份提供证明,确保设备是合法制造生产的。设备证书在产线进行预置,设备证书的私钥写入并安全保存在设备的TEE环境中,且只在TEE内进行备用。在必须传输用户的敏感数据(例如秘钥、加密的生物特征等信息)时,会在使用设备证书进行安全环境验证后,建立一个设备的TEE到另一设备的TEE之间的安全通道,实现安全传输。设备证书使用图示如下:

      设备证书使用图示

    正确地使用数据

    在分布式终端场景下,需要保证用户能够正确的使用数据。HarmonyOS围绕数据的生成、存储、使用、传输及销毁过程进行全生命周期的保护,从而保证个人数据与隐私、以及系统的机密数据(如秘钥)不泄露。

    HarmonyOS数据生命周期如下:

    • 数据生成:根据数据所在国家或组织的法律法规与标准规范,对数据进行分类分级,并且根据分类设置相应的保护等级。每个保护等级的数据从生成开始,到存储、使用、传输的整个生命周期都需要根据对应的安全策略提供不同强度的安全防护。虚拟超级终端的访问控制系统支持根据标签的访问控制策略,保证数据只能在可以提供足够安全防护的虚拟终端之间存储、使用和传输。
    • 数据存储:HarmonyOS通过区分不同的安全等级,存储到不同安全防护能力的分区,对数据进行安全保护,并提供秘钥全生命周期的跨设备无缝流动和设备秘钥访问控制能力,支持分布式身份认证协同、分布式数据共享等业务
    • 数据使用:HarmonyOS通过硬件为设备提供可信执行环境。用户的个人敏感数据仅在分布式虚拟终端的可信环境中进行使用,确保用户数据的安全和隐私不泄露
    • 数据传输:为了确保数据在虚拟超级终端之间安全流转,需要各设备是正确可信的,建立了信任关系(多个设备通过华为账号建立配对关系),并能够在验证信任关系后,建立安全的连接通道,按照数据流动的规则,安全的传输数据。当设备之间进行通信时,需要基于设备的身份凭据对设备进行身份认证,并在此基础上,建立安全的加密数据传输通道
    • 数据销毁:销毁密钥即销毁数据。数据在虚拟终端的存储,都建立在密钥的基础上。当销毁数据时,只需要销毁对应的密钥即完成了数据的销毁

    拓展:HarmonyO在硬件、系统、数据、设备互联、应用安全等方面的安全机制和推荐做法是什么?

    HarmonyOS提供了一个可以有效保护应用和用户数据的执行环境。在这个执行环境中,芯片的安全能力、系统的安全能力、以及上层的安全服务一起协作,从硬件安全、系统安全、数据安全、设备互联安全、应用安全、安全更新多个维度提供安全保障。

    官方完整版安全指南:https://device.harmonyos.com/cn/docs/security/sec-guides/oem_security_guide-0000001050032745


    获取源码

    HarmonyOS的开源版项目名为OpenHarmony,由华为捐赠给开放原子开源基金会(OpenAtom Foundation)开源。第一个开源版本支持在128KB~128MB设备上运行。

    代码仓库地址: https://openharmony.gitee.com

    1. 从镜像站点下载压缩文件(推荐)

    OpenHarmony提供了以下站点的镜像库,您可以根据自己的需求选择源码或者对应的解决方案站点进行下载:

    下载内容版本信息下载站点SHA256校验码
    全量代码1.0站点SHA256 校验码
    Hi3861解决方案(二进制)1.0站点SHA256 校验码
    Hi3518解决方案(二进制)1.0站点SHA256 校验码
    Hi3516解决方案(二进制)1.0站点SHA256 校验码
    RELEASE-NOTES1.0站点-

    2. 从hpm网站组件式获取

    对于刚接触HarmonyOS的新用户,希望能够参考一些示例解决方案从而进行快速开发。可以在HPM获取推荐的解决方案,以此为基础,增加或裁剪部分组件,快速定制系统。

    操作步骤如下

    1. 查找合适的解决方案组件包

      • 打开包管理页面HPM,设定搜索的对象为“解决方案”,如下图所示。
      • 自搜索框输入关键字搜索,如"WLAN"(这里严格区分大小写)。
      • 结果中显示匹配的解决方案,可以进一步根据组件类别等过滤条件(如:适配的开发板,内核)精确筛选。
      • 查找合适的解决方案,点击查看解决方案详情介绍。

      包查找操作步骤

    2. 定制解决方案组件包

      • 仔细阅读解决方案的说明,以了解该解决方案的使用场景、特性、使用方法以及如何进行定制化,如下图所示。
      • 点击「直接下载」,将解决方案下载到本地。
      • 点击「定制组件」,将对解决方案包含的组件进行定制。

      定制解决方案

    3. 定制组件

      • 进入解决方案定制页面,如下图所示。

      • 通过关闭开关移除可选组件,或者通过“添加组件”增加新的组件。

      • 在右边填写您的项目基本信息,包括名称、版本、描述等信息。

      • 点击“下载”,系统会根据您的选择,生成相应的HarmonyOS代码结构文件(如name.zip),保存至本地文件。

        1. 下载的压缩文件并未包含源代码的原始文件,可以在IDE中导入下载的压缩包,解压后执行hpm的安装指令(hpm install),才会将所需要的组件全部下载下来。
    4. 下载的组件存在工程目录下的ohos_bundles文件夹中。

    定制组件

    3. 用包管理器命令行工具获取

    这种模式获取源码主要适用场景:

    • 用户已通过组件式获取的方式获取源码,需要对源码中的某个或某几个组件进行独立升级。
    • 用户已经比较熟悉HarmonyOS系统的开发并且熟练掌握命令行工具的使用。

    环境准备

    通过命令行获取,需要先安装Node.js和hpm命令行工具,安装步骤如下:

    1. 安装Node.js。

      官网下载并在本地安装Node.js.

      推荐安装 Node.js 12.x (包含 npm 6.14.4)或更高版本 (推荐 12.13.0+)。

    2. 通过Node.js自带的npm安装hpm命令行工具。

      打开CMD,执行以下命令:

      npm install -g @ohos/hpm-cli
      
    3. 安装完成后执行如下命令,显示hpm版本,即安装成功。

      hpm -V 或 hpm --version
      
    4. 如果升级hpm的版本,请执行如下命令:

      npm update -g @ohos/hpm-cli
      

    操作步骤

    接下来将组件添加到开发项目中,假定要获取的组件名为@ohos/demo,具体操作如下:

    1. 进入开发目录,执行如下命令,采用默认模板创建一个开发项目。

      hpm init -t default
      
    2. 执行如下命令,安装组件@ohos/demo

      hpm install @ohos/demo
      
    3. 工具会自动从服务器下载所有依赖的组件,下载成功则显示Install successfully!

      $ hpm install @ohos/demo
      Requesting: https://url.foo.bar/hpm/registry/api/bundles/@ohos/demo
      downloading @ohos/demoRequesting: https://lfcontentcenterdev....../bMAlLrYISLqdUTFFFCdgzA.tgz
      extract D:\demo\ohos_bundles\@ohos\demo\@ohos-demo-1.0.7.tgz
      Install successfully!
      

    4. 从代码仓库获取

    适用场景

    • 基于HarmonyOS的稳定分支建立自己的基线,分发下游客户。
    • 已经完成自身软件与HarmonyOS的对接,需要进行HarmonyOS官方认证。
    • 芯片/模组/app通过HarmonyOS官方认证后,贡献代码到HarmonyOS生态。
    • 修复HarmonyOS的问题。
    • 学习HarmonyOS的源码。

    环境准备

    1. 注册码云gitee账号。

    2. 注册码云SSH公钥,请参考码云帮助中心的公钥管理:https://gitee.com/help/articles/4181

    3. 安装git客户端并配置用户信息。

      git config --global user.name "yourname"
      git config --global user.email "your-email-address"
      git config --global credential.helper store
      
    4. 安装码云repo工具,可以执行如下命令。

      curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
      chmod a+x 
      /usr/local/bin/repopip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
      

    操作

    方式一(推荐):通过repo下载

    repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
    repo sync -c
    

    方式二:通过git clone单个代码仓库

    进入代码仓库主页:https://gitee.com/openharmony,选择需要克隆的代码仓库,执行命令,如:

    git clone https://gitee.com/openharmony/manifest.git -b master
    

    源码目录简介

    下表是HarmonyOS源码的目录及简单说明:

    目录名描述
    applications应用程序样例,包括wifi-iot,camera等
    base基础软件服务子系统集&硬件服务子系统集
    build组件化编译、构建和配置脚本
    domains增强软件服务子系统集
    drivers驱动子系统
    foundation系统基础能力子系统集
    kernel内核子系统
    prebuilts编译器及工具链子系统
    test测试子系统
    third_party开源第三方组件
    utils常用的工具集
    vendor厂商提供的软件
    build.py编译脚本文件

    获取工具

    获取编译工具链、设备开发工具(HUAWEI DevEco Device Tool)、应用开发工具(HUAWEI DevEco Studio)以及对应的工具使用指南

    编译工具链获取路径

    编译工具链从镜像站点下载,具体见下表。编译工具链的安装,请参考“快速入门”具体开发板的“环境搭建”部分。

    下载内容版本信息下载站点SHA256校验码
    llvm9.0.0-34042站点64a518b50422b6f1ba8f6f56a5e303fb8448a311211ba10c385ad307a1d2546f
    gcc_riscv327.3.0站点614ee086ead1a4fd7384332b85dd62707801f323de60dfdb61503f473d470a24
    gn1523站点50a5a5ba5877dd0ec8afcb23d3dd4d966a16403c29cd80a4002230241d32ef34
    ninja1.9.0站点b4a4ba21e94ff77634e1f88697a00b6f498fdbc0b40d7649df1b246b285874f9
    hc-gen0.65站点fcfee489371947a464fe41a4b45a897b9a44155891a957f15bad2e157c750162

    下载时,可以检查编译链工具是否从官方渠道获取

    1. 在Ubuntu 环境下,使用命令行生成sha256摘要。

      sha256sum 文件名
      

      如果没有sha256sum工具,请参考Ubuntu命令提示安装。

    2. 生成的摘要与官方提供的对比。

      如果一致,则说明下载的工具包没有被篡改过。否则,就要注意下载包的安全。

    获取设备开发工具

    设备开发工具(HUAWEI DevEco Device Tool)是HarmonyOS面向智能设备开发者提供的一站式集成开发环境,支持HarmonyOS的组件按需定制,支持代码编辑、编译、烧录、调试等功能,支持C/C++语言,以插件的形式部署在Visual Studio Code上。

    工具获取路径https://device.harmonyos.com/cn/ide

    工具使用指南https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905

    获取应用开发工具

    应用开发工具(HUAWEI DevEco Studio) 简称DevEco Studio是面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用开发服务。通过使用DevEco Studio,开发者可以更高效的开发具备HarmonyOS分布式能力的应用,进而提升创新效率

    工具获取路径https://developer.harmonyos.com/cn/develop/deveco-studio

    工具使用指南https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387


    了解API

    官方把各个组件各个模块的API都进行了分类分模块整理,大家在阅读时需要注意的是,很多模块的API文档目前暂时还都是英文的,所以阅读这个需要有一定的英文基础

    API参考地址https://device.harmonyos.com/cn/docs/develop/apiref/abilitykit-0000001054598111

    在这里插入图片描述


    硬件开发官方示例

    HarmonyOS目前提供了三种开发板支持,分别如下:

    • Hi3861开发板:WLAN模组,为各类IoT设备提供连接能力。
    • Hi3518开发板:无屏类摄像头模组,为各类IoT设备提供摄像头能力。
    • Hi3516开发板:带屏幕摄像头类模组,基于此开发板开发HarmonyOS应用。

    下面给出各个产品案例的官方介绍地址,供大家参考:

    WLAN连接类产品

    基于Hi3861开发板开发:与WLAN信道协同,通过碰一碰,快速完成配网注册,通过碰一碰拉起FA,服务直达,实现新交互体验,支持更多功能和服务

    认识Hi3861开发板

    Hi3861开发板介绍地址:https://device.harmonyos.com/cn/docs/start/introduce/oem_wifi_start_des-0000001050168548

    下载源码

    从镜像站点获取源码文档地址:https://device.harmonyos.com/cn/docs/start/get-code/oem_sourcecode_guide-0000001050769927#ZH-CN_TOPIC_0000001050769927__section61172538310

    搭建环境

    参考官方文档:https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998

    编译、烧录HarmonyOS

    开发Hi3861第一个示例程序:https://device.harmonyos.com/cn/docs/start/introduce/oem_wifi_start_helloword-0000001051930719

    使用HarmonyOS控制LED

    LED外设控制开发示例:https://device.harmonyos.com/cn/docs/develop/demo/oem_wifi_sdk_des-0000001050059068

    使用HarmonyOS集成三方SDK

    集成三方SDK示例:https://device.harmonyos.com/cn/docs/develop/demo/oem_device_wifi_sdk-0000001054412155

    无屏摄像头类产品

    基于Hi3518开发板开发:高实时性多进程内核,支持用户态和内核态隔离,用户进程间隔离机制,摄像头虚拟化为手机硬件资源,支持灵活控制和切换。

    认识Hi3518开发板

    Hi3518开发板介绍:https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_hi3518-0000001050170473

    下载源码

    从镜像站点获取源码:https://device.harmonyos.com/cn/docs/start/get-code/oem_sourcecode_guide-0000001050769927#ZH-CN_TOPIC_0000001050769927__section61172538310

    搭建环境

    搭建环境:https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_environment-0000001052450997

    编译、烧录HarmonyOS

    开发Hi3518第一个示例程序:https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_example-0000001051610926

    使用HarmonyOS,控制摄像头

    摄像头控制开发示例:https://device.harmonyos.com/cn/docs/develop/demo/oem_device_iotcamera_control_des-0000001054203800

    带屏摄像头类产品

    基于Hi3516开发板开发:全栈轻量化设计,包括内核、UI、媒体、JS开发框架等,支持丰富的 UI 控件,完备的图形栈和多媒体能力、分布式调度能力,提供 DevEco Studio IDE 开发环境。

    设备软件开发

    认识Hi3516开发板

    Hi3516开发板介绍:https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_3516-0000001052670587

    下载源码

    从镜像站点获取源码:https://device.harmonyos.com/cn/docs/start/get-code/oem_sourcecode_guide-0000001050769927#ZH-CN_TOPIC_0000001050769927__section61172538310

    搭建环境

    搭建环境:https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3516_environment-0000001054501981

    编译、烧录HarmonyOS

    开发Hi3516第一个应用程序示例:https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_first_example-0000001051610926

    使用HarmonyOS,开发新驱动

    开发Hi3516第一个驱动程序示例:https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_driveexample-0000001054448621

    使用HarmonyOS,控制屏幕和摄像头

    屏幕和摄像头控制开发示例:https://device.harmonyos.com/cn/docs/develop/demo/oem_device_iotcamera_control_des-0000001055101239

    应用软件开发

    使用HarmonyOS,开发视觉应用(需单独搭建开发环境,参考《DevEco Studio使用指南》)。


    芯片适配参考

    内核开发指导

    HarmonyOS轻内核基础功能、文件系统、标准库、调测等功能的介绍和开发指导。

    https://device.harmonyos.com/cn/docs/develop/kernel/oem_kernal_user_process-0000001050032733

    驱动使用指导

    HDF驱动框架、驱动平台、外设等功能的使用指导。

    https://device.harmonyos.com/cn/docs/develop/drive/oem_drive_hdfdev-0000001051715456


    贡献组件

    组件开发规范

    组件的基本概念以及如何按照规范定义组件

    https://device.harmonyos.com/cn/docs/develop/bundles/oem_bundle_standard_des-0000001050129846

    组件开发指南

    开发HarmonyOS组件和发行版。

    https://device.harmonyos.com/cn/docs/develop/bundles/oem_bundle_guide_des-0000001050770981

    展开全文
  • 华为鸿蒙HarmonyOS开发整理资料汇总,共38份。 1学前必读:HarmonyOS学习资源主题分享 2学前必读:OpenHarmony-联盟生态资料合集 3-1.HarmonyOS概述:技术特性 3-2.HarmonyOS概述:开发工具与平台 3-3.HarmonyOS...
  • 这次要做的是失物招领的项目,鸿蒙开发现在都还算摸索阶段,希望大家能把自己的想法都发出来相互交流。 上代码 MainAbility.java public class MainAbility extends FractionAbility { private String[] str={...

    先给大家看看效果:

    在这里插入图片描述

    • 这次要做的是失物招领的项目,鸿蒙开发现在都还算摸索阶段,希望大家能把自己的想法都发出来相互交流。

    上代码

    MainAbility.java

    public class MainAbility extends FractionAbility {
        private  String[] str={"失物","拾物","发现","我的"};
        private TabList tabList;
        private StackLayout stackLayout;
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            super.setMainRoute(MainAbilitySlice.class.getName());
            setUIContent(ResourceTable.Layout_ability_main);
            initView();
        }
        private void initView(){
            tabList = (TabList) findComponentById(ResourceTable.Id_tab_list_bottom);
            stackLayout = (StackLayout) findComponentById(ResourceTable.Id_stack_layout);
    
    
            for (int i = 0; i < str.length; i++) {
                TabList.Tab tab = tabList.new Tab(getContext());
                tab.setText(str[i]);
                tabList.addTab(tab);
            }
    
            tabList.setFixedMode(true);
            //默认第一个被选中
            tabList.getTabAt(0).select();
            switchPage(0);
               /* tabList.setTabLength(100); // 设置Tab的宽度
                tabList.setTabMargin(20); // 设置两个Tab之间的间距*/
            tabList.addTabSelectedListener(new TabList.TabSelectedListener() {
                @Override
                public void onSelected(TabList.Tab tab) {
                    // 当某个Tab从未选中状态变为选中状态时的回调
                    switchPage(tab.getPosition());
                }
                @Override
                public void onUnselected(TabList.Tab tab) {
                    // 当某个Tab从选中状态变为未选中状态时的回调
    
                }
                @Override
                public void onReselected(TabList.Tab tab) {
                    // 当某个Tab已处于选中状态,再次被点击时的状态回调
    
                }
            });
        }
    
        //模块页面切换
        public  void  switchPage(int  position){
            switch (position){
                case 0:
                    getFractionManager()
                            .startFractionScheduler()
                            .replace(ResourceTable.Id_stack_layout, new HomeFraction())
                            .submit();
    
                    break;
                case 1:
                    getFractionManager()
                            .startFractionScheduler()
                            .replace(ResourceTable.Id_stack_layout, new FoundFraction())
                            .submit();
    
    
                    break;
                case 2:
                    getFractionManager()
                            .startFractionScheduler()
                            .replace(ResourceTable.Id_stack_layout, new FindFraction())
                            .submit();
    
                    break;
                case 3:
                    getFractionManager()
                            .startFractionScheduler()
                            .replace(ResourceTable.Id_stack_layout, new MeFraction())
                            .submit();
    
                    break;
            }
        }
    }
    

    ability_admin_main

    <?xml version="1.0" encoding="utf-8"?>
    <DependentLayout
        xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:alignment="center"
        ohos:orientation="vertical"
        ohos:scrollbar_background_color="#b5c8c6">
    
        <TabList
            ohos:id="$+id:tab_list_bottom"
            ohos:height="60vp"
            ohos:width="match_parent"
            ohos:layout_alignment="center"
            ohos:orientation="horizontal"
            ohos:text_alignment="center"
            ohos:normal_text_color="#f4f0ef"
            ohos:selected_text_color="#d2887b"
            ohos:selected_tab_indicator_color="#f4f0ef"
            ohos:selected_tab_indicator_height="0vp"
            ohos:text_size="16vp"
            ohos:fixed_mode="true"
            ohos:align_parent_bottom="true"
            ohos:background_element="#afb1b0"/>
    
        <StackLayout
            ohos:id="$+id:stack_layout"
            ohos:height="match_parent"
            ohos:width="match_parent"
            ohos:text_color="grey"
            ohos:background_element="pink"
            ohos:text_size="20vp"
            ohos:layout_alignment="center"
            ohos:text_alignment="center"
            ohos:above="$id:tab_list_bottom"/>
    
    </DependentLayout>
    
    • 在我的个人理解中Fraction是依赖于Ability的,接下来创建Fraction。
      在这里插入图片描述

    MeFraction.java

    public class MeFraction extends Fraction {
        @Override
        protected Component onComponentAttached(LayoutScatter scatter, ComponentContainer container, Intent intent) {
            Component component=scatter.parse(ResourceTable.Layout_ability_me_fraction,container,false);
            return  component;
        }
    
        @Override
        protected void onStart(Intent intent) {
            super.onStart(intent);
            Button btn_me_login=(Button)getFractionAbility().findComponentById(ResourceTable.Id_btn_me_login);
            }
    }
    
    • 这里主要是要继承Fraction,其他的页面也是一样创建。

    最后这里我有一个小问题,就是不知道如何从Ability有参跳转到Fraction页面,如果有想法的小伙伴可以在评论区留言。

    参考链接

    展开全文
  • 华为鸿蒙开发板HI3516DV300资料汇总,内含鸿蒙开发板原理图及PCB(AD,PADS,Allegro版本均有)及相关技术文档,另外还有华为鸿蒙开发者资料汇总。
  • 对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。 作为万物互

    据统计,鸿蒙系统升级用户2周破1800万,1个月突破3000万。升级速度完全超出市场预期,很显然,华为严重低估了消费者的支持热情。随即,华为鸿蒙目标多次升级,从2亿到4亿,后年目标12.3亿。

    而且,目前国内有很多家软硬件厂商已经加入了鸿蒙。格力董事长董明珠在近日接受外媒采访时表示:格力将引入鸿蒙操作系统。

    对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。

    作为万物互联时代的操作系统,“分布式技术”铸就了鸿蒙的核心竞争力,该优点在5G这个万物互联的时代具有着巨大的优势。到时,鸿蒙操作系统有望成为物联网时代的主流系统。

    HarmonyOS2.0 华为鸿蒙开发学习实战教程

    黑马程序员鸿蒙开发系统教程,HarmonyOS 2.0鸿蒙应用开发实战教程

    笔记+源码:https://pan.baidu.com/s/1sP2CxmAbm9njRWtDXgCyBw
    提取码:1234

    在这里插入图片描述
    课程核心内容:在这里插入图片描述
    ◆ 课程亮点:

    1 课程由浅到深,由原理到实践,无论是小白入门还是转行,适合任何人学习;

    2.课程全面,覆盖鸿蒙开发中的所有知识点;

    3.结合实际案例,培养解决实际问题的能力;

    4.系列课程,本教程只是入门篇,后续还有更多更精彩视频更新中。

    ◆ 第一阶段课程内容:

    00-课程和领取资料说明
    01-初识鸿蒙
    02-课程安排
    03-鸿蒙的官方定义
    04-鸿蒙的特点
    05-鸿蒙和安卓的对比
    06-鸿蒙的发展前景
    07-鸿蒙开发-完整开发流程
    08-鸿蒙开发-注册和实名认证
    09-开发工具的下载和安装.
    10-开发工具-基本设置
    11-开发工具的项目结构
    12-HelloWorld案例-如何运行项目
    13-HelloWorld案例-页面中的包含关系
    14-HelloWorld案例-config.json配置文件
    15-HelloWorld案例-程序的启动流程
    16-页面跳转案例-页面搭建
    17-页面跳转案例-代码实现

    ◆ 第二阶段课程内容:

    01-组件布局和事件的内容介绍
    02-单击事件-代码实现
    03-单击事件的代码分析
    04-单击事件的四种写法
    05-双击事件
    06-长按事件
    07-滑动事件-三个动作
    08-滑动事件-上下左右滑动
    09-滑动事件-bug处理
    10-滑动事件-onTouchEvent方法的返回值
    11-案例-多按钮被点击
    12-案例-双击点赞双击取消
    13-案例-随机更换段子
    14-案例-点击更换随机图片
    15-案例-统计点击次数

    展开全文
  • 本篇文章的计划,先体系的介绍一下鸿蒙开发相关的体系内容,希望通过本篇内容构建对鸿蒙开发体系的了解,最后再来一个最简单入门例子。既是自我的学习,也希望对你了解鸿蒙开发的全貌有帮助。 这样安排而没有直接写...

            本篇文章的计划,先体系的介绍一下鸿蒙开发相关的体系内容,希望通过本篇内容构建对鸿蒙开发体系的了解,最后再来一个最简单入门例子。既是自我的学习,也希望对你了解鸿蒙开发的全貌有帮助。

            这样安排而没有直接写一个Helloworld例子的原因,很多朋友刚开始学的时候直接上手helloworld例子,虽然感觉动手入门了,但又感觉好像还是不太了解。因此在开始之前先整体的了解一下鸿蒙开发相关的体系内容,做到能够“窥全身、知全貌”而后再入门,这种方式我觉得对于构建学习体系和深入学习会有极大的好处。

            再啰嗦一句,对于很多学习编程的朋友建议一定要注重这种全貌、原理的研究,不然你只会在框架大楼里砌墙,而不会设计大楼的全貌,那这样你就真的只是一个会码代码的农民。

    1、HarmonyOS开发概述

     1.1HarmonyOS开发概要

            针对HarmonyOS开发按不同的角度划分,可以有不同的分发:

            1、从宏观大类上分为三类:1)通用开发(可安装应用app,兼容安卓和鸿蒙)、2)原子化服务(鸿蒙自己特有的免安装应用服务)、3)智能设备开发(智慧屏、穿戴设备,华为最新的手表已经支持安装应用了,可以说想象无限,未来可以当做微型手机)。

            2、如果从开发语言上分:Java、JavaScript(支持传统js和带界面的低代码量开发)、eTS(华为自定义的一种声明式语言,代码简练更符合开发习惯,华为自己宣传更贴近自然语义,更高效、简洁,跨平台,粗看代码非常简练、易懂);

            3、从开发内容上分:

            1)Ablility框架:包含Ability(各种能力)、公共事件与通知(订阅、发布、通知等消息)、后台任务调度和管控(前台、后台、挂起等)、线程管理(创建、等待、回收)、线程间通信(比如下载完任务完成,通知其他线程应用)、剪切板。

            而这其中最核心、最重要的,并会一直伴随鸿蒙开发的要属于:Ability。从字面看鸿蒙把各种设备的任何功能都抽象为一种能力Ability(能力,视频能力、美颜能力、夜视能力,和上文的FA、PA相对应)。

            Ability本身又分为Page Ability(带界面的相关能力)、Service Ability(服务能力,比如美颜功能)、Data Ability(数据能力,应用间、设备间数据共享);最后还包含一个Intent,它是对象之间传递信息的载体,当一个Ability导航/切换到另一个(比如外卖饿了吗里面联系商家,饿了吗的商家展示Ability,跳转到电话Ability)通过Intent实现——通过Intent可以指定启动目标(这里就是启动电话),并携带相关数据(这里就是商家的电话直接带过去)。

            Ability可以说只要开发任何内容就必须用到,不得不关心(像线程、任务调度虽然重要,但不见得必须得用吧)。

            2)UI(界面开发):提供JavaUI(粒度更细、更灵活)、ArkUI(方舟开发框架,支持两种模式:基于JS扩展的类Web开发范式,基于TS(华为自己定义的开发语言模式,华为自己简称TS)扩展的声明式开发范式;这里先简单的理解成方舟开发框架提供两种类似于Java Web开发,但是采用JS和TS的开发方式;后续再详细解释)、多模输入(鼠标、键盘、触摸、语音等)。

            3)多媒体:视频、相机、图像、音频、媒体会话等 相关数据的管理

            4)安全:权限管理(权限定义、申请、控制)、生物特征识别(人脸、指纹等识别)

            5)AI:文字、图片、文档、语音等识别、转换,二维码生成等;

            6)网络与连接:NFC(查询是否支持、状态、卡模拟、消息通知)、WLAN、网络管理、电话服务等

            7)数据管理:关系型数据库、对象映射数据库、分布式数据和文件服务(创建、打开、关闭、增删改、数据同步)、数据存储、融合搜索

            8)设备管理:穿戴设备、智慧屏、传感器(环境、运动等)、位置、设备标识等;

            9)原子化服务:服务特点(免安装、快捷直达、轻量、夸设备、独立)、服务发现、展示、分享、流转;

            4、从专题的角度划分:服务卡片(一种FA页面,直接展示应用核心内容,并支持快速进入应用)、流转(夸设备流转、多端协同)、华为分享(分享、接收、传输)、平行视界(双视窗支持等)

       1.2 HarmonyOS app组织结构  

            HarmonyOS应用分为两大类:安装的App和免安装原子化服务应用。

            用户应用程序以App Pack形式发布,它包含一个或者多个HAP(Harmony Ability Package)以及描述每个HAP属性的pack.info组成。HAP是上文提到的Ability的部署包,鸿蒙的应用是围绕一个个Ability(能力/功能)组件展开的。一个HAP由代码、资源、第三方库及配置组件组成。

     HAP又分为两种类型:entry和feature。

            entry:是应用的主模块,里面可以包含一个或者多个entry(它是一种HAP)类型的HAP,来支持不同规格的设备(如屏幕规格、API版本等)。

            feature:应用动态特性模块(它也是一种HAP,相比于entry表达的固定的屏幕尺寸,feature代表的是动态调度特性),一个APP可以包含N(N>=0)个feature的HAP。

            只有包含Ability的HAP才能独立运行。

            此外还有一种HAR(HarmonyOS Ability Resources)可以构建应用所需的所有内容,但是HAR不能独立安装,只能作为应用模块的依赖,而被引用。

       1.3其他内容

            1、开发工具:华为提供IntelliJ IDEA Community开源版本打造的HUAWEI DevEco Studio,与HarmonyOS的各种开发、调试做了深度融合,提供很多方便、好用的功能;另外提供DevEco Service提供安全测试、云测试、远程真机测试;真的试考虑很周全,免去项目开发完毕再扫描漏洞、再做压力并发测试,最良心的还提供远程真机测试。。。

            2、测试:DevEco提供性能、安全、兼容、稳定性、功耗、流转等测试,并提供单元测试框架、分布式UI测试框架、综合评分等。

            3、穿戴设备:1)智能穿戴设备指搭载HarmonyOS的手表,目前只有HUAWEI Watch 3,可以去手表商城看下,就大概知道支持哪些功能和应用场景(支持多种场景互动、应用安装); 2)轻量智能穿戴设备,目前支持HUAWEI WATCH GT 2 Pro(消息通知、与手机内容互动,自身非鸿蒙因此应用很弱)。

             穿戴设备单独列出来,二者(智能、轻量智能到底有啥区别区别困惑了我好久)的核心区别,一个是HarmonyOS,一个非鸿蒙,在最新的WATCH 3中已经支持高德地图、喜马拉雅、新浪新闻、腾讯体育、航旅纵横等;在手表上可以安装应用真的让人很心动,未来鸿蒙才是趋势。下图是华为Watch 3鸿蒙手表中各种app,看得直流口水,真香...

            4、OpenHarmony与HarmonyOS的关系

            在这里讲一下二者的区别。

            OpenHarmony是鸿蒙操作系统的开源版本,免费开源,而Harmony OS本身是闭源的;二者的关系:OpenHarmony相当于安卓,Harmony OS相当于小米的UI、华为的EMUI之间的关系;如果你对Linux比较了解,OpenHarmony相当于Linux的内核,HarmonyOS相当于红帽、Ubuntu等发行版。任何的厂家都可以用OpenHarmony,但是其他手机厂商应该是无法直接使用Harmony OS的;至少因为前者开源谁都可以无条件使用,后者是华为的需要和华为签订某些协议才有可能使用。

            OpenHarmony是基础,我们前面讲到的底层大部分特性是OpenHarmony的特性,Harmony OS在OpenHarmony的基础上开发而来;OpenHarmony基本上没法直接使用(即使提供的界面也是最简陋、最基础的东西),只有在其基础上开发定制才能得到可以使用的HarmonyOS。OpenHarmony虽然支持万物互联(各种类型的设备,冰箱、热水器、洗衣机、豆浆机等),但是华为没有那么多的精力(以冰箱为例,华为对使用冰箱场景既不专业,也可避免与冰箱厂商竞争)。华为在OpenHarmony基础上开发的HarmonyOS只涵盖自己的擅长的核心领域:手机、电视、穿戴设备等,而其他领域的万物协同、智慧应用就由各自厂家来开发;比如美的基于OpenHarmony打造的美的物联网操作系统。这样就分工明确、彼此互补——共同构建一个真正万物互联的生态。感兴趣的同学可以思考一下美的没什么要做?可以简单的说让美的的设备使用更简单却更聪明。

            因为美的物联网操作系统和HarmonyOS同源,所以数据协同、系统同步、互联等天生的容易;这才是鸿蒙最厉害,最有未来的地方。

            以上内容是粗略对HarmonyOS开发内容比较重要部分的梳理,难免有理解不准和错误的地方;接下来就进入helloworld例子。

    2、开发前准备(环境配置)

    2.1例子概述

            1、HarmonyOS支持多种开发模式和语言,具体包括eTS、Java、JS(支持传统JS代码和低代码量代码),官方提供了4个例子,这里就以JS为例,只有能跑起来入了门,看看都大同小异;

            2、最好有Java、JS、移动端其中之一的开发基础,如果没有建议从JS开始练习吧,应该最容易上手。

            3、官网的HelloWold例子是A页面点击跳转到B页面;同时可以参考官网的HelloWorld例子 :   HarmonyOS开发官方入门HelloWorld例子

    2.2环境准备

    2.2.1 注册成为个人/团队开发者

          在开发、创建、发布应用前,需要去华为开发者联盟官网注册成为开发者,可以选择个人开发者和企业开发者,权益有些差别;注册以后都必须实名认证,按着要求填即可,具体可以参考官方文档:  华为开发者注册和实名认证

    2.2.2 Devco Studio 开发工具下载及安装

            1、去官网下载开发工具DevEco Studio 3,下载地址:             华为操作系统DevEco Studio和SDK下载与升级

            2、得到一个exe文件,启动下一步、下一步自动安装

            3、配置开发环境 

             1)设置npm registry:第一次启动进入配置向导页面,DevEco Studio已经内置对应仓地址,这里点击下一步即可;

             2)DevEco Studio向导指引开发者下载SDK,默认下载OpenHarmony SDK。剩下根据引导下一步、同意等即可完成安装。 

            但是默认的OpenHarmony SDK并不是我们需要的SDK,我们需要的是Harmony SDK。

            在DevEco Studio的欢迎界面,点击欢迎页中的Configure(六边形的图标) > Settings > SDK Manager > HarmonyOS Legacy SDK,然后点击Edit设置HarmonyOS SDK存储路径。

             注意:默认路径应该和上一步的OpenHarmony一样,必须要更改一下,不然OpenHarmony就会被删除。另外SDK以及其他的一些内容较大,不建议方C盘。

             根据自己勾选的API版本和语言安装完成界面

             同样如果需要更新SDK、其他版本等只需要这里勾选,点击Apply即可实现。

             在DevEco Studio打开工程的情况下,点击Files > Settings > SDK Manager > HarmonyOS Legacy SDK进入当前界面。

            3)配置HDC工具环境变量

            HDC是为开发者提供HarmonyOS应用的调试工具,为方便使用HDC工具,请为HDC工具的端口号设置环境变量。

            Windows环境变量设置方法:
            在我的电脑 > 属性 > 高级系统设置 > 高级 > 环境变量中,添加HDC端口变量。变量名为:HDC_SERVER_PORT,变量值设置为7035。

            至此全部准备工作完毕,接下来终于开始新建Helloworld项目啦。

    2.3创建并运行一个默认的程序

            1、创建一个空的工程Create Project,这里选择JS、Phone,然后Finish。

            此时得到一个点击可以直接运行的空工程 ,可以打印你好的页面,接下来先利用模拟器运行一下看下效果再改造例子。

             2、添加虚拟模拟器

            A、在DevEco Studio菜单栏,点击进入File > Settings > DevEco Labs > Emulator页签,勾选“Enable Local Emulator”,点击OK

             B、点击Files > Settings > SDK Manager > HarmonyOS Legacy SDK页签,勾选并下载Platforms下的System-image和Tools下的EmulatorX86资源。

            C、创建本地模拟器

            点击菜单栏的Tools > Device Manager,在Local Emulator页签中,点击右下角的New Emulator按钮,创建一个本地模拟器。 还可以在Next中修改、配置创建虚拟机的相关信息如CPU、DPI等。

     D、启动本地虚拟机,会得到一个模拟的黑框手机(就不截图了);至此等着运行程序了。

       3、运行创建的默认程序

            启动本地或者/远程真机,选择entry即可运行程序;这里我实例截图的是本地虚拟机;可以本地、远程都试试;远程更方便、更容易。

     2.4通过传统JS代码自定义一个HelloWorld程序

            1、修改index页面(创建项目时已经有了,这样是首页)

            在Project窗口,选择“entry > src > main > js > default > pages > index”,修改代码:

    <!-- index.hml中代码 -->
    <div class="container">
        <!-- 添加一个文本 -->
        <text class="text">
            Hello World
        </text>
        <!-- 添加一个按钮,按钮样式设置为胶囊型,文本显示为Next,绑定launch事件 -->
        <button class="button" type="capsule" value="Next" onclick="launch"></button>
    </div>
    
    
    /* index.css 内容*/
    .container {
        flex-direction: column; /* 设置容器内的项目纵向排列 */
        justify-content: center; /* 设置项目位于容器主轴的中心 */
        align-items: center; /* 项目在交叉轴居中 */
        width:100%;
        height:100%;
    }
    /* 对class="text"的组件设置样式 */
    .text{
        font-size: 42px;
    }
    /* 对class="button"的组件设置样式 */
    .button {
        width: 240px;
        height: 60px;
        background-color: #007dff;
        font-size: 30px;
        text-color: white;
        margin-top: 20px;
    }
    
    
    // index.js内容
    import router from '@system.router';
    
    export default {
      launch() {
        router.push ({
          uri:'pages/details/details', // 指定要跳转的页面
        })
      }
    }

         2、创建第二个跳转页面

       在Project窗口,打开“entry > src > main > js > default”,右键点击“pages”文件夹,选择“New > JS Page”,命名为“detail”,会创建一个detail文件夹,并且下面有三个文件:detail.html、detail.js、detail.css,具体目录结构如下:

    修改detail中代码
    
    <!-- detail.hml -->
    <div class="container">
      <text class="text">
        Hi there
      </text>
    </div>
    
    /* detail.css */
    .container {
        flex-direction: column;
        justify-content: center;
        align-items: center;
        width:100%;
        height:100%;
    }
    .text {
        font-size: 42px;
        text-align: center;
    }

     3、利用真机或者本地模拟运行程序,示意效果

             写在最后,因为是初次接触鸿蒙,以上的内容基本上是对HarmonyOS官方开发文档的整理,很多内容直接参考甚至照抄了鸿蒙官方的文档,刚开始不得不如此,但是也加入了一些自己的思路和思考!整篇写下来,感觉把最最基础的鸿蒙理顺了,因为看即使是照抄,也要思考如何组成一篇比较通顺、完整、易懂的文章!思考、动手才是真正的学习过程,供大家参考!

    展开全文
  • 环境配置 (pdf)、开发者指南 (pdf)、方舟编译器C++语言通用编程规范 (pdf)
  • 文章目录 一、下载 Node.js® 安装包 二、安装 Node.js 三、验证 Node.js 鸿蒙 HarmonyOS 开发环境 DevEco Studio 安装 , 参考博客 : 【鸿蒙 HarmonyOSHarmonyOS 开发环境搭建 ( 下载 | 安装 | 启动 | 支持的设备...
  • 大家可以先看一下官方的动画文档,动画开发指导。 UI布局部分 由于鸿蒙暂时没有圆角的布局,UI中的圆角和圆形都是通过graphic中的shape实现的,利用shape可以快速的实现圆角矩形、圆形和弧的几何图形,当然shape的...
  • HarmonyOS 鸿蒙开发从入门到崛起 - Hello World 演示(一)一、安装Deveco Studio运行环境要求运行 Deveco Studio官网教程二、Gradle下载、安装、环境变量下载安装环境变量Deveco Studio 配置 Gradle三、创建 项目四...
  • 鸿蒙开发之有哪些动画效果 动画是组件的基础特性之一,精心设计的动画使UI变化更直观,有助于改进应用程序的外观并改善用户体验。Java UI框架提供了数值动画(AnimatorValue)和属性动画(AnimatorProperty),并...
  • Button 是什么 按钮(Button)是一种常见的组件,点击可以触发对应的操作,通常由文本或图标组成,也可以由图标和文本共同组成。... 更多技术交流请加入QQ群 群名称:harmonyos鸿蒙技术交流 群 号:856567895
  • 华为文档中介绍,开发HarmonyOS鸿蒙App需要通过华为官方提供的DevEco Studio工具。 HUAWEI DevEco Studio 简介 面向华为终端全场景多设备的一站式分布式应用开发平台,支持分布式多端开发、分布式多端调测、多端模拟...
  • 鸿蒙完整开发流程: 开发准备: 第一步:注册华为开发者账号: 进行账号注册: 实名认证: 第二步:安装开发者工具: 下载工具: 安装: 检查SDK是否安装成功: 第三步:DevEco Studio常见设置: 修改主题...
  • 入门系列 HarmonyOS鸿蒙开发开发环境DevEco Studio安装 第二章 - HarmonyOS鸿蒙开发:从Hello Word开始 第三章 - HarmonyOS鸿蒙开发:3分钟XML布局编写第一个页面 第四章 - HarmonyOS鸿蒙开发:3分钟Java代码编写...
  • 鸿蒙开发之支持哪些开发语言,支持混合开发么 DevEco Studio还提供了多种编程语言供开发者进行HarmonyOS应用开发,包括Java、JS和C/C++三种编程语言,并支持多种语言的混合开发...HarmonyOS 鸿蒙开发之02开发工具安装
  • 在开发者大会上宣布将HarmonyOS源代码捐赠给中国开放原子开源基金会,并在大会上公布了鸿蒙系统的开源路线。 官网地址: OpenHarmony: OpenHarmony是开放原子开源基金会(OpenAtom Foundation)旗下开源项目,定位...
  • 华为鸿蒙操作系统学习资料,文章介绍了HarmonyOS开发的知识,适合深入了解、学习鸿蒙系统开发者参考使用。
  • 华为鸿蒙系统HarmonyOS学习之十二:鸿蒙开发环境搭建
  • 获取布局的大小 布局对象.getLayoutConfig().width 布局对象.getLayoutConfig().height
  • 在《优酷鸿蒙开发实践|鸿蒙卡片开发》一文中已经提到,要实现“在优酷主客ICON向上滑动,呼出优酷鸿蒙卡片”,需要卡片的实现代码与优酷主客做混合打包。下面的小节简单介绍了如何实现Android/鸿蒙混合打包的流程。...
  • 位图操作开发指导 图操作就是指对PixelMap图像进行相关的操作,比如创建、查询信息、读写像素数据等。 1、创建位图对象PixelMap // 指定初始化选项创建 PixelMap pixelMap2 = PixelMap.create(initializationOptions...
  • HarmonyOS鸿蒙开发一文入门

    万次阅读 多人点赞 2021-07-23 00:28:04
    前言 通过创建一个HelloWorld项目,运行...知识官网地址:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387 1 创建项目 打开开发工具DevEco Studio,选择File
  • Ability是HarmonyOS应用程序可以提供的功能的抽象。HarmonyOS应用程序的能力分为两种类型: Feature Ability 和 Particle Ability。Feature Ability 代表具有UI的功能,并旨在与用户进行交互。Particle Ability表示...
  • 4.5【HarmonyOS鸿蒙开发】组件TabList和Tab 作者:韩茹 公司:程序咖(北京)科技有限公司 鸿蒙巴士专栏作家 Tablist可以实现多个页签栏的切换,Tab为某个页签。子页签通常放在内容区上方,展示不同的分类。页签...
  • 原创 鸿蒙开发之Button按钮有哪些类型,如何通过代码设置(HarmonyOS鸿蒙开发基础知识) 从零开始入门学习HarmonyOS鸿蒙2.0开发 原创 HarmonyOS 鸿蒙入门教程之01 基础环境和开发工具 (教程含源码) 原创 HarmonyOS...
  • 直接上效果 代码实现 text_lable = (Text) findComponentById(ResourceTable.Id_text_lable); String[] str={"标签1","标签2","标签3"};...myTabList = (TabList) findComponentById(ResourceTable.Id_myTabList);...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,019
精华内容 4,807
关键字:

鸿蒙开发