OpenHarmony之hdc

OpenHarmony之hdc

简介

hdc(OpenHarmony Device Connector)是 OpenHarmony 为开发人员提供的用于调试的命令行工具,通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。

类似于Android的adb,和adb类似,使用hdc的前提是开发机器hdc工具已安装好,设备端hdc已安装且已配置好。

开发机HDC

开发机hdc工具通过OpenHarmony sdk获取,hdc在sdk的 toolchains目录下

这里我对应的是OpenHarmony-3.2-Release的 ohos-sdk-full

解压:

zdd@xxx-PC:~/WorkSpace/OHOS/ohos-sdk$ tree
.
├── linux
│   ├── ets-linux-x64-3.2.15.3-Release.zip
│   ├── js-linux-x64-3.2.15.3-Release.zip
│   ├── native-linux-x64-3.2.15.3-Release.zip
│   ├── previewer-linux-x64-3.2.15.3-Release.zip
│   └── toolchains-linux-x64-3.2.15.3-Release.zip
└── windows├── ets-windows-x64-3.2.15.3-Release.zip├── js-windows-x64-3.2.15.3-Release.zip├── native-windows-x64-3.2.15.3-Release.zip├── previewer-windows-x64-3.2.15.3-Release.zip└── toolchains-windows-x64-3.2.15.3-Release.zip

根据自己使用的系统,继续解压对应的 toolchains压缩包,hdc等工具就在 toolchains里面。

设备端HDC

设备端hdc工具一般会随编译构建打包进文件系统。

设备端配置分2种不同的通路:USB或网络

  • USB的话,主要保证USB能用能通(驱动OK),使能USB的 otg模式或 peripheral 模式,并通过configfs配置好usb相关的参数并启动对应服务,一般是用init的cfg文件来配,例如rk3588的为 init.rk3568.usb.cfg,这里不详细展开了
    {"jobs" : [{"name" : "boot","cmds" : ["mkdir /dev/usb-ffs 0770 shell shell","mkdir /dev/usb-ffs/hdc 0770 shell shell","mount configfs none /config","mkdir /config/usb_gadget/g1 0770 shell shell","write /config/usb_gadget/g1/idVendor 0x2207","write /config/usb_gadget/g1/idProduct 0x0018","write /config/usb_gadget/g1/os_desc/use 1","write /config/usb_gadget/g1/bcdDevice 0x0223","write /config/usb_gadget/g1/bcdUSB 0x0200","mkdir /config/usb_gadget/g1/strings/0x409 0770","copy /sys/block/mmcblk0/device/cid /config/usb_gadget/g1/strings/0x409/serialnumber","write /config/usb_gadget/g1/strings/0x409/manufacturer Rockchip","write /config/usb_gadget/g1/strings/0x409/product \"HDC Device\"","mkdir /config/usb_gadget/g1/functions/ffs.hdc","mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell","mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell","write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1","write /config/usb_gadget/g1/os_desc/qw_sign MSFT100","write /config/usb_gadget/g1/configs/b.1/MaxPower 500","symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1","mount functionfs hdc /dev/usb-ffs/hdc uid=2000,gid=2000","setparam sys.usb.configfs 1","setparam sys.usb.controller fcc00000.dwc3"]}, {"name" : "param:sys.usb.config=none && param:sys.usb.configfs=1","condition" : "sys.usb.config=none && sys.usb.configfs=1","cmds" : ["write /config/usb_gadget/g1/os_desc/use 0","setparam sys.usb.ffs.ready 0"]}, {"name" : "param:init.svc.hdcd=stopped","condition" : "init.svc.hdcd=stopped","cmds" : ["setparam sys.usb.ffs.ready 0"]}, {"name" : "param:sys.usb.config=hdc && param:sys.usb.configfs=1","condition" : "sys.usb.config=hdc && sys.usb.configfs=1","cmds" : ["write /config/usb_gadget/g1/idProduct 0x5000","write /config/usb_gadget/g1/os_desc/use 1"]}]
    }
  • 网络的话,主要保证网络能用能通(驱动OK),配置好网络IP等,设置hdc参数(主要是模式和端口),并启动hdcd服务,通过命令的方式如下,也可通过配置文件的方式:
    # 设置hdc参数
    param set persist.hdc.mode tcp
    param set persist.hdc.port xxxx
    # 启动hdcd服务
    hdcd &

    一些常用命令

    当两端都配置好之后就可以愉快地使用hdc工具了,下面列举了一些常用的命令,更多说明详见官方文档或help:

    #查询设备列表(-v 打印设备详细信息)
    hdc list targets[-v]#通过【ip地址:端口号】来连接指定的设备(-remove 断开与指定设备的连接)
    hdc tconn host[:port][-remove] 
    #设备端对应daemon进程重启,并首先选用USB连接方式
    hdc tmode usb#调试
    hdc shell
    hdc hilog#以读写模式挂载系统分区
    hdc target mount#设备重启
    hdc target boot#授予后台服务进程root权限, 使用-r参数取消授权
    hdc smode
    hdc smode -r#发送文件至远端设备
    hdc file send ./a.txt /data/local/tmp/a.txt
    #从远端设备接收文件至本地
    hdc file recv /data/local/tmp/a.txt ./a.txt#安装HAP(-r 替换已存在应用 -d 允许降级安装 -g 应用动态授权)
    hdc install [-r/-d/-g] package
    #卸载HAP -k 保留/data/cache
    hdc uninstall [-k] package

    总结

    以上的内容主要简单介绍了《OpenHarmony之hdc》的教程

    要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。

    为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《Open Harmony4.0&Next》的学习导图从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:

    除了以上的知识内容,我还为大家整理了一份《鸿蒙 (Harmony OS)开发学习手册》都是整理成PDF文档方式,分享给大家参考学习:《做鸿蒙应用开发到底学习些啥?》

    《鸿蒙 (Harmony OS)开发学习手册》

    一、入门必看

    1. 应用开发导读(ArkTS)

    2. 应用开发导读(Java)

    3.......

    二、HarmonyOS 概念

    1. 系统定义

    2. 技术架构

    3. 技术特性

    4. 系统安全

    5......

    三、如何快速入门?《鸿蒙基础入门开发宝典!》

    1. 基本概念

    2. 构建第一个ArkTS应用

    3. 构建第一个JS应用

    4. ……

    四、开发基础知识

    1. 应用基础知识

    2. 配置文件

    3. 应用数据管理

    4. 应用安全管理

    5. 应用隐私保护

    6. 三方应用调用管控机制

    7. 资源分类与访问

    8. 学习ArkTS语言

    9. ……

    五、基于ArkTS 开发

    1. Ability开发

    2. UI开发

    3. 公共事件与通知

    4. 窗口管理

    5. 媒体

    6. 安全

    7. 网络与链接

    8. 电话服务

    9. 数据管理

    10. 后台任务(Background Task)管理

    11. 设备管理

    12. 设备使用信息统计

    13. DFX

    14. 国际化开发

    15. 折叠屏系列

    16. ……

    更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙开发学习指南》

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

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

相关文章

探索Java中的Map:领略键值对的无限魅力

目录 1、前言 2、介绍Map 2.1 什么是Map 2.2 Map的特点 3、常用的Map实现类 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 3.4 Hashtable 3.5 ConcurrentHashMap 4、操作Map的常用方法 5、Map的应用场景 5.1 缓存 5.2 数据存储 5.3 计数器 6、常见问题解答 6.1…

Spring中线程池ThreadPoolTaskExecutor的使用

一、为什么要使用线程池 在项目中使用多线程时,通常建议使用线程池而不是直接使用 new Thread 的方式来创建线程。下面是一些原因: 资源管理和性能优化: 使用线程池可以更好地管理系统资源,控制并发线程数,避免创建过…

SEO 分步教程:初学者掌握的 8 个简单基础知识

如果您刚刚开始使用搜索引擎优化 (SEO),那么分步 SEO 教程是有序的。在这一点上,你可能已经听说过一些基本术语,如关键词研究和页面优化。但是,您如何应用迄今为止收集的所有知识呢? 如果您刚刚…

k8s的存储卷

存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会回复到初始状态 一旦回到初始状态,所有的后天编辑的文件都会消…

获取直播间的最新评论 - python 取两个list的差集

python 取两个list的差集 作用:比如我要获取评论区列表,先获取了一遍,这个时候有人评论了几条,我再获取一遍后,找出多的那几条 使用set数据类型来取两个列表的差集。差集表示仅包含在第一个列表中而不在第二个列表中…

微信公众号——微信公众号实现发送模板消息

准备工作 在调用微信接口获取AccessToken时,需要使用到微信公众号的appid及appsecret,获取方式如下: 1.已有公众号 已有公众号: 有属于自己的公众号账户,登录微信公众平台(https://mp.weixin.qq.com),在…

SWM341系列之SWM34SRET6介绍

SWM341系列的介绍 本文介绍了华芯微特SWM341系列主要性能,和其系列之一的SWM34SRET6-50驱动4.3寸800*480 TFTLCD显示的例程应用。 SWM341系列性能 SWM341是一款基于ARM Cortex-M33的32位微控制器,片上包含精度为 1%以内的 20MHz/40MHz 时钟,最…

起诉业务员飞单需要什么证据?

在商业活动中,业务员飞单是一种常见的违规行为,给企业带来了巨大的经济损失。如果企业怀疑业务员存在飞单行为,需要收集足够的证据来证明其行为,并采取法律手段维护企业的合法权益。那么,起诉业务员飞单需要什么证据呢…

【数据库原理】(19)在实际数据库设计中关系规范化的应用

一.关系规范化的基本原则 1. 规范化的目的和基本思想 目的:通过分解低一级范式的关系模式,转换为高一级范式的关系模式集合,以减少数据冗余和更新异常。 基本思想: “一事一地”:确保每个关系模式只描述一个概念、实…

odoo17 | 视图操作按钮

前言 到目前为止,我们主要通过声明字段和视图来构建我们的模块。在上一章中,我们刚刚通过计算字段和onchanges引入了业务逻辑。在任何真实的业务场景中,我们都会希望将一些业务逻辑链接到操作按钮。在我们的房地产示例中,我们希望…

代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素

代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素 文章目录 代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素1 数组理论基础(基于面试)1.1 面试问题针对 Python1.2 面试问题针对 C 2 LeetCode 704.二分查找2.1 二分查找的实现2.2 P…

Buzz 离线音频转字幕工具(完全免费,无需登录)

关于 Buzz Buzz 是一款可以自动识别语音为文本字幕的软件工具,基于 OpenAI 开源的 Whisper 自动语音识别模型,可以批量将音频或者是视频中的内容自动转化为带有时间的字幕,速度非常快,是一款能极大提高效率的生产力小工具。 Bu…

JavaScript-对象-笔记

1.字面量创建对象、对象的使用 对象就是一组 属性和方法的集合 属性: 特征 相当于变量 静态 是什么 方法: 行为 相当于函数 动态 干什么 创建对象 创建对象的第一种:使用字面量 {} 对象中的元素是键值对 使用逗号隔开 键:值 的形式 var 对象名…

Vue项目在ie浏览器中显示白屏优化提示

在工作中用到Vue开发项目,用户在IE浏览器打开页面,结果显示空白屏。作为开发者当然知道是浏览器版本过低导致语法不支持,但是用户不知情的情况下显示空白屏就很不友好。这时候有必要在页面上做点提示语告诉用户切换浏览器,下面是页…

千里之行始于足下,2024年低代码数字化选型“避坑指南“

千里之行,始于足下。企业数字化转型建设之路,亦始于选型。 在转型建设的过程中,数字化系统的选型往往被视为最关键的环节。一旦选型不当或出现失误,可能导致项目进展受阻,甚至直接导致项目失败。因此,一个良…

社交距离 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0…N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。 满足:每当一个员工进入时,…

Edge扩展插件如何安装位置?

Edge浏览器的扩展插件安装后,它们的相关文件通常存储在以下位置: 在Windows操作系统上: plaintext %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Extensions 这个路径会根据用户的配置和系统版本有所不同。%LOCALAPPDATA% 是一个环境变…

PyTorch简单易懂的解析 Dropout Layers应用,代码示例

目录 torch.nn子模块Dropout Layers详解 nn.Dropout 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout1d 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout2d 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout3d 用途 用法 使用技巧 注意事项 代码…

【算法专题】动态规划之斐波那契数列模型

动态规划1.0 动态规划 - - - 斐波那契数列模型1. 第 N 个泰波那契数2. 三步问题3. 使用最小花费爬楼梯4. 解码方法 动态规划 - - - 斐波那契数列模型 1. 第 N 个泰波那契数 题目链接 -> Leetcode -1137. 第 N 个泰波那契数 Leetcode -1137. 第 N 个泰波那契数 题目&…

git如何仅合并项目下的某个文件夹

前言 假设目前在做的一个项目名为demoproject,目前版本为v1.0.0,标准开发都是在demoproject上进行的,但是有一个客户需要做定制化,需要将项目中的一些信息改为客户的,于是基于demoproject拉了一个v1.0.0-custom&#…