鸿蒙系统应用开发全栈指南
一、开发环境搭建与工具链配置
1. DevEco Studio深度解析
作为鸿蒙生态的官方IDE,DevEco Studio 4.2版本已集成ArkTS 3.0编译器与AI代码助手功能。安装过程需注意:
- 系统要求:Windows 10 21H2或macOS Monterey以上
- 环境依赖:Node.js 18.x + JDK 17组合。
- 设备模拟器:支持多设备协同调试模式,可同时模拟手机、手表、智慧屏的联动操作。
2. 工程模板选择策略
根据项目类型选择适配模板:
- 单设备应用:推荐使用Empty Ability模板
- 跨设备服务:选用Service Template模板
- 元服务开发:使用Atomic Service模板
二、核心技术体系解析
1. 分布式架构实现原理
鸿蒙的分布式能力构建在三大技术支柱之上:
- 分布式软总线:实现设备间毫秒级发现与认证
- 分布式数据管理:支持跨设备数据库同步
- 分布式任务调度:动态迁移应用组件到最优设备
// 跨设备文件共享示例
import distributedFile from '@ohos.file.distributedFile';
async function shareToTV(deviceId: string) {const file = await distributedFile.createDistributedFile(localPath);await file.transfer(deviceId, (progress) => {console.log(`传输进度: ${progress}%`);});
}
2. ArkUI 3.0框架特性
新一代声明式UI框架核心改进:
- 渲染优化:NODE树合并技术提升45%滑动流畅度
- 组件扩展:新增AI画布、3D模型渲染组件
- 状态管理:@Observed + @ObjectLink实现双向绑定
三、典型开发模式实践
1. 单设备应用开发流程
- Ability规划:Page Ability处理界面,Service Ability后台服务
- UI构建:采用ArkTS声明式布局
- 数据持久化:使用RDB关系型数据库
- 设备能力调用:通过AbilityRouter访问传感器
2. 跨设备服务开发要点
- 能力发现:使用distributedDeviceManager扫描设备
- 任务迁移:通过continueAbility()实现无缝流转
- 数据同步:采用分布式DataObject对象
四、进阶开发技巧
1. 性能优化策略
优化方向 | 实现方案 | 效果提升 |
---|---|---|
首屏加载 | 预加载+按需渲染 | 启动速度↑30% |
内存管理 | 对象池+弱引用 | 内存占用↓40% |
线程调度 | Worker线程+任务优先级 | 响应延迟↓50% |
2. AI能力集成
鸿蒙AI Kit提供四大核心模块:
- 自然交互:语音识别+手势控制
- 智能视觉:图像分类+OCR识别
- 环境感知:场景识别+行为预测
- 设备协同:多设备AI算力聚合
五、实战项目参考
1. 音乐播放器开发要点
- 核心功能:跨设备播放控制+歌词同步
- 技术亮点:使用AVSession管理媒体播放
- 界面设计:3D专辑封面旋转效果
2. 智能家居控制中心
- 设备接入:通过HiLink协议接入生态产品
- 场景联动:创建自动化规则链
- 安全机制:多级权限控制体系
六、调试与发布
1. 真机调试技巧
- 无线调试:通过hdc_std connect实现
- 性能分析:使用SmartPerf工具
- 异常捕获:集成HiLog日志系统
2. 应用上架流程
- 申请发布证书
- 通过AppGallery Connect检测
- 元服务原子化封装
- 多设备自适应测试
扩展学习路径:
- 开源项目参考:仿网易云音乐、小狐狸浏览器
- 进阶书籍推荐:《鸿蒙HarmonyOS应用开发从入门到精通》
- 实战案例库:华为开发者联盟官网(每日更新最新案例)
相关文章:
鸿蒙系统应用开发全栈指南
一、开发环境搭建与工具链配置 1. DevEco Studio深度解析 作为鸿蒙生态的官方IDE,DevEco Studio 4.2版本已集成ArkTS 3.0编译器与AI代码助手功能。安装过程需注意: 系统要求:Windows 10 21H2或macOS Monterey以上环境依赖:Node…...
STC32裸机项目集成FreeRTOS的实战问题解析
目录 🍅点击这里查看所有博文 随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记…...
振弦式应变计在混凝土结构长期监测中的应用与特点 久岩传感 GEO-explorer
振弦式应变计在混凝土结构长期监测中的应用与特点 久岩传感 GEO-explorer 振弦式应变计是一种专为长期埋设于水工建筑物及各类混凝土结构内部而设计的测量仪器,可广泛应用于梁体、柱体、桩基、挡土墙、隧道衬砌、桥墩及基岩等结构的应变与应力监测,同时具…...
AVFormatContext 再分析
说明 :将 avfromatContext 的变量依次打印分析,根据ffmpeg 给的说明,猜测,结合网上的文章字节写测试代码分析。 从常用到不常用依次分析 1. unsigned int nb_streams; 代表 avfromatContext 中 AVStream **streams 的个数 /** …...
力扣hot100,739每日温度(单调栈)详解
时隔多久又遇到单调栈的题了,上次记得是接雨水的题,简单讲一下单调栈的适用场景和定义。 意义:看名字就知道单调栈是一个栈里面的数据是单调的 。 解决问题: 单调栈主要用于解决需要**快速找到某个元素附近更大或更小的元素**的问题,其核心…...
怎么检测代理IP延迟?如何选择低延迟代理?
在跨境电商、数据采集以及社交媒体管理等活动中,代理IP的延迟是评估其性能的关键指标之一。高延迟的代理IP可能显著影响任务效率,特别是在需要高并发或大量请求的情况下。本文将介绍几种测试海外代理IP延迟的方法。 一、使用Ping命令测试延迟 Ping命令…...
QEMU 10.0 发布
QEMU 10.0 于 2025 年 4 月 23 日发布。此版本包含 2800 多个提交,来自 211 位作者。以下是一些主要的更新内容: CPU 和主板支持增强 x86 架构:优化了字符串操作指令,显著缩短启动时间。新增了 Intel Clearwater Forest 和 Sierra…...
C++和Java该如何选择?
我真诚的建议你选择C。因为国内Java程序员内卷太严重了,某些公司发布一个Java岗位,立刻就有几百人打招呼;而发布一个C岗位,打招呼的人数就那么十几个。 要知道,无论什么时候,只要你能够学得动C,…...
Javase 基础入门 —— 06 final + 单例
本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。 01 final 关…...
web 开发中,前端部署更新后,该怎么通知用户刷新
web 开发中,前端部署更新后,该怎么通知用户刷新? 浏览器为什么存在刷新按钮?🔘 因为需要重新加载js,css,html。但为何需要重新加载这些东西?直白点说这些东西其实就是一个文档&…...
LaTex、pdfLaTex、XeLaTex和luaLaTex的区别和联系
之前一直搞不懂这些乱七八糟的Tex到底有啥区别,不同引擎不同编译器换来换去,查了些资料又问了下AI,总算是搞懂了。 大概是这样,很久以前有人写了个Tex排版引擎,输入一些代码命令,输出dvi文件(设…...
深入解析 npm 与 Yarn:Node.js 包管理工具对比与选型指南
在 Node.js 生态中,依赖管理是项目开发的核心环节。npm(Node Package Manager)和 Yarn 作为两大主流包管理工具,虽目标一致但各有特色。本文将从技术实现、使用场景、生态整合等维度深度对比,助你选择更适合的工具。…...
PDF嵌入图片
所需依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>9.0.0</version><type>pom</type> </dependency>源码 /*** PDF工具*/ public class PdfUtils {/*** 嵌入图…...
Coding Practice,48天强训(24)
Topic 1:判断是不是平衡二叉树(递归) 判断是不是平衡二叉树_牛客题霸_牛客网 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** 代码中的类名、方法名、参数名已经指定,请勿修改&…...
技术分享 | Oracle-RAC修改IP信息
本文为墨天轮数据库管理服务团队第61期技术分享,内容原创,作者为技术顾问胡振兴,如需转载请联系小墨(VX:modb666)并注明来源。 在生产中有时候会遇到网络变更,Oracle RAC IP信息更换等情况&…...
北京工业大学25计专上岸经验分享
1.个人情况介绍 本科就读于河北双非,专业为计算机科学与技术,四级三次498,六级两次460,拿过几次校级奖学金,竞赛经历有蓝桥杯国三、数学竞赛省二。本科成绩排名靠前,保研保7排8,遗憾选择考研继…...
rabbitmq常用命令
目录 1.查看集群状态 2.查看消息对列的堆积 3.重启mq服务 4.清理mq队列消息 1.查看集群状态 rabbitmqctl cluster_status 2.查看消息对列的堆积 rabbitmqctl list_queues rabbitmqctl list_queues | grep -v 0$ 3.重启mq服务 systemctl status rabbitmq-server.servic…...
Spring Cloud Alibaba 整合 Sentinel:实现微服务高可用防护
一、Sentinel 简介 Sentinel 是阿里巴巴开源的面向分布式服务架构的流量控制组件,主要提供以下核心功能: 流量控制:针对不同的调用关系,以不同的运行指标(如 QPS、线程数、系统负载等)为基准,对…...
机器人抓取位姿检测——GRCN训练及测试教程(Pytorch)
机器人抓取位姿检测——GRCN训练及测试教程(Pytorch) 这篇文章主要介绍了2020年IROS提出的一种名为GRCN的检测模型,给出了代码各部分的说明,并给出windows系统下可以直接复现的完整代码,包含Cornell数据集。 模型结构图 github源码地址:https://github.com/skumra/robo…...
《一键式江湖:Docker Compose中间件部署108式》开篇:告别“配置地狱”,从此笑傲云原生武林!》
(🗡️江湖险恶,少侠可曾受困?) 深夜🌙,你盯着屏幕泛红的终端报错,第3次从GitHub某个无名仓库扒下残缺的docker-compose.yaml, 却发现: RabbitMQ连不上&#…...
C语言内敛函数
目录 1、内敛函数的定义 2、内敛函数的特点 2.1 减少函数调用开销 2.2 代码膨胀 2.3 编译器决定 2.4 适用于小型函数 3、示例 4、注意事项 在C语言中,内敛函数(Inline Function)是一种通过编译器优化来减少函数调用开销的机制。它通过…...
DAY8-GDB调试及打桩
GDB打桩 1.类成员函数打桩 // example1.cpp #include <iostream>class Calculator { public:int add(int a, int b) {return a b;} };int main() {Calculator calc;std::cout << "Result: " << calc.add(2, 3) << std::endl;return 0; }(…...
三、UI自动化测试03--操作方法API
目录 一、元素操作⽅法二、浏览器操作⽅法1. Part1: 设置最⼤化/⼤⼩/位置扩展: Web/APP 项⽬⻚⾯布局坐标系示意2. Part2: 后退/前进/刷新3. Part3: 关闭/退出/获取⻚⾯标题和 URL 地址 三、获取元素信息⽅法1. Part1: 获取⼤⼩/⽂本/属性值2. Part2: 判断元素是否可⻅/可⽤/可…...
人工智能—— K-means 聚类算法
目录 摘要 16 K-means 聚类算法 16.1 本章工作任务 16.2 本章技能目标 16.3 本章简介 16.4 编程实战 16.5 本章总结 16.6 本章作业 本章已完结!!! 摘要 本章实现的工作是:首先采用Python语言读取样本数据(学生的语文、数…...
使用XMLSpy校验xml是否合法
# 背景说明 近期大部分地区都在做或将要做数据迁移,基本所有产品的迁移工具底层都依赖了XSD文件对迁移的结构化数据对应XML文件进行初步校验,但有些XSD的问题提示不太容易理解,正好N年前我做XX数据上报时用过XMLSpy可以直接校验每个xml是否合…...
游戏引擎学习第248天:清理数据块显示
启动代码,构建游戏,回顾并为今天的工作做好准备 今天还需要做一些额外的调整。具体来说,我们希望能编辑一些调试值,而这个结构在当前的调试系统中已经有了,所以今天主要是清理一些无关的部分,并进行一些连…...
基于Pytest接口自动化的requests模块项目实战以及接口关联方法详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、基于pytest单元测试框架的规则 1.1 模块名(即文件名)必须以test_开头或者_test结尾 1.2 类名必须以Test开头且不能有init方法 1.3 用…...
腾讯 Kuikly 正式开源,了解一下这个基于 Kotlin 的全平台框架
在 3月的时候通过 《腾讯 TDF 即将开源 Kuikly 跨端框架,Kotlin 支持全平台》 我们大致知道了 Kuikly 的基本情况,Kuikly 是一个面向终端技术栈的跨端开发框架,完全基于kotlin语言开发,提供原生的性能和体验。 按照官方的说法&…...
【c++】AVL树模拟实现
简介 AVL树是最先被发明出来的自平衡二叉查找树,在1962由前苏联科学家G. M. Adelson-Velsky和E. M. Landis在论文中发表。AVL树中引入了平衡因子,每一个节点都有一个平衡因子(一般是右子树高度 - 左子树高度);AVL树要…...
具身智能模型开发训练技法之仿真平台动捕数据重定向
具身智能大模型的开发与训练高度依赖大量的数据输入,形象地说,如同需要持续的“数据喂养”。只有经过不断地进行数据积累和模型训练,具身智能大模型才能够实现自主感知、自主决策以及自主执行的完整进程。在多样化的数据形态中,真…...
手撕——贪吃蛇小游戏(下)
引言 上一章介绍了实现贪吃蛇小游戏必备的知识点。 这章,让我们一起开启手搓核弹之旅吧。 先附上贪吃蛇代码的git:贪吃蛇小游戏_4_23 Shown_shuai/learn_c - 码云 - 开源中国 (gitee.com) 上一章的窗口: 手撕——贪吃蛇小游戏࿰…...
C++ 类与对象(中)—— 默认成员函数与运算符重载的深度解析:构造函数,析构函数,拷贝构造函数,赋值运算符重载,普通取地址重载,const取地址重载
在 C 中,类的默认成员函数是编译器自动生成的重要机制,合理利用这些函数可以简化代码编写,同时避免资源管理错误。本文将从构造函数、析构函数、拷贝构造函数、赋值运算符重载等核心内容展开,结合具体案例深入解析。 一、默认成员…...
【Jupyter 启动时如何指定目录】
你在 Windows 系统下运行 jupyter notebook 时,遇到了 Jupyter Notebook 打开的目录不是你想要的 E:\desktop\yolo-study,而是其他路径。这可能是由于 Jupyter 的默认配置问题 或 启动路径问题 导致的。 🔍 原因分析 Jupyter 默认根目录设置错…...
PostSwigger Web 安全学习:CSRF漏洞2
CSRF 漏洞学习网站:What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy CSRF 漏洞:SameSite相关绕过 当浏览器访问服务器时,服务器会在 Cookie 中添加 SameSite 属性来告诉浏览器是否在来自其他…...
openharmony—4.1 softbus_tool 工具编译使用测试笔记(持续更新)
相关资料: 1.communication_dsoftbus: 暂无描述 - Gitee.com 2.dsoftbus_tool: OpenHarmony 分布式软总线样例 3.OpenAtom OpenHarmony 4.OpenAtom OpenHarmony 编译该demo之前需要大家搭建拉取openharmony源码,搭建开发环境,同时全…...
关于 Web 服务器的五个案例
一、案例题目: 1.多 IP 访问多网站(在 RHCE 练习二中的实验二) 2.多端口访问多网站 3.多域名访问多网站 4.虚拟目录和用户控制 5.https/443 二、案例实验 2.多端口访问多网站 ① 开始还是先关闭我们的防火墙以及 selinux [rootserve…...
第十二章-PHP文件上传
第十二章-PHP文件上传 一,文件上传原理 一、HTTP协议与文件上传 1. 请求体结构 当表单设置enctype"multipart/form-data"时,浏览器会将表单数据编码为多部分(multipart)格式。 Boundary分隔符:随机生成的…...
shell脚本部署disu博客
#!/bin/bash #关闭防火墙 systemctl status firewalld &>/dev/null if [ $? -ne 0 ];then systemctl stop firewalld &>/dev/null else echo “firewalld is disabled” fi #关闭selinux filegetenforce if [ “$fine” “Disabled” ];then echo “firewalld…...
NdrpPointerUnmarshallInternal函数分析之pFormatPointee指针的确定
第一部分: 0: kd> p RPCRT4!NdrPointerUnmarshall0x29: 001b:77c46ce4 e8b6f6ffff call RPCRT4!NdrpPointerUnmarshall (77c4639f) 0: kd> t Breakpoint 4 hit RPCRT4!NdrpPointerUnmarshall: 001b:77c4639f 55 push ebp 0: kd> …...
STM32(M4)入门:定时器延时与系统滴答(价值 3w + 的嵌入式开发指南)
第 1 章 延时:嵌入式系统的时间控制基石 1.1 延时基础:从概念到硬件实现 1.1.1 什么是延时? 定义:延时是通过软件或硬件手段,使程序执行过程中暂停指定时间,再继续后续操作的技术。本质是对时间的精确或…...
2025 FIC wp
这次比赛计算机和手机大部分题目都比较常规 第一和第四部分有点让人摸不着头脑 比赛的时候第一部分有四个题没出 第四部分基本都没怎么出 现在复盘一下 把我当时做题的心得和获取的新知识记录一下 互联网取证的部分就先学习一下别的师傅 检材 链接:https://pan.bai…...
STM32标准库和HAL库SPI发送数据的区别-即SPI_I2S_SendData()和HAL_SPI_Transmit()互换
1、标准库SPI初始化 这是标准库的SPI初始化配置 2、HAL库SPI初始化 这是HAL库函数的SPI初始化配置 可以看出,基本一直,除了 基本的io口配置区别,其他主要的读写函数不用动的。 3、SPI发送函数_替换对比 /* SPI写入一个字节 */ void SP…...
Cesium 三维场景中通过自定义着色器实现多种特效(纹理、光带、点光源、反射)
整体功能概述 构建一个基于 Cesium 的三维场景,加载三维瓦片集模型,同时提供多种特效,像夜景纹理、上下扫光、点光源以及反射纹理等,利用 dat.gui 库创建交互界面。 代码详解 白膜特效 nightFs.glsl void fragmentMain(Fragm…...
Java学习--HashMap
HaspMap是Java集合框架中最重要、最常用的数据结构之一。其基于哈希表实现了Map接口,在Java1.8的版本中,其采用了“数组链表红黑树”的混合结构,底层代码如下: transient Node<K,V>[] table; // 哈希桶数组 static class N…...
Monorepo、Lerna、Yarn Workspaces、pnpm Workspaces 用法
Monorepo 介绍 Monorepo是一种方案,而非具体的工具。 Monorepo指的是将多个相关的项目或模块放在同一个代码仓库中进行管理的方式。这种方案有以下优点: 方便代码共享:不同项目或模块之间可以方便地共享代码、组件、工具函数等,…...
JVM指令手册:深入理解字节码执行机制
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 Java虚拟机(JVM)作为Java生态的核心执行引擎,其指令系统是理解程序底层运行机制的关键。本手册将系统解析JVM指令集…...
springboot logback 默认加载配置文件顺序
在 Spring Boot 应用中,Logback 默认加载配置文件的顺序遵循特定的规则。以下是详细的加载顺序和优先级说明: 1. 默认配置文件加载顺序 Logback 在 Spring Boot 中会按以下顺序查找并加载配置文件(优先级从高到低): l…...
用 Nodemon 解决 npm run serve 频繁重启服务
Nodemon 是一个基于 Node.js 构建的开发工具,专为帮助开发者自动监控项目文件的更改而设计。每当文件发生变更时,Nodemon 会自动重启 Node.js 服务器,无需手动停止并重启。这对于提升开发速度、减少人工操作非常有帮助,尤其适用于…...
WEB安全--社会工程--SET钓鱼网站
1、选择要钓鱼的网站 2、打开kali中的set 3、启动后依次选择: 4、输入钓鱼主机的地址(kali)和要伪装的网站域名: 5、投放钓鱼网页(服务器域名:80) 6、获取账号密码...
系统架构师---基于规则的系统架构
引言 在业务规则高度动态且需快速响应的系统中,基于规则的系统架构风格(Rule-Based System Architecture Style)提供了一种将业务逻辑与代码解耦的标准化范式。从保险理赔的自动化审核到金融风控的实时拦截,规则引擎已成为企…...