OpenHarmony之hdc

news2024/11/18 13:45:22

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.coloradmin.cn/o/1371645.html

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

相关文章

如何使用web文件管理器Net2FTP搭建个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

智能时代:自然语言生成SQL与知识图谱问答实战

语义解析 前言语义解析的应用场景总结概论语义解析和大模型的关系延伸阅读 前言 语义解析技术可以提高人机交互的效率和准确性,在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代,语义解析能够帮助企业更快速…

pc下载apk文件到andriod开发板,并实现可视化

PC端安装APK下载器 点击下载 刷机精灵APK安装器 界面如下,可将下载好的apk文件,直接拖拽到该界面,然后点击安装全部按钮进行安装,安装过程中的具体状态会显示在具体的apk后面。 如下图,安装错误、安装完成等皆为apk安…

springcloud Config配置中心

简介 服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。 SpringCloud提供了ConfigS…

什么软件能查出微信聊天记录

在企业管理中,很多时候是需要查出员工的具体的聊天记录的。今天就分享两种可以查出微信聊天记录的工具: 工具一:微信自带的工具 1、打开微信,在聊天界面点击右上角的“...”按钮,选择“设置”,进入“聊天”…

Navicat迁移局域网内其他PC机的MySQL数据库

迁移局域网内其他PC机的MySQL数据库到本机 查看局域网IP 设置可远程连接的账号 开放本机防火墙的3306端口 连接PC机的MySQL 利用Navicat迁移数据库 刚换了个电脑,旧电脑的MySQL数据库太多了,转成.sql文件,再传输到新电脑上运行&#xff…

二叉树统一迭代法解析

引言 二叉树的遍历无论是通过递归还是迭代都是比较简单的,递归法下不同访问顺序的代码格式较为一致,通过迭代来进行二叉树的前序、中序、后序遍历存在着代码形式不不统一的问题,显得不够优雅。代码随想录里给出了一种适应于这三种顺序遍历的迭…

C语言入门教程,C语言学习教程(第三部分:C语言变量和数据类型)一

第三部分:C语言变量和数据类型 本章也是C语言的基础知识,主要讲解变量、数据类型以及运算符,这其中涉及到了数据的存储格式以及不同进制。 一、大话C语言变量和数据类型 在《数据在内存中的存储(二进制形式存储)》一…

LeetCode 36 有效的数独

题目描述 有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考…

Spring Cloud + Vue前后端分离-第11章 用户管理与登录

源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 Spring Cloud Vue前后端分离-第11章 用户管理与登录 11-1 增加用户管理功能 用户表设计与基本代码生成 1.用户管理与登录:用户表设计与基本代码生成 all.sql generatorConfig.xml Server…

Unity组件开发--AB包打包工具

1.项目工程路径下创建文件夹:ABundles 2.AB包打包脚本: using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.SceneManagement;public class AssetBundle…

Python从入门到网络爬虫(OS模块详解)

前言 本章介绍python自带模块os,os为操作系统 operating system 的简写,意为python与电脑的交互。os 模块提供了非常丰富的方法用来处理文件和目录。通过使用 os 模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强…

C语言如何提高程序的可读性?

一、问题 可读性是评价程序质量的一个重要标准,直接影响到程序的修改和后期维护,那么如何提高程序的可读性呢? 二、解答 提高程序可读性可以从以下几方面来进行。 (1)C程序整体由函数构成的。 程序中,main()就是其中…

Maven依赖冲突解决

Maven介绍 Maven 是 Apache 软件基金会唯一维护的一款自动化构建工具,专注于服务Java平台的项目构建和依赖管理。 1.Maven是如何寻找依赖的? 首先会去本地仓库寻找,然后会去公司的私服仓库寻找,一般私服仓库存的都是公司自己开发的 jar 包&…

蚁群算法解决旅行商问题的完整Python实现

蚁群算法(Ant Colony Optimization,简称ACO)是一种模拟蚂蚁觅食行为的启发式优化算法。它通过模拟蚂蚁在寻找食物时释放信息素的行为,来解决组合优化问题,特别是旅行商问题(TSP)。 蚁群算法的基…

RAG:让大语言模型拥有特定的专属知识

作为一个在Chatbot领域摸爬滚打了7年的从业者,笔者可以诚实地说,在大语言模型的推动下,检索增强生成(Retrieval Augmented Generation,RAG)技术正在快速崛起。 RAG的搜索请求和生成式AI技术,为搜…

【数据库原理】期末突击(2)

有不会的题可以后台问我的哦,看见了就会回。祝大家期末心想事成。 数据库大题显而易见就只有几类,大家可以根据老师平时讲解的例题对应去解决一类型的题目。 前提知识; 候选码候选键关键字键码 关系代数:(1)传统&…

echarts使用之柱状图

一、引入Echarts npm install eacharts --save 二、选择一个Echarts图 选择创建一个柱状图 option { // x轴参数的基本配置xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun] //X轴数据}, // y轴参数的基本配置yAxis: {type: value}, // series:[{data: …

MySQL连接池、C3P0、Druid德鲁伊连接池技术

MySQL连接池 连接池C3P0Druid 连接池 概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象&#xff0…

怎么样检查自己系统上的Python环境中是否有某个包(扩展库)?

比如我们这里想看下有没有库pytz 很简单,进入Python的命令行,然后输入下面的命令: import pytz如果有这个库,则不会报错,否则会报错。 Windows的测试结果如下: Centos的测试结果如下: