鸿蒙操作系统(HarmonyOS)开发的初学者了解和入门

1. 什么是鸿蒙操作系统(HarmonyOS)

鸿蒙操作系统是华为开发的一种分布式操作系统,面向多种设备(如智能手机、智能家居设备、穿戴设备、车机等)。它的特点包括:

  • 分布式架构:支持跨设备无缝协作。
  • 开发一次,多端部署。
  • 高性能:低时延和高吞吐率。
  • 安全性:微内核架构更注重系统安全。

2. ArkTS 简介

ArkTS 是一种面向现代 UI 开发的语言,基于 TypeScript 语法扩展,专为构建 HarmonyOS 应用设计。它提供更高效的开发体验,包括:

  • 强类型系统和语法检查。
  • 简洁的 UI 声明式编程。
  • 与分布式能力的深度集成。

3. 开发准备

在开始之前,确保开发环境符合以下条件:

(1) 硬件要求
  • 操作系统:Windows 10(64 位)、macOS(10.15 或更高)、Linux(Ubuntu 20.04 或更高)。
  • 内存:至少 8GB(建议 16GB 或更高)。
  • 磁盘空间:50GB 可用空间。
  • CPU:支持 64 位的多核处理器。
(2) 真机调试
  • 具备支持鸿蒙系统的设备(如华为手机、平板)。
  • 开启设备的 开发者模式USB 调试
    1. 进入设备的 设置 > 关于手机,连续点击 版本号 进入开发者模式。
    2. 开发者选项 中开启 USB 调试允许 ADB 调试
(3) 安装 DevEco Studio

DevEco Studio 是官方提供的开发环境,基于 IntelliJ IDEA,支持 HarmonyOS 应用开发。

  • 下载地址:DevEco Studio 官方下载页面
  • 安装步骤
    1. 下载适合操作系统的版本。
    2. 按提示完成安装。
    3. 启动 DevEco Studio,并登录您的 华为开发者账号
(4) 安装 JDK
  • ArkTS 项目需要 JDK 环境支持:
    • 推荐使用 JDK 11JDK 8
    • 下载地址:Oracle JDK 下载
(5) 安装 HarmonyOS SDK
  1. 打开 DevEco Studio。
  2. 点击 Tools > SDK Manager
  3. SDK Platforms 中选择目标 API(如 API 9 或 API 10)。
  4. 点击 Apply 下载并安装所需的工具包。
(6) 创建签名文件

签名文件用于真机调试和发布应用。

  1. 打开 DevEco Studio。
  2. 点击 Build > Generate Signed APK
  3. 创建或导入现有签名文件(.jks 文件)。 
(7) 配置设备
  • 使用 USB 数据线连接开发设备。
  • 在 DevEco Studio 中,打开 Device Manager,确保设备状态为 Online
  • 如果设备未连接成功,请检查以下内容:
    • 安装了设备驱动程序(Windows)。
    • 开启了 开发者模式USB 调试
(8) 注册华为开发者账号
  • 前往 华为开发者官网。
  • 注册并完成 个人或企业开发者认证
  • 认证后,您可以获取更多开发资源(如 API Key 和签名文件)。

4.创建第一个鸿蒙ArkTS 应用

(1) 创建项目
  1. 打开 DevEco Studio
  2. 点击 File > New > HarmonyOS Project
  3. 选择模板:Empty Ability(ArkTS)
  4. 输入项目名称,选择设备类型(手机、智能家居等)。
(2) 项目结构
  • pages:存放页面文件(.ets)。
  • app.ets:应用的入口文件。
  • resources:存放图片、字符串等资源文件。
  • manifest.json:应用的全局配置文件。

5. ArkTS 基础示例

(1) 创建 UI 界面

pages/index.ets 中编写简单的界面代码:

// pages/index.ets
@Entry
@Component
struct IndexPage {build() {Column() {Text("Hello, HarmonyOS!").fontSize(24).fontColor(Color.Black).padding(16)Button("Click Me").onClick(() => {console.log("Button clicked!");})}}
}
(2) 运行项目
  1. 在 DevEco Studio 中启动模拟器或连接真机。
  2. 点击 Run 按钮运行应用。
  3. 观察设备上显示的 Hello, HarmonyOS! 和按钮。

6. 关键概念

(1) 组件(Component)
  • ArkTS 中的每个 UI 元素都是一个组件。
  • 组件分为:
    • 基础组件:如 TextButtonImage 等。
    • 容器组件:如 ColumnRowStack 等。
(2) 装饰器
  • @Entry:定义页面的入口。
  • @Component:声明一个组件。
(3) 布局管理
  • 使用容器组件控制元素的排列方式:
    Column() {Text("Item 1")Text("Item 2")
    }
    

(4) 状态管理

使用 @State 声明动态变量:

@Entry
@Component
struct CounterPage {@State count: number = 0;build() {Column() {Text(`Count: ${this.count}`).fontSize(20)Button("Increment").onClick(() => {this.count++;})}}
}

7. 项目配置

(1) manifest.json
  • 定义应用信息和权限:
{"app": {"bundleName": "com.example.arktsapp","version": {"name": "1.0.0","code": 1}},"deviceConfig": {"default": true},"module": {"abilities": [{"name": "MainAbility","type": "page","launchType": "standard","orientation": "unspecified"}]}
}
(2) 路由配置

app.ets 中定义路由:

@Entry
@Component
struct App {build() {Router.push({ url: 'pages/index' })}
}

8. 高级开发

(1) 分布式特性

实现多设备协作:

// 简单示例:发送消息到其他设备
import distributedData from '@ohos.data.distributedData';let kvStore = distributedData.createKVStoreSync({bundleName: 'com.example',storeId: 'testStore',
});kvStore.put('key', 'value', (err) => {if (!err) {console.log('Data saved successfully');}
});
(2) 自定义组件

创建可复用的组件:

@Component
struct CustomButton {@Prop label: string;build() {Button(this.label).fontSize(18).padding(12).backgroundColor(Color.Blue).onClick(() => {console.log(`${this.label} clicked`);})}
}
(3) 动画

为组件添加动画效果:

@Entry
@Component
struct AnimationExample {@State opacity: number = 1.0;build() {Column() {Text("Fading Text").opacity(this.opacity)Button("Fade Out").onClick(() => {this.opacity -= 0.1;})}}
}

9. 调试与发布

(1) 调试
  • 使用 console.log 输出调试信息。
  • 在 DevEco Studio 中使用调试工具实时跟踪。
(2) 发布
  1. 生成签名文件。
  2. 使用 Build > Build Bundle(s) 生成 .hap 文件。
  3. 提交到华为应用市场。

10. 学习资源

  • 官方文档:HarmonyOS 开发文档
  • 示例代码:HarmonyOS 示例项目
  • 视频教程:HarmonyOS 官方教程

11. 进阶方向

  • 分布式特性开发:学习如何在多设备之间共享数据和功能。
  • 多媒体应用:开发音视频处理功能。
  • 硬件交互:利用鸿蒙的硬件能力管理(如传感器、摄像头)。
  • 动态卡片:设计桌面小组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477212.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 145.二叉树的后序遍历

题目:给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 思路:左 右 根 代码: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tre…

GitLab|数据迁移

注意:新服务器GitLab版本需和旧版本一致 在旧服务器执行命令进行数据备份 gitlab-rake gitlab:backup:create 备份数据存储在 /var/opt/gitlab/backups/ 将备份数据传输到新服务器的/var/opt/gitlab/backups/下,并修改文件权限(下载前和上传…

实验四:构建园区网(OSPF 动态路由)

目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验步骤 1、在 eNSP 中部署网络 2、设计全网 IP 地址 3、配置二层交换机 4、配置路由交换机并测试通信 5、配置路由接口地址 6、配置 OSPF 动态路由,实现全网互通 一、实验简介 使用路由…

外卖系统开发实战:从架构设计到代码实现

开发一套外卖系统,需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例,展示如何构建一个基础的外卖系统,从需求梳理到核心模块的实现,帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…

“AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体

作者|郭源 前言 在后LLM时代,随着大语言模型和多模态大模型技术的日益成熟,AI技术的实际应用及其社会价值愈发受到重视。AI智能体(AI Agent)技术通过集成行为规划、记忆存储、工具调用等机制,为大模型装上…

C语言——break、continue、goto

目录 一、break 二、continue 1、在while循环中 2、在for循环中 三、go to 一、break 作用是终止循环&#xff0c;在循环内遇到break直接就跳出循环。 注&#xff1a; 一个break语句只能跳出一层循环。 代码演示&#xff1a; #include<stdio.h>void test01() {for (…

AR智能眼镜|AR眼镜定制开发|工业AR眼镜方案

AR眼镜的设计与制造成本主要受到芯片、显示屏和光学方案的影响&#xff0c;因此选择合适的芯片至关重要。一款优秀的芯片平台能够有效提升设备性能&#xff0c;并解决多种技术挑战。例如&#xff0c;采用联发科八核2.0GHz处理器&#xff0c;结合12nm制程工艺&#xff0c;这种低…

设计LRU缓存

LRU缓存 LRU缓存的实现思路LRU缓存的操作C11 STL实现LRU缓存自行设计双向链表 哈希表 LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;缓存是一种常见的缓存淘汰算法&#xff0c;其基本思想是&#xff1a;当缓存空间已满时&#xff0c;移除最近最少使…

自动驾驶3D目标检测综述(三)

前两篇综述阅读理解放在这啦&#xff0c;有需要自行前往观看&#xff1a; 第一篇&#xff1a;自动驾驶3D目标检测综述&#xff08;一&#xff09;_3d 目标检测-CSDN博客 第二篇&#xff1a;自动驾驶3D目标检测综述&#xff08;二&#xff09;_子流行稀疏卷积 gpu实现-CSDN博客…

MySQL数据库学习(持续更新ing)

1. 什么是数据库&#xff1f;什么是数据库管理系统&#xff1f;什么是SQL&#xff1f;他们之间的关系是什么&#xff1f; 数据库&#xff1a;Database&#xff0c; 简称DB。按照一定格式存储数据&#xff0c;一些文件的组合。 数据库管理系统&#xff1a;DataBaseManagement&…

【线程】Java线程操作

【线程】Java线程操作 一、启动线程1.1 run()和start()的区别 二、终止线程三、等待线程四、线程的状态 一、启动线程 Java中通过start()方法来启动一个线程&#xff0c;其次我们要着重理解start()和run()的区别。 1.1 run()和start()的区别 我们通过一份代码来进行观察&…

MySQL学习/复习10视图/用户/权限/语言连接数据库

一、视图 1.1创建视图 1.2视图影响基表 1.3基表影响视图 1.4删除视图 1.5视图使用规则 二、数据库的用户 2.1mysql中的user表 注意事项&#xff1a;主机/用户名/密码/权限 2.2用户的创建 注意事项&#xff1a;设置密码与登录地点需谨慎 2.3删除用户 注意事项&#xff1a;% 2.4…

Python 中的三重引号

Python 中的三重引号&#xff0c;我之前以为只有长注释的作用&#xff0c;仔细查了下&#xff0c;原来还有给函数、类添加说明的作用。这个功能太好了&#xff0c;大大增加了代码的可读性。 具体的作用&#xff0c;总计如下。 1. 定义长字符串 其实三重引号的最直接作用是用…

rust中解决DPI-1047: Cannot locate a 64-bit Oracle Client library问题

我们在使用rust-oracle crate连接oracle进行测试的过程中&#xff0c;会发现无法连接oracle&#xff0c;测试运行过程中抛出“DPI-1047: Cannot locate a 64-bit Oracle Client library”错误。该问题是由于rust-oracle需要用到oracle的动态连接库&#xff0c;我们通过安装orac…

Python + 深度学习从 0 到 1(00 / 99)

希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持&#xff01; ⭐ 什么是深度学习&#xff1f; 人工智能、机器学习与…

太通透了,Android 流程分析 蓝牙enable流程(应用层/Framework/Service层)

零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0c;加上网络上其实没有一个完整的介绍Bluedroid系列的文档&#xff0…

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;MySQL课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 MySQL在Centos 7环境下的安装&#xff1a; 卸载…

安宝特分享 | 如何利用AR技术革新医疗实践:从远程急救到多学科协作

AR技术在国内外医院的应用 在现代医疗环境中&#xff0c;患者面临的挑战依然严峻&#xff1a;看病难、看病远、看病急。这些问题不仅影响了患者的治疗效果&#xff0c;也让医务工作者倍感压力。幸运的是&#xff0c;随着增强现实&#xff08;AR&#xff09;技术的发展&#xf…

macOS 无法安装第三方app,启用任何来源的方法

升级新版本 MacOS 后&#xff0c;安装下载的软件时&#xff0c;不能在 ”安全性与隐私” 中找不到 ”任何来源” 选项。 1. 允许展示任何来源 点击 启动器 (Launchpad) – 其他 (Other) – 终端 (Terminal)&#xff1a; 打开终端后&#xff0c;输入以下代码回车&#xff1a; …

Rust中Tracing 应用指南

欢迎来到这篇全面的Rust跟踪入门指南。Rust 的tracing是一个用于应用程序级别的诊断和调试的库。它提供了一种结构化的、异步感知的方式来记录日志和跟踪事件。与传统的日志记录相比&#xff0c;tracing能够更好地处理复杂的异步系统和分布式系统中的事件跟踪&#xff0c;帮助开…