OpenHarmony之hdc

news/2024/7/21 11:35:00 标签: 华为, 职场和发展, 鸿蒙, harmonyos, OpenHarmony

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.niftyadmin.cn/n/5314843.html

相关文章

已安装MySQL5.7的基础上安装MySQL8教程

类似文章很多,但部分问题解决方案并不是很完整,且对细节描述不够清楚,特意总结一篇 在本机已经安装MySQL5.7的情况下新安装MySQL8.x的方案如下(请按照步骤详细操作): 1.进入官网下载 https://dev.mysql.c…

Centos 7 安装 ffmpeg

文件无法下载时 可以从这里下载需要的插件 安装插件下载地址:ffmpeg安装依赖插件包 压缩包中将opus-1.3.1.tar.tar 改为opus-1.3.1.tar.gz 即可 用到的命令: tar xzvf fileName.tar.gz 解压.tar.gz格式文件 unzip fileName.zip 解压 zip格式文件1.安装Gcc编译依赖 yum insta…

【React】常见疑问的整理

1. React渲染一个列表,需要为每一项指定key? 列表的key主要是为了react渲染阶段更好的协调(reconciliation),diff时更好的识别react元素,减少dom的创建和操作,提升效率。 设定key值方式&#x…

MySQL面试题汇总

常规: 1、数据库三大范式 1NF : 表中字段的数据不可再拆分。(原子性)2NF : 在满足第一范式的情况下,遵循唯一性,消除部分依赖。即,表中任意一个主键或任意一组联合主键,可以确定除该主键外的所有的非主键值。(一个表…

vulhub中的Apache HTTPD 多后缀解析漏洞详解

Apache HTTPD 多后缀解析漏洞 1.查看python版本 这里python版本很重要,因为版本过低可能会导致后面的结果运行不成功 这里我就遇到了因为版本过低而执行不了docker-compose up -d的情况 查看python版本 cd /usr/bin ls -al python* 当版本过低时安装高版本的 …

PINN物理信息网络 | 泊松方程的物理信息神经网络PINN解法

基本介绍 泊松方程是一种常见的偏微分方程,它在物理学和工程学中具有广泛的应用。它描述了在某个区域内的标量场的分布与该场在该区域边界上的值之间的关系。 物理信息神经网络(PINN)是一种结合了物理定律和神经网络的方法,用于…

【笔记ing】Helm-3 主题-1 Chart

Chart Helm使用的包格式称为chart。chart就是一个描述Kubernetes相关资源的文件集合。单个chart可以用来部署一些简单的,类似于memcache pod,或者某些复杂的HTTP服务器以及web全栈应用、数据库、缓存等等。 chart是作为特定目录布局的文件被创建的。它们…

【打卡】牛客网:BM76 正则表达式匹配

模板的: 关键思想是: 当pattern遇到*时,需要考虑两种情况: str的当前字符和pattern的*前的字符相同,例如str“ab”,pattern“abb*”,“b”和“b*”相同,有两种情况可以选择&#xf…