
openHarmony
文章平均质量分 80
普通网友
这个作者很懒,什么都没留下…
展开
-
鸿蒙OH实战开发:基于Refresh组件的下拉刷新
整体思路:首先需要用装饰器@builder自定义构建一个函数,然后跟refresh的接口builder进行绑定Refresh({refreshing:$$this.isRefreshing,builder:this.customRefreshComponent()}),最后将通过refresh的系列回调逐步实现下拉过程中图标的动态变化。实现页面下拉刷新距离回调以及刷新距离自定义。原创 2025-01-09 16:43:30 · 646 阅读 · 0 评论 -
鸿蒙OH实战开发:UI 扩展组件-跨越界限的舞台
这就是嵌入式 UI 扩展组件所能实现的功能,它可以将另一个 UIAbility 的界面嵌入到当前 UIAbility 的页面中,实现跨越进程界限的界面嵌入,为用户带来更加丰富和便捷的交互体验。在鸿蒙系统的舞台上,UIAbility 组件是主角,负责与用户进行交互,而嵌入式 UI 扩展组件则是舞台上的配角,负责扩展应用的功能,并实现跨越进程界限的界面嵌入,为用户带来更加丰富和便捷的交互体验。:嵌入式 UI 扩展组件运行在独立的进程中,与其他 UIAbility 的进程隔离,提高了系统的安全性和稳定性。原创 2024-12-23 13:45:32 · 858 阅读 · 0 评论 -
鸿蒙OH实战开发:ExtensionAbility 组件——扩展应用功能的舞台
鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。原创 2024-12-22 20:32:20 · 1082 阅读 · 0 评论 -
鸿蒙OH实战开发:UIAbility 组件构建用户界面的舞台
UIAbility 是华为鸿蒙系统中用于构建用户界面的应用组件,它负责创建和管理界面元素,响应用户操作,并与用户进行交互。UIAbility 组件可以包含一个或多个页面,每个页面都可以独立加载和卸载,方便地进行界面管理和功能扩展。UIAbility 组件的主要功能:界面渲染:UIAbility 组件可以使用 ArkUI 库提供的各种组件构建用户界面,例如按钮、文本、图片、列表等。事件处理:UIAbility 组件可以监听和处理各种用户事件,例如点击、触摸、滑动等。数据绑定。原创 2024-12-22 18:54:45 · 1012 阅读 · 0 评论 -
鸿蒙OH实战开发:轻量型系统服务管理部件
由于平台资源有限,且硬件平台多样,因此需要屏蔽不同硬件架构和平台资源的不同、以及运行形态的不同,提供统一化的系统服务开发框架。根据RISC-V、Cortex-M、Cortex-A不同硬件平台,分为两种硬件平台,以下简称M核、A核。M核:处理器架构为Cortex-M或同等处理能力的硬件平台,系统内存一般低于512KB,无文件系统或者仅提供一个可有限使用的轻量级文件系统,遵循CMSIS接口规范。原创 2024-12-21 22:13:10 · 547 阅读 · 0 评论 -
鸿蒙OH实战开发:自绘编辑框开发指南 (C/C++)
IME Kit支持开发者使用自绘组件开发自定义编辑框,与输入法应用交互,包括显示、隐藏输入法,接收来自输入法应用的文本编辑操作通知等,本文档介绍开发者如何使用C/C++完成此功能开发。原创 2024-12-21 20:27:32 · 497 阅读 · 0 评论 -
鸿蒙OH实战开发:在自绘编辑框中使用输入法
在输入法框架中,可以通过 getController 方法获取到 InputMethodController 实例来绑定输入法并监听输入法应用的各种操作,比如插入、删除、选择、光标移动等。这样就可以在自绘编辑框中使用输入法,并实现更加灵活和自由的编辑操作。原创 2024-12-21 19:06:37 · 245 阅读 · 0 评论 -
鸿蒙OH实战开发:实现一个输入法应用
InputMethodService.ts文件。在InputMethodService.ts文件中,增加导入InputMethodExtensionAbility的依赖包,自定义类继承InputMethodExtensionAbility并加上需要的生命周期回调。// 初始化窗口并注册对输入法框架的事件监听// 销毁窗口并去注册事件监听KeyboardController.ts文件。原创 2024-12-20 20:35:29 · 917 阅读 · 0 评论 -
鸿蒙OH实战开发:IPC通信开发指南(C/C++)
IPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,而IPC CAPI是提供的C接口。IPC CAPI接口不直接提供跨进程通信能力,两个进程之间的IPC通道建立,依赖于 Ability Kit。0x0201OTHER_CODE// 定义内存分配函数。原创 2024-12-20 17:56:32 · 1039 阅读 · 0 评论 -
鸿蒙OH实战开发:远端状态订阅开发实例
IPC/RPC提供对远端Stub对象状态的订阅机制,在远端Stub对象消亡时,可触发消亡通知告诉本地Proxy对象。正向的消亡通知是Proxy感知Stub的状态,若想达到反向的死消亡通知,即Stub感知Proxy的状态,可以巧妙的利用正向消亡通知。如两个进程A(原Stub所在进程)和B(原Proxy所在进程),进程B在获取到进程A的Proxy对象后,在B进程新建一个匿名Stub对象(匿名指未向SAMgr注册),可称之为回调Stub,再通过SendRequest接口将回调Stub传给进程A的原Stub。原创 2024-12-20 16:07:50 · 706 阅读 · 0 评论 -
鸿蒙OH实战开发:IPC与RPC通信
IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,包括Proxy和Stub运行在不同设备的情况。原创 2024-12-20 14:51:16 · 702 阅读 · 0 评论 -
鸿蒙OH实战开发:使用hdc TCP模式无线方式连接OpenHarmony设备
本文将介绍如何使用hdc工具 tcp模式以无线的方式连接OpenHarmony设备。将usb线将OpenHarmony设备和电脑端连接,并且将两个连接至同一个局域网。原创 2024-12-20 13:52:17 · 369 阅读 · 0 评论 -
鸿蒙OH实战开发:XTS测试与报错解决
等待设备重启,hdc shell进入设备控制台,执行attesttestclient,看到 authResult [0]、 softwareResult [0]说明验证通过。仔细核对,尤其是厂商名称不在产品信息页面,在认证信息界面。ACTS测试项很多,建议先统一测试一遍,错的再单独测试。有时测试遇到authResult [-2],可能是测试的服务器拥堵,(实测周末测试效率很高。有时测试遇到authResult [-1],可能因为平台申请的证书过期了(7天过期),此时只需更换tokenA即可。原创 2024-12-19 22:18:21 · 2025 阅读 · 0 评论 -
鸿蒙OH实战开发:测试适配的HDF驱动
可以基于open、write操作gpio,也可以基于HDI硬HDI件驱动接口操作GPIO,具体代码见applications/sample/taget_board/app/gpio/src/hdf_gpio_test.c。编译配置,applications/sample/taget_board/app/adc/BUILD.gn,参考gpio,只需修改如下内容。注:硬件不同,但可参考流程。实测:PwmOpen(0) 为PWM0_0 PwmOpen(1)为PWM0_1,PwmOpen(2)原创 2024-12-19 21:14:40 · 1044 阅读 · 0 评论 -
鸿蒙OH实战开发:如何添加新的芯片架构到OH编译工具链
将目标芯片的交叉编译工具链压缩包解压到OH源码指定的目录中(kernel/linux/build/kernel.mk中KERNEL_TARGET_TOOLCHAIN我们指定了编译路径为prebuilts/linux-x86/csky/bin),以本机为例,在。OpenHarmony中的编译工具链支持arm、arm64等架构的CPU,如果适配的芯片架构不同(如csky),需要新增其他架构类型的CPU到编译框架。在build/lite/BUILD.gn中定义了如下内容问题出在。文件夹,解压交叉编译工具链到。原创 2024-12-19 16:40:22 · 375 阅读 · 0 评论 -
鸿蒙OH实战开发:OpenHarmony三方内核移植
如下图所示,OpenHarmony 内核层主要包含OH Linux内核、OH内核态特性。OH 默认Linux内核为5.10,为保证稳定性,移植OH时使用目标芯片的原生内核,在此基础上添加OH内核态基础代码、OH内核态特性。1.在 kernel/linux/patches/linux-4.19/common_patch/hdf.patch中添加针对csky的补丁,方法1需要制作补丁文件,因为需要找到目标芯片的linux内核、OH内核提交hdf补丁的pr,因为难以寻找,故选择方法2,手动添加。原创 2024-12-19 14:58:13 · 680 阅读 · 0 评论 -
鸿蒙OH实战开发:OpenCV应用样例开发
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它由一系列的 C 函数和少量 C++ 类构成,同时提供 Python、Java 和 MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。原创 2024-12-19 13:44:47 · 1039 阅读 · 0 评论 -
鸿蒙OH实战开发:蓝牙Socket应用开发案例
客户端传送次数和包长度可供选择,每次传输 102 个包,包中数组元素为 0-101,如第一个包中元素皆为 0,长度为应用界面规定长度,以此类推,客户端计算发包 1~100 的发包的发包个数和长度,共发送字节为收到的长度的累加。相比之下,包长为 10 字节时的传输速率较低,其原因可能是:每次回调中内存包含 1 到 100 的每次回调包含数据较少,而较小的数据包可能会导致更多的头部信息和开销,从而降低实际的传输速率。先点击“测试 Socket 服务端”按钮,再点击“测试 Socket 客户端”按钮;原创 2024-12-18 21:34:11 · 695 阅读 · 0 评论 -
鸿蒙OH实战开发:OH 5.0-Release新增支持Linux-6.6内核
8G内存的Dayu200开发板,烧录默认的 uboot 镜像会有图像异常的情况如下左图所示,单独烧录这里提供的:https://gitee.com/liangkzgitee/Hihope_Product_Images/tree/master/HiHope_DAYU200 uboot镜像之后可正常显示,版本信息如下右图所示。默认要编译sdk,因为 //applications/standard/dlp_manager 这个应用需要依赖sdk。重新编译,再按常规的烧录流程进行烧录即可。原创 2024-12-18 20:28:18 · 350 阅读 · 0 评论 -
鸿蒙OH实战开发:窗口子系统基本概念与流程分析
设置全屏可以通过 ets 调用 window.setFullScreen(true),window 会占满全屏,并且状态栏与导航栏会消失。接下来来看看底层是如何实现的。setFullScreen 会走到 WindowImpl 中,其中主要做了 3 件事通过 SetSystemBarProperty 将状态栏与导航栏的 enable 置为 false代码会调用到 WindowController::SetWindowMode 内,其中会对 mode 做一些判断。原创 2024-12-18 17:58:57 · 904 阅读 · 0 评论 -
鸿蒙OH实战开发:OpenHarmony_LiteOS-M内核移植
LiteOS-M 内核是面向轻量级物联网操作系统内核。具有小体积、低功耗、高性能的特点。根据与硬件相关性,主要分为以下两大块:硬件相关层arch 向上提供统一的 HAL 接口。以及 HAL 硬件及平台相关接口的实现硬件无关层Kernel: LiteOS 内核源码,任务调度、信号量等实现Componets 可选组件,网络、文件系统等模块Utils 工具相关,提供错误处理、调测等能力KAL 内核抽象层。向上层提供标准的操作系统接口组织结构如下图所示:├── arch # 内核指令架构层目录。原创 2024-12-18 16:13:09 · 927 阅读 · 0 评论 -
鸿蒙OH实战开发:依据OpenHarmony构建体系的一次实践
一般有两种解决方案,一是移植安卓架构下的功能到 OpenHarmony,二是自己重新实现,这两种方法都离不开基于 OpenHarmony 的构建体系,但是按照 OpenHarmony 官方上面的文档有一部分是不能编译成功的(我试的是这样,也需你可以成功构建),所以我按照源码中的构建方法总结出以下构建实践心得,如有错误,望指出!原创 2024-12-18 15:06:54 · 581 阅读 · 0 评论 -
鸿蒙OH实战开发:LiteOS启动流程分析(基于V3LTS版本)
对于 ARMV6K 和 ARMv7 版本,offset 保存在 TPIDRPRW 寄存器中,这样是为了提升系统性能。原创 2024-12-18 13:56:38 · 989 阅读 · 0 评论 -
鸿蒙OH实战开发:鸿蒙设备启动流程之服务与应用启动流程简析
当设备被插入或移除时,内核会通过 uevent(用户空间事件)机制发送消息给 ueventd。ueventd 作为系统服务的一部分,负责监听这些netlink事件,并根据接收到的事件类型动态管理相应的设备节点。原创 2024-12-17 22:39:31 · 867 阅读 · 0 评论 -
鸿蒙OH实战开发:鸿蒙内核系统调用hats测试用例编写指南
根据 accept4 属于 net 类,因此在 test/xts/hats/kernel/syscalls 目录下创建 net 目录,然后在 net 目录下创建 accept4 目录,同步修改各自的 BUILD.gn。在 test/xts/hats/kernel/syscalls/net/accept4 目录下添加以下文件内容。accept4 接口为网络通信中使用,当前归类到 net,其他接口同样要区分其类别,如果不清楚可讨论划分。以 accept4 接口为例,实现一个 demo 用例的过程。原创 2024-12-17 21:13:38 · 719 阅读 · 0 评论 -
鸿蒙OH实战开发:OpenHarmony 标准系统 mipi 摄像头适配
本文档以 rk3568 为例,讲述如何在 OpenHarmony 标准系统 rk 设备上适配 mipi 摄像头。原创 2024-12-17 20:31:19 · 510 阅读 · 0 评论 -
鸿蒙OH实战开发:ohos.net.http请求HttpResponse header中set-ccokie值被转成array类型
通过上面的源码分析,使用ohos.net.http的api发送http请求,ohos.net.http的实现中将响应头的set-cookie字段数据做了针对处理,创建成了array类型回调到ts层。后来咨询了华为,得到的回复:响应头中set-cookie可能有多个值,但header对象中属性名不能重复,所以将set-cookie解析成数组。不过,确实是挖了个坑。我们也只能在使用http.request的响应回调中再对header对象的set-cookie属性特殊处理。原创 2024-12-17 16:40:44 · 537 阅读 · 0 评论 -
鸿蒙OH实战开发:Flutter使用Ohos原生组件的方法
实现关键点:1、使用AppStorage交换Component和PlatformView之间的数据2、使用@Watch装饰器监听数据变化@Componentbuild() {Column() {@Builder@Observedsuper();// 注册消息通道${super();原创 2024-12-17 14:48:44 · 727 阅读 · 0 评论 -
鸿蒙OH实战开发:一种应用界面UI自动化测试方法
随着 OpenHarmony 版本更新,应用生态繁荣,如何对应用界面进行自动化测试成为一个迫切的问题。一般情况,对应用的界面测试都是通过人工进行,效率低,误判率高,本文将介绍一种通过图片对比进行 UI 测试的方法,实现 UI 测试自动化。设计思路:通过测试工程在基线版本上执行,截屏并保存图片,然后在被测版本上执行并截屏,将基线图片和测试图片进行对比。原创 2024-12-17 14:16:46 · 991 阅读 · 0 评论 -
鸿蒙OH实战开发:OpenHarmony 5.0(API 12)关系型数据库relationalStore 新增本地数据变化监听接口介绍
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于 SQLite 组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的 SQL 语句来满足复杂的场景需要。原创 2024-12-16 22:01:12 · 410 阅读 · 0 评论 -
鸿蒙OH实战开发:OpenHarmony 5.0 Release 开发的在线音乐应用卡片
OpenHarmony 社区最新发布了 5.0 Release 版本,在多媒体播放能力上有所加强,另外卡片的功能支持也更加丰富,对于在线音乐播放类应用,卡片是一个必不可少的功能,因此,本文在 OpenHarmony 5.0Release (API12)版本上开发了在线音乐应用的卡片。当前卡片的基本功能都可以实现,但是仍有些不足,比如:不支持图片 url 自动加载;不支持点击效果 ClickEffect;卡片对于动画的支持比较弱,不能实现长时间的动画效果;原创 2024-12-16 20:30:39 · 621 阅读 · 0 评论 -
鸿蒙OH实战开发:【FAQ问题定位】OpenHarmony执行TDD时 file not found 错误的处理
经过简单分析发现外部依赖的 cJSON:cjson 最像,下面就是在目标 BUILD.gn 中添加试试看…原创 2024-12-16 18:00:57 · 258 阅读 · 0 评论 -
鸿蒙OH实战开发:【TEST测试】OpenHarmony unittest单元测试的编写
程序开发与单元测试二者密不可分,是每个开发人员的基本业务。当功能性代码开发完成后,要自行测试其是否满足设计预期,如果不满足就要回去完善代码,满足则可以提交功能代码及测试用例。原创 2024-12-16 16:49:19 · 1046 阅读 · 0 评论 -
鸿蒙OH实战开发:【SUBJECT技术】(MSDP)Rosen图层绘制的应用
本文结合实例说明 Rosen 图层绘制的若干细节,以点带面,若全面了解需要深入阅读 MSDP 和 Graphic2D 子系统相关代码。原创 2024-12-16 14:55:36 · 1031 阅读 · 0 评论 -
鸿蒙OH实战开发:【FAQ问题定位】模块如何单独编译构建
众所周知,当前 OpenHarmony 模块十分庞大,非计算云全量编译代码十分耗时。如果修改、验证单一模块是没有必要全量编译的。注意镜像必须和本地代码日期尽量一致,代码可以稍晚于镜像。核心方法就是从每日构建下载烧录镜像,本地编译单一模块,烧录镜像,推送单一模块进行验证。以下以 RK3568 开发板,主线代码为例进行说明。原创 2024-12-16 13:49:45 · 1104 阅读 · 0 评论 -
鸿蒙OH实战开发:【FAQ问题定位】查找代码片段提交者的PR
仓库中有一段代码我们不知道其意图,或者一个问题追踪到此处,需要定位这一段代码是何人、何时、何因、哪个 PR 添加的?下面提供了一套快捷的解决方案。原创 2024-12-15 21:25:21 · 289 阅读 · 0 评论 -
鸿蒙OH实战开发:【SUBJECT技术】ServiceAbility应用(系统架构)
IPC 是用于进程间通信的技术,指的是进程间的数据交互过程。它包括各种形式的消息传递,共享资源,以及同步对象,如互斥量等,以确保安全的并发访问共享资源。IPC 通常使用 Binder 驱动,主要用于设备内的跨进程通信,如 OpenHarmony 系统中的进程间通信。IPC 与 RPC(Remote Procedure Call)机制用于实现跨进程通信,不同的是前者使用 Binder 驱动,用于设备内的跨进程通信,而后者使用软总线驱动,用于跨设备跨进程通信。原创 2024-12-15 20:13:43 · 807 阅读 · 0 评论 -
鸿蒙OH实战开发:【SUBJECT技术】epoll设计思路及在MSDP子系统中的应用举例
epoll 接口是为解决 Linux 内核处理大量文件描述符而提出的方案。该接口属于 Linux 下多路 I/O 复用接口中 select/poll 的增强。其经常应用于 Linux 下高并发服务型程序,特别是在大量并发连接中只有少部分连接处于活跃下的情况 (通常是这种情况),在该情况下能显著的提高程序的 CPU 利用率。原创 2024-12-15 19:03:08 · 975 阅读 · 0 评论 -
鸿蒙OH实战开发:【SUBJECT技术】定时器实现原理及应用举例
时钟管理器的应用包括典型的几个类,DeviceStatusService 是用来监听 timerFd 的,timerFd 是一个文件句柄,因此它包含了 epoll 的几步典型操作, 如 EpollCreate, AddEpoll,Wait EPOLLIN 和 EpollClose。当有时钟被触发时将在 wait EPOLL 中等到,然后执行始终回调函数 callback();DragManager 是一个典型的应用方,它需要等间隔时间去做一些周期性的事情或者延迟一定时间之后去做一些事情,于是它在开始时添加原创 2024-12-13 21:19:27 · 859 阅读 · 0 评论 -
鸿蒙OH实战开发:【TEST测试】bad_variant_access 错误的处理
运行第 StateMachineTest_OnEvent012 用例时报错原创 2024-12-13 20:19:06 · 319 阅读 · 0 评论