最新资讯

  • 【全网最全】鸿蒙 HDC 命令合集 (awesome-hdc)

【全网最全】鸿蒙 HDC 命令合集 (awesome-hdc)

2025-05-08 06:00:50 0 阅读

最近在搞鸿蒙Next自动化,HDC命令作为最基础的调试工具,发现全网没有比较完整的命令介绍,于是整理了这篇文档。

由于鸿蒙生态还处于初期,官方提供的hdc命令还在不断修改中,这篇文档更新不及时,请以github为准https://github.com/codematrixer/awesome-hdc
如果有问题欢迎去提PR和Issue,也欢迎点Star ⭐️ ⭐️ ⭐️ ⭐️ ⭐️
https://github.com/codematrixer/awesome-hdc

HDC(OpenHarmony Device Connector) 是为鸿蒙开发/测试人员提供的用于设备调试的命令行工具,类似Android端的ADB工具。

HDC主要有三部分组成

  1. hdc client:运行于电脑上的客户端,用户可以在电脑命令终端(windows cmd/linux shell)下请求执行相应的hdc命令。
  2. hdc server:作为后台进程也运行于电脑上,server管理client和设备端daemon之间通信包括连接的复用、数据通信包的收发,以及个别本地命令的直接处理。
  3. hdc daemon:daemon部署于OpenHarmony设备端作为守护进程按需运行,负责处理来自client端请求。

整体架构和Android系统的ADB架构非常类似。

文章目录

  • HDC安装
  • 基本用法
    • 基本语法
  • 设备连接管理
    • 查看HDC版本
    • 启动/停止 HDC Server
    • 查询设备列表
    • 查询设备UDID
    • 重启手机
  • 查看设备信息
    • 名称
    • Brand
    • Model
    • 系统版本
    • OS版本
    • CPU架构
    • 分辩率
    • wlan IP
    • 电量/温度
    • 查看屏幕信息
    • 查看屏幕旋转状态
    • 查看屏幕亮屏状态
    • 点亮屏幕(唤醒)
    • 查看网络状态
  • 应用管理
    • 安装应用
    • 卸载应用
    • 获取应用列表
    • 启动应用
    • 退出应用
    • 获取应用版本
    • Dump应用信息
      • 获取应用 Ability信息
      • 获取应用详情
    • 清除应用数据
      • 清除应用缓存
      • 清除应用数据
    • 显示可调试应用列表
  • 端口转发
    • 显示端口转发列表
    • 本地端口转发到手机
    • 删除端口转发任务
  • 无线调试
  • 文件传输
    • 从本地电脑发送文件至手机
    • 从手机拷贝文件至本地电脑
  • UI模拟操作(点击滑动等)
  • 屏幕截图
  • 屏幕录屏
  • 打开Scheme (URL)
  • 获取页面布局信息(控件树)
  • 录制用户操作
  • 系统日志(log)
  • 导出日志
  • 导出crash日志
  • hidumper工具
    • list system abilities
    • RenderService
    • DisplayManagerService
    • PowerManagerService
    • BatteryService
    • NetConnManager
    • StorageManager
  • aa工具
    • start
    • stop-service
    • force-stop
    • test
    • attach
    • detach
    • appdebug
  • bm工具
    • install
    • uninstall
    • dump
    • clean
    • enable
    • disable
    • get
  • param工具
  • Instrument Test
  • 性能工具
  • 参考链接

HDC安装

  • 下载 Command Line Tools 并解压

  • hdc文件在command-line-tools/sdk/HarmonyOS-NEXT-DB2/openharmony/toolchains目录下

  • 配置电脑环境变量,以macOS为例,在~/.bash_profile 或者 ~/.zshrc文件中添加如下内容:

export HM_SDK_HOME="/Users/develop/command-line-tools/sdk/HarmonyOS-NEXT-DB2"  //请以sdk实际安装目录为准
export PATH=$PATH:$HM_SDK_HOME/hms/toolchains:$HM_SDK_HOME/openharmony/toolchains
export HDC_SERVER_PORT=7035

也可以自行编译安装:参考鸿蒙官方gitree文档

基本用法

基本语法

hdc -t  

如果只有一个设备/模拟器连接时,可以省略掉-t 这一部分,直接使用hdc 。在多个设备/模拟器连接的情况下需要指定-t 参数, connectKey可以通过hdc list targets命令获取,对应Android里的adb devices获取的serialNumber

$ hdc list targets

127.0.0.1:5555    //:形式的connectKey ,一般为无线连接的设备或模拟器
FMR0223C13000649

比如给FMR0223C13000649 这个设备安装应用:

$ hdc -t FMR0223C13000649 install entry-default-signed.hap

[Info]App install path:/Users/develop/entry-default-signed.hap, queuesize:0, msg:install bundle successfully.
AppMod finish

注意事项

  • 使用hdc,如果出现异常,可以尝试通过hdc kill -r命令杀掉并重启hdc服务。
  • 如果出现hdc list targets获取不到设备信息的情况,可以通过任务管理器查看是否有hdc进程存在。若进程存在,则通过hdc kill -r命令杀掉该进程。

设备连接管理

查看HDC版本

$ hdc -v

Ver: 2.0.0a

启动/停止 HDC Server

停止

$ hdc kill

Kill server finish

重启

$ hdc start -r

查询设备列表

$ hdc list targets

127.0.0.1:5555
FMR0223C13000649

-v 选项 显示详细信息

$ hdc list targets -v

127.0.0.1:5555		  TCP	  Connected	  localhost
FMR0223C13000649		USB	  Connected	  unknown...

输出的内容第一列为设备的connectKey, 第二列是设备连接方式,第三列为设备连接状态,第四列暂时未知

查询设备UDID

$ hdc shell bm get --udid

udid of current device is :
C46284C052AE01BBD2358FE44B279524B508FC959AAB5F4B0B74E42A06569B7E

这个udid在用开发者账号打包时,需要添加这个udid到对应的profile文件中

重启手机

$ hdc target boot

查看设备信息

名称

$ hdc shell param get const.product.name               

HUAWEI Mate 60 Pro

Brand

$ hdc shell param get const.product.brand

HUAWEI 

Model

$ hdc shell param get const.product.model

ALN-AL00 

系统版本

$ hdc shell param get const.product.software.version                                      

ALN-AL00 5.0.0.22(SP35DEVC00E22R4P1log) 

OS版本

$ hdc shell param get const.ohos.apiversion  

12 

CPU架构

$ hdc  shell param get const.product.cpu.abilist  

arm64-v8a 

分辩率

$ hdc shell hidumper -s RenderService -a screen


-------------------------------[ability]-------------------------------


----------------------------------RenderService---------------------------------
-- ScreenInfo
screen[0]: id=0, powerstatus=POWER_STATUS_OFF, backlight=51, screenType=EXTERNAL_TYPE, render size: 1260x2720, physical screen resolution: 1260x2720, isvirtual=false, skipFrameInterval_:1

  supportedMode[0]: 1260x2720, refreshrate=120
  supportedMode[1]: 1260x2720, refreshrate=90
  supportedMode[2]: 1260x2720, refreshrate=60
  supportedMode[3]: 1260x2720, refreshrate=30
  activeMode: 1260x2720, refreshrate=60
  capability: name=, phywidth=72, phyheight=156,supportlayers=12, virtualDispCount=0, propCount=0, type=DISP_INTF_HDMI, supportWriteBack=false

执行上述命令后,解析返回内容,可以通过正则表达式提取1260x2720

wlan IP

$ hdc shell ifconfig

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:99055 errors:0 dropped:0 overruns:0 frame:0
          TX packets:99055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5889697 TX bytes:5889697

wlan0     Link encap:Ethernet  HWaddr ea:f9:7d:21:52:31
          inet addr:172.31.125.111  Bcast:172.31.125.255  Mask:255.255.254.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1232924 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2061202 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:877179224 TX bytes:2570352818

p2p0      Link encap:Ethernet  HWaddr d2:0d:f7:cc:12:fb
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:0

chba0     Link encap:Ethernet  HWaddr ec:11:05:fb:18:66
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:0

注意:这个命令在Beta3版本之前,会提示Cannot open netlink socket: Permission denied,需要升级系统。

电量/温度

$ hdc shell hidumper -s BatteryService -a -i                

-------------------------------[ability]-------------------------------


----------------------------------BatteryService---------------------------------
Current time: 2024-05-30 12:08:37.419
capacity: 100 
batteryLevel: 1 
chargingStatus: 3 
healthState: 1 
pluggedType: 1 
voltage: 4496732 
present: 1 
technology: Li-poly 
nowCurrent: 123 
currentAverage: 83 
totalEnergy: 5203 
remainingEnergy: 5207 
remainingChargeTime: 0 
temperature: 280 
chargeType: 1 

查看屏幕信息

$ hdc shell hidumper -s DisplayManagerService -a -a

-------------------------------[ability]-------------------------------


----------------------------------DisplayManagerService----------------------------------
-------------- DMS Multi User Info --------------
[oldScbPid:]
[userId:] 100
[ScbPid:] 4438
---------------- Screen ID: 0 ----------------
FoldStatus:                   UNKNOWN
[SCREEN SESSION]
Name:                         UNKNOWN
RSScreenId:                   0
activeModes:    0, 1260, 2720, 120
SourceMode:                   0
ScreenCombination:            0
Orientation:                  0
Rotation:                     0
ScreenRequestedOrientation:   0
[RS INFO]
SupportedColorGamuts:         0, 4, 6
ScreenColorGamut:             4
GraphicPixelFormat:           0
SupportedScreenHDRFormat:     2, 1, 3
ScreenHDRFormat:              2
SupportedColorSpaces:         0, 2294273, 2294278
ScreenColorSpace:             2294273
[CUTOUT INFO]
WaterFall_L:         0, 0, 0, 0
WaterFall_T:         0, 0, 0, 0
WaterFall_R:         0, 0, 0, 0
WaterFall_B:         0, 0, 0, 0
BoundingRects:       [494, 36, 273, 72]
[SCREEN INFO]
VirtualWidth:                 387
VirtualHeight:                836
LastParentId:                 18446744073709551615
ParentId:                     1
IsScreenGroup:                0
VirtualPixelRatio:            3.25
Rotation:                     0
Orientation:                  0
SourceMode:                   0
ScreenType:                   1
[SCREEN PROPERTY]
Rotation:                     0
Density:                      3.25
DensityInCurResolution:       3.25
PhyWidth:                     72
PhyHeight:                    156
RefreshRate:                  60
VirtualPixelRatio:            3.25
ScreenRotation:               0
Orientation:                  0
DisplayOrientation:           0
GetScreenType:                1
ReqOrientation:               0
DPI:                    444.5, 442.871
Offset:                 0, 0
Bounds:              0, 0, 1260, 2720,
PhyBounds:           0, 0, 1260, 2720,
AvailableArea        0, 0, 1260, 2720,
DefaultDeviceRotationOffset   0

执行上述命令后,解析返回内容,通过正则提取需要的信息,比如屏幕尺寸分辨率Bounds,VirtualWidth,VirtualHeight,PhyWidth,PhyHeight,ScreenRotation

查看屏幕旋转状态

$ hdc shell hidumper -s DisplayManagerService -a -a

通过上面的查看屏幕信息命令,通过正则提取ScreenRotation字段即可,ScreenRotation有四个值:

  • 0:未旋转
  • 90:顺时针旋转90度
  • 180:顺时针旋转180度
  • 270:顺时针旋转270度

备注:目前旋转状态只能查看,不支持设置

查看屏幕亮屏状态

$ hdc shell hidumper -s PowerManagerService -a -s

-------------------------------[ability]-------------------------------


----------------------------------PowerManagerService----------------------------------
POWER STATE DUMP:
Current State: AWAKE  Reason: 20  Time: 521085695
ScreenOffTime: Timeout=600000ms
DUMP DETAILS:
Last Screen On: 521248337
Last Screen Off: 467804783
Last SuspendDevice: 0
Last WakeupDevice: 464729447
Last Refresh: 521248337
DUMP EACH STATES:
State: AWAKE   Reason: POWER_KEY   Time: 521085695
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: FREEZE   Reason: INIT   Time: 0
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: INACTIVE   Reason: TIMEOUT   Time: 467805109
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: STAND_BY   Reason: INIT   Time: 0
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: DOZE   Reason: INIT   Time: 0
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: SLEEP   Reason: TIMEOUT   Time: 467810120
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: HIBERNATE   Reason: INIT   Time: 0
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: SHUTDOWN   Reason: INIT   Time: 0
   Failure: INIT   Reason:    From: AWAKE   Time: 0

State: DIM   Reason: TIMEOUT   Time: 467797280
   Failure: TIMEOUT   Reason: Blocked by running lock   From: AWAKE   Time: 447180354

屏幕状态有这几种:

  • INACTIVE
  • SLEEP
  • AWAKE

点亮屏幕(唤醒)

$ hdc shell power-shell wakeup

WakeupDevice is called

查看网络状态

联网状态

$ hdc shell hidumper -s NetConnManager

-------------------------------[ability]-------------------------------


----------------------------------NetConnManager----------------------------------
Net connect Info:
	defaultNetSupplier_ is nullptr
	SupplierId:
	NetId: 0
	ConnStat: 0
	IsAvailable:
	IsRoaming: 0
	Strength: 0
	Frequency: 0
	LinkUpBandwidthKbps: 0
	LinkDownBandwidthKbps: 0
	Uid: 0
Dns result Info:
	netId: 0
	totalReports: 2
	failReports: 2

wifi信息

$ hdc shell hidumper -s WifiDevice

-------------------------------[ability]-------------------------------


----------------------------------WifiDevice----------------------------------
WiFi active state: activated

WiFi connection status: connected
  Connection.ssid: K-Lab
  Connection.bssid: cc:d0:**:**:**:e2
  Connection.rssi: -45
  Connection.band: 2.4GHz
  Connection.frequency: 2462
  Connection.linkSpeed: 156
  Connection.macAddress: ea:f9:**:**:**:31
  Connection.isHiddenSSID: false
  Connection.signalLevel: 4

Country Code: CN

应用管理

安装应用

$ hdc app install entry-default-signed.hap

[Info]App install path:/Users/develop/entry-default-signed.hap, queuesize:0, msg:install bundle successfully.
AppMod finish

或者

$ hdc install entry-default-signed.hap

[Info]App install path:/Users/develop/entry-default-signed.hap, queuesize:0, msg:install bundle successfully.
AppMod finish

卸载应用

$ hdc app uninstall com.kk.hmscrcpy

[Info]App uninstall path:, queuesize:0, msg:uninstall bundle successfully.
AppMod finish

或者

$ hdc uninstall com.kk.hmscrcpy

[Info]App uninstall path:, queuesize:0, msg:uninstall bundle successfully.
AppMod finish

获取应用列表

$ hdc shell bm dump -a

ID: 100:
	com.huawei.associateassistant
	com.huawei.batterycare
	com.huawei.hmos.AutoRegService
	com.huawei.hmos.advisor
	com.huawei.hmos.advsecmode
	com.huawei.hmos.aibase
	com.huawei.hmos.aidataservice
	com.huawei.hmos.aidispatchservice
	com.huawei.hmos.ailife
	com.huawei.hmos.ailifesvc
	com.huawei.hmos.audioaccessorymanager
	com.huawei.hmos.authcredmgr
  ...

启动应用

通过启动Ability来拉起APP

hdc shell aa start -a {abilityName} -b {bundleName} 

  • 其中bundleName可以通过hdc shell bm dump -a获取

  • 其中abilityName可以通过如下命令获取(查看当前任务栈的ability信息)

$ hdc shell aa dump -l    # 运行命令前需要手动打开app

User ID #100
  current mission lists:{
    Mission ID #139  mission name #[#com.kuaishou.hmapp:kwai:EntryAbility]  lockedState #0  mission affinity #[]
      AbilityRecord ID #55
        app name [com.kuaishou.hmapp]
        main name [EntryAbility]
        bundle name [com.kuaishou.hmapp]
        ability type [PAGE]
        state #FOREGROUND  start time [152523]
        app state #FOREGROUND
        ready #1  window attached #0  launcher #0
        callee connections:
        isKeepAlive: false
 }

里面的EntryAbility就是你要打开app的Ability名称

退出应用

强制退出应用

hdc shell aa force-stop {bundleName} 
  • 其中bundleName可以通过hdc shell bm dump -a获取

获取应用版本

$ hdc shell bm dump -n {bundleName}

执行上述命令后,再解析json, 提取versionName字段即可

Dump应用信息

aa dump

$ hdc shell aa dump -h

usage: aa dump 
options list:
  -h, --help                   list available commands
  -a, --all                    dump all abilities
  -l, --mission-list           dump mission list
  -i, --ability                dump abilityRecordId
  -e, --extension              dump elementName (FA: serviceAbilityRecords,Stage: ExtensionRecords)
  -p, --pending                dump pendingWantRecordId
  -r, --process                dump process
  -d, --data                   dump the data abilities
  -u, --userId                 userId
  -c, --client                 client
  -c, -u are auxiliary parameters and cannot be used alone

bm dump

$ hdc shell bm dump -h

usage: bm dump 
options list:
  -h, --help                           list available commands
  -a, --all                            list all bundles in system
  -n, --bundle-name       list the bundle info by a bundle name
  -s, --shortcut-info                  list the shortcut info
  -d, --device-id           specify a device id
  -u, --user-id               specify a user id

获取应用 Ability信息

$ hdc shell aa dump -l    //运行命令前需要手动打开app

User ID #100
  current mission lists:{
    Mission ID #139  mission name #[#com.kuaishou.hmapp:kwai:EntryAbility]  lockedState #0  mission affinity #[]
      AbilityRecord ID #55
        app name [com.kuaishou.hmapp]
        main name [EntryAbility]
        bundle name [com.kuaishou.hmapp]
        ability type [PAGE]
        state #FOREGROUND  start time [152523]
        app state #FOREGROUND
        ready #1  window attached #0  launcher #0
        callee connections:
        isKeepAlive: false
 }

获取应用详情

查询该应用的详细信息

$ hdc shell bm dump -n com.kuaishou.hmapp

com.kuaishou.hmapp:
{
    "appId": "com.kuaishou.hmapp_BIS88rItfUAk+V9Y4WZp2HgIZ/JeOgvEBkwgB/YyrKiwrWhje9Xn2F6Q7WKFVM22RdIR4vFsG14A7ombgQmIIxU=",
    "appIdentifier": "5765880207853819885",
    "appIndex": 0,
    "applicationInfo": {
        ...
        "applicationReservedFlag": 0,
        "arkNativeFileAbi": "",
        "arkNativeFilePath": "",
        "asanEnabled": false,
        "asanLogPath": "",
        "associatedWakeUp": false,
        "bundleName": "com.kuaishou.hmapp",
        "bundleType": 0,
        "cacheDir": "",
        "codePath": "/data/app/el1/bundle/public/com.kuaishou.hmapp",
        "compileSdkType": "HarmonyOS",
        "compileSdkVersion": "4.1.0.73",
        "cpuAbi": "arm64-v8a",
        "crowdtestDeadline": -1,
        "dataBaseDir": "/data/app/el2/database/com.kuaishou.hmapp",
        "dataDir": "",
        "debug": true,
        "description": "",
        "descriptionId": 0,
        "descriptionResource": {
            "bundleName": "com.kuaishou.hmapp",
            "id": 0,
            "moduleName": "kwai"
        },
        "deviceId": "PHONE-001",
        "distributedNotificationEnabled": true,
        "enabled": true,
        "entityType": "unspecified",
        "entryDir": "",
        "entryModuleName": "",
        "fingerprint": "96C4B0B051421A56EC9117BC6E3CF093C428B6B6D59DA13205C29C9BDD39AE7C",
        ...
        "minCompatibleVersionCode": 999999,
        "moduleInfos": [
            {
                "moduleName": "kwai",
                "moduleSourceDir": "",
                "preloads": []
            }
        ],
				...
        "userDataClearable": true,
        "vendor": "快手",
        "versionCode": 999999,
        "versionName": "12.2.40"
    },
    "compatibleVersion": 40100011,
    "cpuAbi": "",
    "defPermissions": [],
    "description": "",
    "entryInstallationFree": false,
    "entryModuleName": "kwai",
    "gid": 20020014,
    "hapModuleInfos": [
        ...
    ],
    "reqPermissions": [
        "ohos.permission.ACCELEROMETER",
        "ohos.permission.GET_NETWORK_INFO",
        "ohos.permission.GET_WIFI_INFO",
        "ohos.permission.INTERNET",
        "ohos.permission.SET_NETWORK_INFO",
        "ohos.permission.STORE_PERSISTENT_DATA"
    ],
		...
    "vendor": "快手",
    "versionCode": 999999,
    "versionName": "12.2.40"
}

通过这个命令可以获取到很多应用的关键信息,比如reqPermissionsversionabilities等等

清除应用数据

$ hdc shell bm clean -h

usage: bm clean 
options list:
  -h, --help                                      list available commands
  -n, --bundle-name                  bundle name
  -c, --cache                                     clean bundle cache files by bundle name
  -d, --data                                      clean bundle data files by bundle name
  -u, --user-id                          specify a user id

清除应用缓存

$ hdc shell bm clean -n {bundleName}  -c

clean bundle cache files successfully.

其中bundleName可以通过hdc shell bm dump -a获取, 比如com.kuaishou.hmapp

清除应用数据

$ hdc shell bm clean -n {bundleName} -d 

显示可调试应用列表

$  hdc jpid

2571
2633
2638
2658
2666
2691
2825
3310
3804
3977
30178

$ hdc track-jpid

0000
  • jpid显示可调试应用列表
  • track-jpid动态显示可调试应用列表。

端口转发

命令说明
fport ls展示全部“端口转发主机端口转发数据到设备侧端口”的转发任务
fport local remote端口转发主机端口转发数据到设备侧端口
fport rm local remote删除指定“端口转发主机端口转发数据到设备侧端口”的转发任务
rport ls展示全部“端口转发设备侧端口转发数据到主机端口”的转发任务
rport local remote端口转发设备侧端口转发数据到主机端口
rport rm local remote删除指定“端口转发设备侧端口转发数据到主机端口”的转发任务

显示端口转发列表

展示电脑端口转发到手机端口的列表

$ hdc fport ls

FMR0223C13000649    tcp:7912 tcp:7912    [Forward]

本地端口转发到手机

将本地电脑的7913端口转发到手机7912端口

$ hdc fport tcp:7913 tcp:7912

Forwardport result:OK

这个命令非常实用,比如我再手机上实现了一个 http服务,没有这个命令前需要通过手机ip:port来访问,这就需要提前知道手机的wlanIP,执行这个命令后可以直接通过localhost:localPort来访问手机里的服务。

删除端口转发任务

$ hdc fport rm tcp:7913 tcp:7912
Remove forward ruler success, ruler:tcp:7913 tcp:7912

$ hdc fport ls
[Empty]

同理,rport命令表示手机端口转发到电脑端口,我就不一一举例了.

无线调试

  1. 在手机上开启5555端口 hdc -t {SERIAL} tmode port {PORT}
  2. 连接手机上的端口 hdc -t {SERIAL} tconn {WLANIP}:{PORT}
  3. 恢复手机USB连接 hdc -t {SERIAL} tmode usb

示例

$ hdc tmode port 5555

$ hdc tconn 172.31.124.84:5555
Connect OK

$ hdc list targets
172.31.124.84:5555

$ hdc tmode usb      
Set device run mode successful.

不过目前这个无线调试,会导致该手机USB连接方式断开,导致无法进行端口转发,每次进行无线调试时,需要知道手机的wlanip才行。
这个问题也在和鸿蒙方沟通,待解决。
记个TODO.

文件传输

命令说明
file send local remote从本地发送文件至远端设备
file recv remote local从远端设备发送文件至本地

从本地电脑发送文件至手机

$ hdc file send ~/layout_407568854.json /data/local/tmp/layout_407568854.json

FileTransfer finish, Size:71792, File count = 1, time:24ms rate:2991.33kB/s

从手机拷贝文件至本地电脑

$ hdc file recv /data/local/tmp/layout_407568854.json ~/layout_407568854.json

[I][2024-05-28 20:15:45] HdcFile::TransferSummary success
FileTransfer finish, Size:71792, File count = 1, time:12ms rate:5982.67kB/s

UI模拟操作(点击滑动等)

支持操作类型:点击 双击 长按 慢滑 快滑 拖拽 输入文字 KeyEvent

配置参数名配置参数含义配置参数取值示例
click模拟单击操作point_x (必选参数,点击x坐标点)
point_y (必选参数,点击y坐标点)
hdc shell uitest uiInput click point_x point_y
doubleClick模拟双击操作point_x (必选参数,双击x坐标点)
point_y (必选参数,双击y坐标点)
hdc shell uitest uiInput doubleClick point_x point_y
longClick模拟长按操作point_x (必选参数,长按x坐标点)
point_y (必选参数,长按y坐标点)
hdc shell uitest uiInput longClick point_x point_y
fling模拟快滑操作from_x (必选参数,滑动起点x坐标)
from_y(必选参数,滑动起点y坐标)
to_x(必选参数,滑动终点x坐标)
to_y(必选参数,滑动终点y坐标)
swipeVelocityPps_ (可选参数,滑动速度,取值范围: 200-40000, 默认值: 600, 单位: px/s)
stepLength(可选参数,滑动步长,默认值:滑动距离/50, 单位: px)
hdc shell uitest uiInput fling from_x from_y to_x to_y swipeVelocityPps_ stepLength
swipe模拟慢滑操作from_x (必选参数,滑动起点x坐标)
from_y(必选参数,滑动起点y坐标)
to_x(必选参数,滑动终点x坐标)
to_y(必选参数,滑动终点y坐标)
swipeVelocityPps_ (可选参数,滑动速度,取值范围: 200-40000, 默认值: 600, 单位: px/s)
hdc shell uitest uiInput swipe from_x from_y to_x to_y swipeVelocityPps_
drag模拟拖拽操作from_x (必选参数,拖拽起点x坐标)
from_y(必选参数,拖拽起点y坐标)
to_x(必选参数,拖拽终点x坐标)
to_y(必选参数,拖拽终点y坐标)
swipeVelocityPps_ (可选参数,滑动速度,取值范围: 200-40000, 默认值: 600, 单位: px/s)
hdc shell uitest uiInput drag from_x from_y to_x to_y swipeVelocityPps_
dircFling模拟指定方向滑动操作direction (可选参数,滑动方向,可选值: [0,1,2,3], 滑动方向: [左,右,上,下],默认值: 0)
swipeVelocityPps_ (可选参数,滑动速度,取值范围: 200-40000, 默认值: 600, 单位: px/s)
stepLength(可选参数,滑动步长,默认值:滑动距离/50, 单位: px)
hdc shell uitest uiInput dircFling direction swipeVelocityPps_ stepLength
inputText模拟输入框输入文本操作point_x (必选参数,输入框x坐标点)
point_y (必选参数,输入框y坐标点)
input(输入文本)
hdc shell uitest uiInput inputText point_x point_y text
keyEvent模拟实体按键事件(如:键盘,电源键,返回上一级,返回桌面等),以及组合按键操作keyID (必选参数,实体按键对应ID)
keyID2 (可选参数,实体按键对应ID)
hdc shell uitest uiInput keyEvent keyID

举例

//点击
hdc shell uitest uiInput click 100 100

//双击
hdc shell uitest uiInput doubleClick 100 100

//长按
hdc shell uitest uiInput longClick 100 100

//快滑
hdc shell uitest uiInput fling 10 10 200 200 500

//慢滑
hdc shell uitest uiInput swipe 10 10 200 200 500

//拖拽
hdc shell uitest uiInput drag 10 10 100 100 500

//左滑
hdc shell uitest uiInput dircFling 0 500

//右滑
hdc shell uitest uiInput dircFling 1 600

//上滑
hdc shell uitest uiInput dircFling 2

//下滑
hdc shell uitest uiInput dircFling 3

//输入框输入
hdc shell uitest uiInput inputText 100 100 hello

//返回主页
hdc shell uitest uiInput keyEvent Home

//返回上一步
hdc shell uitest uiInput keyEvent Back

//组合键粘贴操作
hdc shell uitest uiInput keyEvent 2072 2038

keyEvent映射表可以参考这个文档:https://docs.openharmony.cn/pages/v4.1/en/application-dev/reference/apis-input-kit/js-apis-keycode.md

屏幕截图

hdc提供了两种截图命令

方式一

$ hdc shell uitest screenCap
// 默认存储路径:/data/local/tmp,文件名:时间戳 + .png。

$ hdc shell uitest screenCap -p /data/local/tmp/1.png
// 指定存储路径和文件名。

【推荐】方式二

$ hdc shell snapshot_display -f /data/local/tmp/2.jpeg
// 截图完成后可以通过 hdc file recv 命令导入到本地

方式二的截图性能效率远远高于方式一

屏幕录屏

相关hdc命令还未支持,官方在开发中。。。

我这边通过python脚本实现了录屏功能,使用方法如下

cd awesome-hdc/scripts
pip3 install -r requirements.txt

python3 screen_recroding.py

打开Scheme (URL)

$ hdc shell aa start -U http://www.baidu.com
start ability successfully.

$ hdc shell aa start -U kwai://home

获取页面布局信息(控件树)

$ hdc shell uitest dumpLayout -p {saveDumpPath}   # 运行命令前需要手动打开app,进入对应页面

DumpLayout saved to:/data/local/tmp/layout_407568854.json
  • -p表示控件树保存的目录,如果不指定,则默认保存在手机的/data/local/tmp目录
    /data/local/tmp/layout_407568854.json文件内容如下:
{
    "attributes": {
        "accessibilityId": "",
        "bounds": "[0,0][1260,2720]",
        "checkable": "",
        "checked": "",
        "clickable": "",
        "description": "",
        "enabled": "",
        "focused": "",
        "hostWindowId": "",
        "id": "",
        "key": "",
        "longClickable": "",
        "origBounds": "",
        "scrollable": "",
        "selected": "",
        "text": "",
        "type": ""
    },
    "children": [
    	
      ...
      
    ]

录制用户操作

将当前界面操作记录到/data/local/tmp/layout/record.csv,结束录制操作使用Ctrl+C结束录制

$  hdc shell uitest uiRecord record

windowBounds : (0,0,1260,2720)
Current ForAbility :com.kuaishou.hmapp, EntryAbility
The result will be written in csv file at location: /data/local/tmp/layout/record.csv
Started Recording Successfully...
click , fingerNumber:1 ,
	finger1:click:  at Point(x:557, y:1542) ; from Point(x:557, y:1542)  to Point(x:557, y:1542) ;
click , fingerNumber:1 ,
	finger1:click:  at Point(x:550, y:1638) ; from Point(x:550, y:1638)  to Point(x:550, y:1638) ;
fling , fingerNumber:1 ,
	finger1:from Point(x:409, y:1916)  to Point(x:370, y:1528) ; Off-hand speed:1415.42, Step length:34;
fling , fingerNumber:1 ,
	finger1:from Point(x:400, y:1886)  to Point(x:389, y:1586) ; Off-hand speed:1995.97, Step length:31;
home , fingerNumber:1 ,
	finger1:from Widget(id: , type: Text, text: state: didAppear,
 feedId: 5218827670987295481,
 feedType: 3,
 ServerExpTag: feed_photo|5218827670987295481|1499501607|1_u/2003373606202106162_bs54357,
 ) ;  to Point(x:615, y:2338) ;

支持两种方式查看数据:

  • uiRecord record, 将事件的位置坐标写入文件
  • uiRecord read, 将文件内容打印到控制台

录制完成后,再将csv文件拷贝到电脑上

$ hdc file recv  /data/local/tmp/layout/record.csv ~/record.csv

record数据字段含义请参考如下示例数据

{
  "ABILITY": "com.ohos.launcher.MainAbility", // 前台应用界面
  "BUNDLE": "com.ohos.launcher", // 操作应用
  "CENTER_X": "", // 模拟捏合中心X, pinch事件
  "CENTER_Y": "", // 模拟捏合中心Y, pinch事件
  "EVENT_TYPE": "pointer", //  
  "LENGTH": "0", // 总体步长
  "OP_TYPE": "click", //事件类型,当前支持点击、双击、长按、拖拽、捏合、滑动、抛滑动作录制
  "VELO": "0.000000", // 离手速度
  "direction.X": "0.000000",// 总体移动X方向
  "direction.Y": "0.000000", // 总体移动Y方向
  "duration": 33885000.0, // 手势操作持续时间
  "fingerList": [{
      "LENGTH": "0", // 总体步长
      "MAX_VEL": "40000", // 最大速度
      "VELO": "0.000000", // 离手速度
      "W1_BOUNDS": "{"bottom":361,"left":37,"right":118,"top":280}", // 起点控件bounds
      "W1_HIER": "ROOT,3,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0", // 起点控件hierarchy
      "W1_ID": "", // 起点控件id
      "W1_Text": "", // 起点控件text
      "W1_Type": "Image", // 起点控件类型
      "W2_BOUNDS": "{"bottom":361,"left":37,"right":118,"top":280}", // 终点控件bounds
      "W2_HIER": "ROOT,3,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0", // 终点控件hierarchy
      "W2_ID": "", // 终点控件id
      "W2_Text": "", // 终点控件text
      "W2_Type": "Image", // 终点控件类型
      "X2_POSI": "47", // 终点X
      "X_POSI": "47", // 起点X
      "Y2_POSI": "301", // 终点Y
      "Y_POSI": "301", // 起点Y
      "direction.X": "0.000000", // x方向移动量
      "direction.Y": "0.000000" // Y方向移动量
  }],
  "fingerNumber": "1" //手指数量
}

系统日志(log)

$ hdc hilog -h

Usage:
-h --help
  Show all help information.
  Show single help information with option:
  query/clear/buffer/stats/persist/private/kmsg/flowcontrol/baselevel/domain/combo
Querying logs options:
  No option performs a blocking read and keeps printing.
  -x --exit
    Performs a non-blocking read and exits when all logs in buffer are printed.
  -a , --head=
    Show n lines logs on head of buffer.
  -z , --tail=
    Show n lines logs on tail of buffer.
  -t , --type=
    Show specific type/types logs with format: type1,type2,type3
    Don't show specific type/types logs with format: ^type1,type2,type3
    Type coule be: app/core/init/kmsg, kmsg can't combine with others.
    Default types are: app,core,init.
  -L , --level=
    Show specific level/levels logs with format: level1,level2,level3
    Don't show specific level/levels logs with format: ^level1,level2,level3
    Long and short level string are both accepted
    Long level string coule be: DEBUG/INFO/WARN/ERROR/FATAL.
    Short level string coule be: D/I/W/E/F.
    Default levels are all levels.
  -D , --domain=
    Show specific domain/domains logs with format: domain1,domain2,doman3
    Don't show specific domain/domains logs with format: ^domain1,domain2,doman3
    Max domain count is 5.
    See domain description at the end of this message.
  -T , --tag=
    Show specific tag/tags logs with format: tag1,tag2,tag3
    Don't show specific tag/tags logs with format: ^tag1,tag2,tag3
    Max tag count is 10.
  -P , --pid=
    Show specific pid/pids logs with format: pid1,pid2,pid3
    Don't show specific domain/domains logs with format: ^pid1,pid2,pid3
    Max pid count is 5.
  -e , --regex=
    Show the logs which match the regular expression .
  -v , --format=
    Show logs in different formats, options are:
      color or colour      display colorful logs by log level.i.e.
        DEBUG        INFO        WARN        ERROR       FATAL
      time format options are(single accepted):
        time       display local time, this is default.
        epoch      display the time from 1970/1/1.
        monotonic  display the cpu time from bootup.
      time accuracy format options are(single accepted):
        msec       display time by millisecond, this is default.
        usec       display time by microsecond.
        nsec       display time by nanosecond.
      year       display the year when -v time is specified.
      zone       display the time zone when -v time is specified.
    Different types of formats can be combined, such as:
    -v color -v time -v msec -v year -v zone.
-r
  Remove all logs in hilogd buffer, advanced option:
  -t , --type=
    Remove specific type/types logs in buffer with format: type1,type2,type3
    Type coule be: app/core/init/kmsg.
    Default types are: app,core
-g
  Query hilogd buffer size, advanced option:
  -t , --type=
    Query specific type/types buffer size with format: type1,type2,type3
    Type coule be: app/core/init/kmsg.
    Default types are: app,core
-G , --buffer-size=
  Set hilogd buffer size,  could be number or number with unit.
  Unit could be: B/K/M/G which represents Byte/Kilobyte/Megabyte/Gigabyte.
   range: [64.0K,64.0K].
  Advanced option:
  -t , --type=
    Set specific type/types log buffer size with format: type1,type2,type3
    Type coule be: app/core/init/kmsg.
    Default types are: app,core
  **It's a persistant configuration**
-s, --statistics
  Query log statistic information.
  Set param persist.sys.hilog.stats true to enable statistic.
  Set param persist.sys.hilog.stats.tag true to enable statistic of log tag.
-S
  Clear hilogd statistic information.
-w ,--write=
  Log persistance task control, options are:
    query      query tasks informations
    stop       stop all tasks
    start      start one task
    clear      clear /data/log/hilog/hilog*.gz
  Persistance task is used for saving logs in files.
  The files are saved in directory: /data/log/hilog/
  Advanced options:
  -f , --filename=
    Set log file name, name should be valid of Linux FS.
  -l , --length=
    Set single log file size.  could be number or number with unit.
    Unit could be: B/K/M/G which represents Byte/Kilobyte/Megabyte/Gigabyte.
     range: [64.0K, 512.0M].
  -n , --number
    Set max log file numbers, log file rotate when files count over this number.
     range: [2, 1000].
  -m ,--stream=
    Set log file compressed algorithm, options are:
      none       write file with non-compressed logs.
      zlib       write file with zlib compressed logs.
  -j , --jobid
    Start/stop specific task of .
     range: [10, 0xffffffff).
  User can start task with options (t/L/D/T/P/e/v) as if using them when "Query logs" too.
  **It's a persistant configuration**
-p , --privacy 
  Set HILOG api privacy formatter feature on or off.
  **It's a temporary configuration, will be lost after reboot**
-k , --kmsg 
  Set hilogd storing kmsg log feature on or off
  **It's a persistant configuration**
-Q 
  Set log flow-control feature on or off, options are:
    pidon     process flow control on
    pidoff    process flow control off
    domainon  domain flow control on
    domainoff domain flow control off
  **It's a temporary configuration, will be lost after reboot**
-b , --baselevel=
  Set global loggable level to 
  Long and short level string are both accepted.
  Long level string coule be: DEBUG/INFO/WARN/ERROR/FATAL/X.
  Short level string coule be: D/I/W/E/F/X.
  X means that loggable level is higher than the max level, no log could be printed.
  Advanced options:
  -D , --domain=
    Set specific domain loggable level.
    See domain description at the end of this message.
  -T , --tag=
    Set specific tag loggable level.
    The priority is: tag level > domain level > global level.
  **It's a temporary configuration, will be lost after reboot**
The first layer options can't be used in combination, ILLEGAL expamples:
    hilog -S -s; hilog -w start -r; hilog -p on -k on -b D


Domain description:
  Log type "core" & "init" are used for OS subsystems, the range is [0xd000000,  0xd0fffff]
  Log type "app" is used for applications, the range is [0x0,  0xffff]
  To reduce redundant info when printing logs, only last five hex numbers of domain are printed
  So if user wants to use -D option to filter OS logs, user should add 0xD0 as prefix to the printed domain:
  Exapmle: hilog -D 0xD0xxxxx
  The xxxxx is the domain string printed in logs.


Dictionary description:
-d , --dictionary=
  Set elf file path, name should be valid of Linux FS.
  Rescan the elf file in the system to generate a full data dictionary file

导出日志

$ hdc file recv data/log/hilog/ ./

导出crash日志

hdc file recv data/log/faultlog/faultlogger/ ./

hidumper工具

$ hdc shell hidumper -h

usage:
  -h                          |help text for the tool
  -lc                         |a list of system information clusters
  -ls                         |a list of system abilities
  -c                          |all system information clusters
  -c [base system]            |system information clusters labeled "base" and "system"
  -s                          |all system abilities
  -s [SA0 SA1]                |system abilities labeled "SA0" and "SA1"
  -s [SA] -a ['-h']           |system ability labeled "SA" with arguments "-h" specified
  -e                          |faultlogs of crash history
  --net [pid]                 |dump network information; if pid is specified, dump traffic usage of specified pid
  --storage [pid]             |dump storage information; if pid is specified, dump /proc/pid/io
  -p                          |processes information, include list and information of processes and threads
  -p [pid]                    |dump threads under pid, includes smap, block channel, execute time, mountinfo
  --cpuusage [pid]            |dump cpu usage by processes and category; if PID is specified, dump category usage of specified pid
  --cpufreq                   |dump real CPU frequency of each core
  --mem [pid]                 |dump memory usage of total; dump memory usage of specified pid if pid was specified
  --zip                       |compress output to /data/log/hidumper
  --mem-smaps pid [-v]        |display statistic in /proc/pid/smaps, use -v specify more details
  --mem-jsheap pid [-T tid] [--gc]  |triggerGC and dumpHeapSnapshot under pid and tid

list system abilities

$ hdc shell hidumper -ls

System ability list:
SystemAbilityManager             RenderService                    AbilityManagerService            
DataObserverMgr                  UriPermissionMgr                 AccountMgr                       
BundleMgr                        FormMgr                          ApplicationManagerService        
AccessibilityManagerService      UserIdmService                   UserAuthService                  
AuthExecutorMgrService           PinAuthService                   FaceAuthService                  
FingerprintAuthService           WifiDevice                       WifiHotspot                      
WifiP2p                          WifiScan                         1125                             
1126                             NetConnManager                   NetPolicyManager                 
NetStatsManager                  NetTetheringManager              VPNManager                       
EthernetManager                  NetsysNative                     NetsysExtService                 
DistributedNet                   1181                             HiviewService                    
HiviewFaultLogger                HiviewSysEventService            1204                             
XperfTraceService                HiDumperService                  XpowerManager                    
HiDumperCpuService               DistributedKvData                ContinuationManagerService       
ResourceSched                    BackgroundTaskManager            WorkSchedule                     
ComponentSchedServer             SocPerfService                   DeviceUsageStatistics            
MemoryManagerService             SuspendManager                   AbnormalEfficiencyManager        
ConcurrentTaskService            ResourceQuotaControl             DeviceStandbyService             
TaskHeartbeatMgrService          2901                             DeviceStatusService              
2903                             2904                             2908                             
AudioDistributed                 PlayerDistributedService         CameraService                    
AudioPolicyService               AVSessionService                 AVCodecService                   
MediaKeySystemService            MultimodalInput                  DistributedNotificationService   
CommonEventService               PowerManagerService              BatteryService                   
ThermalService                   BatteryStatisticsService         DisplayPowerManagerService       
AccessTokenManagerService        PrivacyManagerService            KeystoreService                  
DeviceThreatDetectionService     RiskAnalysisManagerService       DataCollectManagerService        
DlpCreService                    SensorService                    MiscDeviceService                
PasteboardService                TimeService                      InputMethodService               
ScreenlockService                WallpaperManagerService          ParamWatcher                     
TelephonyCallManager             TelephonyCellularCall            TelephonyCellularData            
TelephonySmsMms                  TelephonyStateRegistry           TelephonyCoreService             
4011                             TelephonyIms                     ModuleUpdateService              
UsbService                       WindowManagerService             DisplayManagerService            
DSoftbus                         DeviceAuthService                DeviceManagerService             
StorageDaemon                    StorageManager                   HdfDeviceServiceManager          
CloudFileDaemonService           EcologicalRuleManager            UiService                        
UiAppearanceService              CaDaemon                         AssetService                     
9527                             65537                            65570                            
65728                            65777                            65830                            
65850                            65888                            65904                            
65926                            65958                            65962                            
66070                            66090                            70633  

获取到abilities后,就可以指定service获取相关的信息。 比如通过RenderService获取一些信息

$ hdc shell hidumper -s RenderService             

-------------------------------[ability]-------------------------------


----------------------------------RenderService---------------------------------
------Graphic2D--RenderSerice ------
Usage:
 h                             |help text for the tool
screen                         |dump all screen infomation in the system
surface                        |dump all surface information
composer fps                   |dump the fps info of composer
[surface name] fps             |dump the fps info of surface
composer fpsClear              |clear the fps info of composer
[windowname] fps               |dump the fps info of window
[windowname] hitchs            |dump the hitchs info of window
[surface name] fpsClear        |clear the fps info of surface
nodeNotOnTree                  |dump nodeNotOnTree info
allSurfacesMem                 |dump surface mem info
RSTree                         |dump RSTree info
EventParamList                 |dump EventParamList info
allInfo                        |dump all info
dumpMem                        |dump Cache
trimMem cpu/gpu/shader         |release Cache
surfacenode [id]               |dump node info
fpsCount                       |dump the refresh rate counts info
clearFpsCount                  |clear the refresh rate counts info

RenderService

获取分辩率

$ hdc shell hidumper -s RenderService -a screen 

-------------------------------[ability]-------------------------------


----------------------------------RenderService---------------------------------
-- ScreenInfo
screen[0]: id=0, powerstatus=POWER_STATUS_OFF, backlight=21, screenType=EXTERNAL_TYPE, render size: 1260x2720, physical screen resolution: 1260x2720, isvirtual=false, skipFrameInterval_:1

  supportedMode[0]: 1260x2720, refreshrate=120
  supportedMode[1]: 1260x2720, refreshrate=90
  supportedMode[2]: 1260x2720, refreshrate=60
  supportedMode[3]: 1260x2720, refreshrate=30
  activeMode: 1260x2720, refreshrate=60
  capability: name=, phywidth=72, phyheight=156,supportlayers=12, virtualDispCount=0, propCount=0, type=DISP_INTF_HDMI, supportWriteBack=false

获取帧率
首先执行如下命令进入到shell环境

$ hdc shell

然后执行hidumper [surface name] fps , 例如composer fps

$ hidumper -s RenderService -a "composer fps"

-------------------------------[ability]-------------------------------


----------------------------------RenderService---------------------------------

-- The recently fps records info of screens:

The fps of screen [Id:0] is:
107537646652857
107537663200253
107537679747128
107537696352336
107537712846086
107537729390357
107537745974211
107537762468482
107537779015357
107537795561190
107537812110148
107537828651815
107537845349732
...

DisplayManagerService

$ hdc shell hidumper -s DisplayManagerService

-------------------------------[ability]-------------------------------


----------------------------------DisplayManagerService----------------------------------
Usage:
 -h                             |help text for the tool
 -a                             |dump all screen information in the system
 -z                             |switch to fold half status
 -y                             |switch to expand status
 -p                             |switch to fold status
 -f                             |get to fold status

PowerManagerService

$ hdc shell hidumper -s PowerManagerService

-------------------------------[ability]-------------------------------


----------------------------------PowerManagerService----------------------------------
Power manager dump options:
  [-h] [-runninglock]
  description of the cmd option:
    -a: show dump info of all power modules.
    -h: show this help.
    -r: show the information of runninglock.
    -s: show the information of power state machine.
    -d: show power off dialog.

例如上文提到的获取屏幕状态

$ hdc shell hidumper -s PowerManagerService -a -s

BatteryService

$ hdc shell hidumper -s BatteryService

-------------------------------[ability]-------------------------------


----------------------------------BatteryService----------------------------------
Usage:
      -h: dump help
      -i: dump battery info
      -u: unplug battery charging state
      -r: reset battery state
      --capacity : set battery capacity, the capacity range [0, 100]
      --uevent : set battery uevent

例如上文提到的获取电量温度

$ hdc shell hidumper -s BatteryService -a -i                

NetConnManager

$ hdc shell hidumper -s NetConnManager

-------------------------------[ability]-------------------------------


----------------------------------NetConnManager----------------------------------
Net connect Info:
	defaultNetSupplier_ is nullptr
	SupplierId:
	NetId: 0
	ConnStat: 0
	IsAvailable:
	IsRoaming: 0
	Strength: 0
	Frequency: 0
	LinkUpBandwidthKbps: 0
	LinkDownBandwidthKbps: 0
	Uid: 0
Dns result Info:
	netId: 0
	totalReports: 2
	failReports: 2

StorageManager

aa工具

Ability assistant(Ability助手,简称为aa),是实现应用及测试用例启动功能的工具,为开发者提供基本的应用调试和测试能力,例如启动应用组件、强制停止进程、打印应用组件相关信息等。

$ hdc shell aa help
usage: aa  
These are common aa commands list:
  help                        list available commands
  start                       start ability with options
  stop-service                stop service with options
  dump                        dump the ability info
  force-stop     force stop the process with bundle name
  attach                      attach application to enter debug mdoe
  detach                      detach application to exit debug mode
  test                        start the test framework with options
  appdebug                    set / cancel / get waiting debug status

start

stop-service

force-stop

test

attach

detach

appdebug

详细介绍请参考文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/aa-tool.md

bm工具

Bundle Manager(包管理工具,简称bm)是实现应用安装、卸载、更新、查询等功能的工具,bm为开发者提供基本的应用安装包的调试能力,例如:安装应用,卸载应用,查询安装包信息等。

$ hdc shell bm help
usage: bm  
These are common bm commands list:
  help         list available commands
  install      install a bundle with options
  uninstall    uninstall a bundle with options
  dump         dump the bundle info
  get          obtain device udid
  quickfix     quick fix, including query and install
  compile      Compile the software package
  dump-overlay dump overlay info of the specific overlay bundle
  dump-target-overlay dump overlay info of the specific target bundle
  dump-dependencies dump dependencies by given bundle name and module name
  dump-shared dump inter-application shared library information by bundle name
  clean        clean the bundle data

install

uninstall

dump

clean

enable

disable

get

详细介绍请参考文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/bm-tool.md

param工具

param是为开发人员提供用于操作系统参数的工具,该工具只支持标准系统。

$ hdc shell param                                   
Command list:
    param ls [-r] [name]                            --display system parameter
    param get [name]                                --get system parameter
    param set name value                            --set system parameter
    param wait name [value] [timeout]               --wait system parameter
    param dump [verbose]                            --dump system parameter
    param shell [-p] [name] [-u] [username] [-g] [groupname]    --shell system parameter
    param save    

详细介绍请参考文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/param-tool.md

Instrument Test

主要用来做APP 的UI自动化测试,将应用测试包安装到测试设备上,在cmd窗口中执行aa命令,完成对用例测试。

aa test命令执行配置参数

执行参数全写执行参数缩写执行参数含义执行参数示例
–bundleName-b应用 Bundle 名称-b com.test.example
–packageName-p应用模块名,适用于 FA 模型应用-p com.test.example.entry
–moduleName-m应用模块名,适用于 STAGE 模型应用-m entry
NA-s特定参数,以 键值对方式传入-s unittest /ets/testrunner/OpenHarmonyTestRunner
$ hdc shell aa test -h
usage: aa test 
options list:
  -h, --help                                             list available commands
  -b  -s unittest              start the test framework with options
                  [-p ]                    the name of package with test-runner, required for the FA model
                  [-m ]                     the name of module with test-runner, required for the STAGE model
                  [-s class ]
                  [-s level ]
                  [-s size ]
                  [-s testType ]
                  [-s timeout ]
                  [-s  ]
                  [-w ]
                  [-D]

举例

$ hdc shell aa test -b com.example.myapplication -m entry_test -s unittest /ets/testrunner/OpenHarmonyTestRunner -s class UiTestDemo timeout 15000

查看测试结果
cmd模式执行过程,会打印如下相关日志信息。

OHOS_REPORT_STATUS: class=testStop
OHOS_REPORT_STATUS: current=1
OHOS_REPORT_STATUS: id=JS
OHOS_REPORT_STATUS: numtests=447
OHOS_REPORT_STATUS: stream=
OHOS_REPORT_STATUS: test=stop_0
OHOS_REPORT_STATUS_CODE: 1

OHOS_REPORT_STATUS: class=testStop
OHOS_REPORT_STATUS: current=1
OHOS_REPORT_STATUS: id=JS
OHOS_REPORT_STATUS: numtests=447
OHOS_REPORT_STATUS: stream=
OHOS_REPORT_STATUS: test=stop_0
OHOS_REPORT_STATUS_CODE: 0
OHOS_REPORT_STATUS: consuming=4

OHOS_REPORT_RESULT: stream=Tests run: 447, Failure: 0, Error: 1, Pass: 201, Ignore: 245
OHOS_REPORT_CODE: 0

OHOS_REPORT_RESULT: breakOnError model, Stopping whole test suite if one specific test case failed or error
OHOS_REPORT_STATUS: taskconsuming=16029

性能工具

SmartPerf是一款基于系统开发的性能功耗测试工具,操作简单易用。工具可以检测性能、功耗相关指标,包括FPSCPUGPURAMTemp等,通过量化的指标项了解应用性能状况。在开发过程中,使用的可能是有屏或无屏设备,对此SmartPerf提供了两种方式:分别是SmartPerf-DeviceSmartPerf-DaemonSmartPerf-Device适用于有屏设备,支持可视化操作。测试时是通过悬浮窗的开始和暂停来实时展示性能指标数据,保存后可生成数据报告,在报告中可分析各指标数据详情。SmartPerf-Daemon支持shell命令行方式,同时适用于有屏和无屏设备。

  • CPU:每秒读取一次设备节点下CPU大中小核的频点和各核使用率,衡量应用占用CPU资源的情况,占用过多的CPU资源会导致芯片发烫。
  • GPU:每秒读取一次设备节点下GPU的频点和负载信息,衡量应用占用GPU资源的情况,当GPU占用过多时,会导致性能下降,应用程序的运行速度变慢。
  • FPS:应用界面每秒刷新次数,衡量应用画面的流畅度,FPS越高表示图像流畅度越好,用户体验也越好。
  • POWER:每秒读取一次设备节点下的电流及电压信息。
  • TEMP:每秒读取一次设备节点下电池温度、系统芯片温度等信息。
  • RAM:每秒读取一次应用进程的实际物理内存,衡量应用的内存占比情况。
  • snapshot:每秒截取一张应用界面截图。
$ hdc shell

# SP_daemon

// 查看daemon进程是否存在
# ps -ef | grep SP_daemon
root          1584     1 0 21:50:05 ?     00:00:00 SP_daemon
root          1595  1574 3 21:51:02 pts/0 00:00:00 grep SP_daemon

执行查看帮助命令

# SP_daemon --help
OpenHarmony performance testing tool SmartPerf command-line version
Usage: SP_daemon [options] [arguments]

options:
 -N             set the collection times(default value is 0) range[1,2147483647], for example: -N 10
 -PKG           set package name, must add, for example: -PKG ohos.samples.ecg
 -c             get device CPU frequency and CPU usage, process CPU usage and CPU load ..
 -g             get device GPU frequency and GPU load
 -f             get app refresh fps(frames per second) and fps jitters and refreshrate
 -profilerfps   get refresh fps and timestamp
 -sections      set collection time period(using with profilerfps)
 -t             get remaining battery power and temperature..
 -p             get battery power consumption and voltage
 -r             get process memory and total memory
 -snapshot      get screen capture
 -net           get uplink and downlink traffic
 -start         collection start command
 -stop          collection stop command
 -VIEW          set layler, for example: -VIEW DisplayNode
 -screen        get screen resolution
 -OUT           set csv output path.
 -d             get device DDR information
 -m             get other memory
example:
SP_daemon -N 20 -c -g -t -p -r -m -net -snapshot -d
SP_daemon -N 20 -PKG ohos.samples.ecg -c -g -t -p -f -r -m -net -snapshot -d
SP_daemon -start -c
SP_daemon -stop
SP_daemon -screen

基于hdc命令行的SmartPerf性能工具使用详细文档参考这个:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/application-test/smartperf-guidelines.md

参考链接

  • https://gitee.com/openharmony/developtools_hdc
  • https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/ide-command-line-hdc-0000001237908229-V2#section116322265308
  • https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/application-test/smartperf-guidelines.md
  • https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/aa-tool.md
  • https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/bm-tool.md
  • https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/param-tool.md
  • https://github.com/mzlogin/awesome-adb

本文地址:https://www.vps345.com/9121.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 网络工程师 网络管理 软考 2024 2024年上半年 下午真题 答案 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 python MCP 阿里云 网络 网络安全 网络协议 ubuntu ssh 进程 操作系统 进程控制 Ubuntu deepseek Ollama 模型联网 API CherryStudio Qwen2.5-coder 离线部署 RTSP xop RTP RTSPServer 推流 视频 数据库 centos oracle 关系型 安全 分布式 llama 算法 opencv 自然语言处理 神经网络 语言模型 javascript 前端 chrome edge 英语 php 开发语言 macos windows conda harmonyos 华为 typescript 计算机网络 数据库系统 笔记 adb fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse Deepseek Deepseek-R1 大模型 私有化部署 推理模型 DNS 容器 c语言 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 人工智能 jvm 虚拟机 mysql android 经验分享 tcp/ip ip协议 debian PVE docker java ubuntu 18.04 安装教程 nginx 负载均衡 tomcat 深度学习 计算机视觉 卷积神经网络 vue.js spring boot 开发环境 vscode gnu fstab 学习方法 学习 jellyfin nas DeepSeek-R1 API接口 openvpn server openvpn配置教程 centos安装openvpn https 后端 c++ 并查集 leetcode 智能路由器 外网访问 内网穿透 端口映射 apache json kafka 机器学习 USB转串口 CH340 Hyper-V WinRM TrustedHosts gcc centos 7 mcu 单片机 科技 ai 个人开发 ssh漏洞 ssh9.9p2 CVE-2025-23419 大数据 spark hive Dify 高级IO epoll pip react.js 前端面试题 node.js 持续部署 ide AI编程 数据分析 C# MQTTS 双向认证 emqx jenkins gitee redis 环境变量 kylin asm ollama llm 部署 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 数据结构 mac 游戏程序 ios Docker Hub docker pull 镜像源 daemon.json Linux k8s kubernetes vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 串口服务器 rust腐蚀 HarmonyOS Next 媒体 自动化 Agent DeepSeek LLM CrewAI onlyoffice burp suite 抓包 AI dify YOLO efficientVIT YOLOv8替换主干网络 TOLOv8 spring elasticsearch VMware安装mocOS VMware macOS系统安装 ddos HCIE 数通 运维开发 云原生 目标检测 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 http Flask FastAPI Waitress Gunicorn uWSGI Uvicorn unix 产品经理 agi microsoft 机器人 vim 多线程 windows 服务器安装 Linux PID 指令 C 进程地址空间 udp 本地环回 bind websocket ip JAVA Java spring cloud vnc compose devops 集成学习 集成测试 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 rabbitmq golang 面试 github eureka svn 架构 pytorch transformer numpy Hive环境搭建 hive3环境 Hive远程模式 qt QT 5.12.12 QT开发环境 Ubuntu18.04 web安全 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 DevEco Studio 创意 社区 CPU 内存 主板 电源 网卡 互信 进程信号 华为云 物联网 java-rabbitmq pycharm oceanbase 传统数据库升级 银行 flutter 私有化 本地部署 鸿蒙 Alexnet etcd 数据安全 RBAC stm32项目 stm32 开源 milvus rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK rust maxkb ARG zotero WebDAV 同步失败 代理模式 策略模式 程序员创富 nlp 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 virtualenv centos-root /dev/mapper yum clean all df -h / du -sh xcode audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 iftop 网络流量监控 cron crontab日志 vmware 卡死 嵌入式 linux驱动开发 arm开发 嵌入式硬件 AI大模型 大模型技术 本地部署大模型 ip命令 新增网卡 新增IP 启动网卡 dubbo SRS 流媒体 直播 性能优化 jdk intellij-idea MacOS录屏软件 .netcore c# perf yolov5 powerpoint bash 链表 C语言 ssl WebUI DeepSeek V3 前端框架 计算机外设 bug cursor ui 华为od oracle fusion oracle中间件 课程设计 sublime text 编辑器 Dell R750XS 实时音视频 实时互动 unity 虚拟现实 网络药理学 生信 生物信息学 gromacs 分子动力学模拟 MD 动力学模拟 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 WSL2 上安装 Ubuntu 电脑 软件需求 uni-app 进程优先级 调度队列 进程切换 远程连接 rdp 实验 outlook 错误代码2603 无网络连接 2603 matplotlib fonts-noto-cjk 微信 微信分享 Image wxopensdk GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 yum docker-compose docker compose ue5 vr prometheus 监控k8s集群 集群内prometheus git 思科 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 java-ee iot 信息与通信 聚类 protobuf 序列化和反序列化 安装 VMware创建虚拟机 强制清理 强制删除 mac废纸篓 postgresql 腾讯云 系统安全 kamailio sip VoIP sqlite3 grafana 缓存 .net 系统架构 微服务 设计模式 软件工程 python2 ubuntu24.04 AIGC sqlserver Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 sql AI写作 xml 爬虫 实战案例 主从复制 网络结构图 axure 富文本编辑器 rag ragflow 大模型部署 命名管道 客户端与服务端通信 ESP32 虚拟显示器 远程控制 webrtc 自动化运维 流水线 脚本式流水线 豆瓣 追剧助手 迅雷 vSphere vCenter 软件定义数据中心 sddc IPMI 远程 命令 执行 sshpass 操作 电子信息 通信工程 毕业 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 gitlab camera Arduino aws googlecloud FTP 服务器 WSL2 Ubuntu共享文件夹 共享目录 Linux共享文件夹 linux内核 Chatbox cpu 实时 使用 GCC aarch64 编译安装 HPC 知识库 本地化部署 大语言模型 LLMs selenium 测试工具 域名服务 DHCP 符号链接 配置 深度求索 私域 iperf3 带宽测试 监控 驱动开发 硬件工程 嵌入式实习 RAGFLOW 迁移指南 ipython 系统开发 binder 车载系统 framework 源码环境 Cline 自动化编程 安卓模拟器 rocketmq Cursor visual studio code ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 tcp html5 firefox YOLOv8 NPU Atlas800 A300I pro asi_bench arm ros2 moveit 机器人运动 chatgpt 腾讯云大模型知识引擎 报错 读写锁 编程 Ubuntu22.04 虚拟化 开发人员主页 pygame flash-attention mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 minicom 串口调试工具 django flask web3.py 区块链 客户端 低代码 alias unalias 别名 NFS Kali Linux 黑客 渗透测试 信息收集 程序人生 remote-ssh frp 僵尸进程 Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer mybatis YOLOv12 VMware安装Ubuntu Ubuntu安装k8s ux 目标跟踪 OpenVINO 推理应用 gpu算力 vue edge浏览器 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 html shell Linux 维护模式 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 5G 3GPP 卫星通信 dell服务器 中间件 iis OpenManus live555 源码剖析 rtsp实现步骤 流媒体开发 ffmpeg 音视频 Invalid Host allowedHosts open webui 微信小程序 miniapp 真机调试 调试 debug 断点 网络API请求调试方法 虚拟局域网 CLion IDE 温湿度数据上传到服务器 Arduino HTTP 远程看看 远程协助 政务 分布式系统 监控运维 Prometheus Grafana 向日葵 软件构建 tcpdump ansible playbook 剧本 mongodb 远程工作 环境配置 安防软件 database Ubuntu Server Ubuntu 22.04.5 1024程序员节 多线程服务器 Linux网络编程 burpsuite 安全工具 mac安全工具 burp安装教程 渗透工具 视频编解码 rc.local 开机自启 systemd 麒麟 计算生物学 生物信息 基因组 设置代理 实用教程 WLAN 博客 rancher DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 cuda 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 基础环境 ping++ 工业4.0 压测 ECS 云桌面 微软 AD域控 证书服务器 TrueLicense Samba NAS 统信UOS bonding 链路聚合 3d 数学建模 linux上传下载 export import save load 迁移镜像 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos ESXi windows日志 springcloud jupyter 飞牛nas fnos ollama下载加速 list 模拟实现 云原生开发 K8S k8s管理系统 nftables 防火墙 磁盘监控 go 文件系统 路径解析 threejs 3D okhttp mq 离线部署dify file server http server web server MQTT协议 消息服务器 代码 deepseek-r1 大模型本地部署 网易邮箱大师 IM即时通讯 QQ 企业微信 剪切板对通 HTML FORMAT ubuntu20.04 ros ros1 Noetic 20.04 apt 安装 fd 文件描述符 selete 蓝耘科技 元生代平台工作流 ComfyUI 串口驱动 CH341 uart 485 生活 seatunnel 银河麒麟 kylin v10 麒麟 v10 监控k8s 监控kubernetes tar ragflow 源码启动 UOS 统信操作系统 隐藏文件 隐藏目录 管理器 通配符 bcompare Beyond Compare hadoop ue4 着色器 虚幻 LDAP rpc log4j 开发 llama3 Chatglm 开源大模型 cudnn anaconda 镜像下载 freebsd WebVM 交互 Reactor C++ 深度优先 图论 并集查找 换根法 树上倍增 maven intellij idea linux安装配置 Google pay Apple pay kali 共享文件夹 键盘 程序 性能分析 HiCar CarLife+ CarPlay QT RK3588 中兴光猫 换光猫 网络桥接 自己换光猫 jmeter 软件测试 安卓 fpga开发 鸿蒙系统 灵办AI firewalld 数据集 银河麒麟服务器操作系统 系统激活 openwrt springboot KingBase UEFI Legacy MBR GPT U盘安装操作系统 大数据平台 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 话题通信 服务通信 嵌入式系统开发 Windsurf postman wireshark 显示过滤器 ICMP Wireshark安装 权限 jar gradle 多层架构 解耦 rime 王者荣耀 智能手机 Termux oneapi express p2p KylinV10 麒麟操作系统 Vmware mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 华为认证 交换机 docker run 数据卷挂载 交互模式 TCP WebServer IIS服务器 IIS性能 日志监控 iBMC UltraISO AI-native Docker Desktop 无人机 pillow rtsp rtp 代码调试 ipdb gpt linux环境变量 视觉检测 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 浪潮信息 AI服务器 WSL win11 无法解析服务器的名称或地址 Linux的权限 MacMini Mac 迷你主机 mini Apple webstorm 社交电子 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 工具 EasyConnect hibernate arcgis 具身智能 强化学习 RustDesk自建服务器 rustdesk服务器 docker rustdesk 服务器扩容没有扩容成功 PX4 ROS NLP模型 NLP 自学笔记 小米 澎湃OS Android 自动驾驶 Anolis nginx安装 环境安装 linux插件下载 Docker Compose 宝塔面板 同步 备份 建站 VR手套 数据手套 动捕手套 动捕数据手套 pyautogui Ark-TS语言 css 职场和发展 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 单例模式 群晖 飞牛 双系统 软链接 硬链接 直流充电桩 充电桩 视频平台 录像 视频转发 性能测试 视频流 存储 SEO zabbix 漏洞 交叉编译 HarmonyOS Tabs组件 TabContent TabBar TabsController 导航页签栏 滚动导航栏 ssrf 失效的访问控制 Helm k8s集群 openEuler 代理 unity3d AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 mamba curl wget nac 802.1 portal SSL证书 火绒安全 云服务器 VPS Nuxt.js prompt bot Docker mariadb 联网 easyconnect cmos 硬件 推荐算法 TRAE 输入法 clickhouse 容器技术 av1 电视盒子 机顶盒ROM 魔百盒刷机 信号 内核 xrdp 远程桌面 sonoma 自动更新 重启 排查 系统重启 日志 原因 Mermaid 可视化图表 自动化生成 Ubuntu 24.04.1 轻量级服务器 CORS 跨域 neo4j 数据仓库 数据库开发 数据库架构 cd 目录切换 ruby 搜索引擎 飞书 VSCode uniapp odoo 服务器动作 Server action 安装MySQL 恒源云 环境迁移 keepalived ArcTS 登录 ArcUI GridItem arkUI idm GRUB引导 Linux技巧 ceph HarmonyOS NEXT 原生鸿蒙 apt 国内源 chrome devtools chromedriver tensorflow ci/cd DocFlow 图像处理 Linux Vim banner 数据管理 数据治理 数据编织 数据虚拟化 信号处理 yaml Ultralytics 可视化 matlab Reactor反应堆 ubuntu24 vivado24 Web服务器 多线程下载工具 网络编程 PYTHON xpath定位元素 k8s集群资源管理 移动云 android studio 鲲鹏 Zoertier 内网组网 SSH 能力提升 面试宝典 技术 IT信息化 树莓派 VNC 其他 code-server Open WebUI llama.cpp rustdesk wsl OpenHarmony Kylin-Server 国产操作系统 服务器安装 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 excel Web应用服务器 netty jina eclipse nfs 本地部署AI大模型 echarts 信息可视化 网页设计 SSL 域名 系统 黑苹果 小游戏 五子棋 c sdkman n8n dity make minio java-rocketmq 状态管理的 UDP 服务器 Arduino RTOS pdf 压力测试 ukui 麒麟kylinos openeuler npm telnet 远程登录 图形渲染 统信 虚拟机安装 Windows redhat 服务器管理 配置教程 网站管理 Linux的基础指令 实习 nvidia searxng CentOS Stream CentOS 计算机 黑客技术 代码规范 scikit-learn URL 相机 api web pyqt UOS1070e 代码托管服务 nvm python3.11 RTMP 应用层 ebpf uprobe 执法记录仪 智能安全帽 smarteye 混合开发 JDK Carla 智能驾驶 ROS2 SysBench 基准测试 zip unzip opensearch helm kernel firewall 微信开放平台 微信公众平台 微信公众号配置 MI300x WebRTC 金仓数据库 2025 征文 数据库平替用金仓 蓝桥杯 网页服务器 web服务器 Nginx elk mysql离线安装 ubuntu22.04 mysql8.0 源码 毕业设计 open Euler dde deepin webgl Python 聊天服务器 套接字 Socket 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 IIS .net core Hosting Bundle .NET Framework vs2022 功能测试 自动化测试 r语言 数据可视化 考研 在线office 京东云 程序员 游戏服务器 Minecraft string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap TrinityCore 魔兽世界 命令行 基础入门 Isaac Sim 虚拟仿真 docker命令大全 sysctl.conf vm.nr_hugepages ubuntu24.04.1 adobe chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 DeepSeek r1 Dell HPE 联想 浪潮 文件分享 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 技能大赛 NPS 雨云服务器 雨云 可信计算技术 密码学 电视剧收视率分析与可视化平台 springsecurity6 oauth2 授权服务器 token sas 文心一言 崖山数据库 YashanDB 宝塔 samba 宝塔面板无法访问 服务器配置 Redis Desktop top Linux top top命令详解 top命令重点 top常用参数 开机黑屏 lio-sam SLAM rsyslog asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 rclone AList webdav fnOS 网络攻击模型 Node-Red 编程工具 流编程 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 前后端分离 virtualbox 银河麒麟操作系统 国产化 服务器部署ai模型 MySql iphone gpt-3 云电竞 云电脑 todesk 飞牛NAS 飞牛OS MacBook Pro harmonyOS面试题 vite 三级等保 服务器审计日志备份 端口测试 cnn 邮件APP 免费软件 大模型面经 大模型学习 显卡驱动 AnythingLLM AnythingLLM安装 kvm 无桌面 risc-v 矩阵 ecmascript nextjs react reactjs 序列化反序列化 ftp服务 文件上传 safari 流式接口 历史版本 下载 Qualcomm WoS QNN AppBuilder 人工智能生成内容 etl 金融 联想开天P90Z装win10 内网环境 Linux24.04 bootstrap k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 浏览器自动化 can 线程池 网站搭建 serv00 Trae AI 原生集成开发环境 Trae AI Jellyfin 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors grub 版本升级 扩容 easyui langchain 网工 uv copilot 游戏引擎 线程 宕机切换 服务器宕机 拓扑图 硬件架构 健康医疗 互联网医院 make命令 makefile文件 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 Playwright next.js 部署next.js DOIT 四博智联 ssh远程登录 Unity Dedicated Server Host Client 无头主机 热榜 P2P HDLC ocr visual studio c/c++ 串口 用户缓冲区 hugo 镜像 支付 微信支付 开放平台 SWAT 配置文件 服务管理 网络共享 kotlin thingsboard 昇腾 npu glibc RAID RAID技术 磁盘 毕昇JDK vmamba 多进程 HP Anyware 智能音箱 智能家居 AI代码编辑器 半虚拟化 硬件虚拟化 Hypervisor es6 qt6.3 g726 免费域名 域名解析 wps 相差8小时 UTC 时间 cocoapods micropython esp32 mqtt 思科模拟器 Cisco Typore SenseVoice XFS xfs文件系统损坏 I_O error 安全架构 安全威胁分析 直播推流 DIFY es vu大文件秒传跨域报错cors SSH 服务 SSH Server OpenSSH Server pgpool yolov8 dba Attention 田俊楠 dash 正则表达式 Kali 渗透 设备 GPU PCI-Express rnn 边缘计算 deep learning gitea KVM VMware Tools vmware tools安装 vmwaretools安装步骤 vmwaretools安装失败 vmware tool安装步骤 vm tools安装步骤 vm tools安装后不能拖 vmware tools安装步骤 算力 Vmamba FunASR ASR 版本 内网渗透 靶机渗透 IO lb 协议 saltstack 匿名管道 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 notepad Cookie 毕设 Wi-Fi RAG 检索增强生成 文档解析 大模型垂直应用 机柜 1U 2U VPN wireguard trea idea composer ruoyi 开机自启动 7z 医疗APP开发 app开发 产测工具框架 IMX6ULL 管理框架 服务器时间 ecm bpm 模拟器 教程 openstack Xen W5500 OLED u8g2 TCP服务器 chfs ubuntu 16.04 图形化界面 MNN Qwen qemu libvirt xfce 网络穿透 vasp安装 React Next.js 开源框架 网络爬虫 AutoDL 云耀服务器 lvm 磁盘挂载 磁盘分区 Erlang OTP gen_server 热代码交换 事务语义 致远OA OA服务器 服务器磁盘扩容 iDRAC R720xd OD机试真题 华为OD机试真题 服务器能耗统计 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 智慧农业 开源鸿蒙 团队开发 dns 磁盘清理 cfssl gaussdb 跨平台 less Xinference RAGFlow k8s部署 MySQL8.0 高可用集群(1主2从) 测试用例 kind AI作画 聊天室 Linux权限 权限命令 特殊权限 MCP server C/S ArkUI ArkTS 移动端开发 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 工作流 workflow 繁忙 服务器繁忙 解决办法 替代网站 汇总推荐 AI推理 powerbi OpenSSH 远程过程调用 Windows环境 CDN muduo X11 Xming db MAC SecureCRT fast 大模型入门 大模型教程 单元测试 XCC Lenovo bat MDK 嵌入式开发工具 论文笔记 大模型应用 conda配置 conda镜像源 AISphereButler vpn embedding IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 换源 Debian 开源软件 wsgiref Web 服务器网关接口 linux 命令 sed 命令 skynet Xterminal 孤岛惊魂4 ShenTong 图片增强 增强数据 crosstool-ng 自动化任务管理 vscode 1.86 大屏端 jetty undertow x64 SIGSEGV SSE xmm0 稳定性 看门狗 LORA 智能电视 wsl2 ArkTs 显示管理器 lightdm gdm trae 高效I/O yum源切换 更换国内yum源 MQTT 消息队列 Mac内存不够用怎么办 ELF加载 opcua opcda KEPServer安装 大模型微调 硅基流动 ChatBox 弹性计算 裸金属服务器 弹性裸金属服务器 分析解读 big data 游戏机 服务器主板 AI芯片 k8s二次开发 集群管理 Netty 即时通信 NIO stable diffusion MS Materials 国产数据库 瀚高数据库 数据迁移 下载安装 GameFramework HybridCLR Unity编辑器扩展 自动化工具 DeepSeek行业应用 Heroku 网站部署 DBeaver visualstudio IPMITOOL BMC 硬件管理 CosyVoice nacos nuxt3 华为证书 HarmonyOS认证 华为证书考试 asp.net大文件上传下载 sqlite 小艺 Pura X 云服务 openssl opengl MAVROS 四旋翼无人机 业界资讯 模拟退火算法 框架搭建 mosquitto 回显服务器 UDP的API使用 fork wait waitpid exit 办公自动化 pdf教程 eNSP 网络规划 VLAN 企业网络 su sudo 宠物 免费学习 宠物领养 宠物平台 小智 docker部署Python docker desktop image MobaXterm 文件传输 大模型训练/推理 推理问题 mindie 银河麒麟高级服务器 外接硬盘 Kylin proxy模式 zookeeper 一切皆文件 根服务器 搭建个人相关服务器 ftp 升级 CVE-2024-7347 g++ g++13 vscode1.86 1.86版本 ssh远程连接 laravel hosts LLM Web APP Streamlit junit 运维监控 进程间通信 架构与原理 内网服务器 内网代理 内网通信 csrutil mac恢复模式进入方法 SIP 恢复模式 Qwen2.5-VL vllm 软件卸载 系统清理 word 需求分析 规格说明书 蓝牙 DenseNet 反向代理 iTerm2 免密 公钥 私钥 HistoryServer Spark YARN jobhistory xshell termius iterm2 服务器部署 本地拉取打包 高德地图 鸿蒙接入高德地图 HarmonyOS5.0 nosql 极限编程 冯诺依曼体系 IDEA 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 服务网格 istio js lua vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 Linux环境 虚幻引擎 多产物 对比 meld DiffMerge wpf 华为OD 可以组成网络的服务器 win服务器架设 windows server 合成模型 扩散模型 图像生成 项目部署 网络文件系统 视频监控 网站 知识图谱 抓包工具 Headless Linux v10 软件 scapy 计算机科学与技术 grep midjourney 鸿蒙开发 移动开发 语法 sentinel Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 烟花代码 烟花 元旦 LInux react native deployment daemonset statefulset cronjob 大大通 第三代半导体 碳化硅 whistle ai工具 sequoiaDB 捆绑 链接 谷歌浏览器 youtube google gmail 网卡的名称修改 eth0 ens33 状态模式 技术共享 PPI String Cytoscape CytoHubba prometheus数据采集 prometheus数据模型 prometheus特点 NAT转发 NAT Server pyicu 项目部署到linux服务器 项目部署过程 加解密 Yakit yaklang VS Code WINCC retry 重试机制 干货分享 黑客工具 密码爆破 h.264 常用命令 文本命令 目录命令 AD 域管理 regedit 开机启动 cpp-httplib yashandb C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 Apache Beam 批流统一 案例展示 数据分区 容错机制 web3 seleium 抗锯齿 CPU 使用率 系统监控工具 linux 命令 小智AI服务端 xiaozhi TTS Mac软件 IO模型 netlink libnl3 Ardupilot 钉钉 IMM 大版本升 升级Ubuntu系统 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 底层实现 ranger MySQL8.0 gunicorn Office 玩机技巧 软件分享 软件图标 Ubuntu 22.04 算家云 算力租赁 环境搭建 Maven 僵尸世界大战 游戏服务器搭建 dock 加速 网络建设与运维 Python基础 Python教程 Python技巧 工具分享 移动魔百盒 IMX317 MIPI H265 VCU swoole Claude Sealos ldap mcp服务器 client close uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 沙盒 GIS 遥感 WebGIS 端口 查看 ss 日志分析 系统取证 多个客户端访问 IO多路复用 TCP相关API 端口号 开放端口 访问列表 多路转接 tailscale derp derper 中转 triton 模型分析 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 H3C 游戏开发 deepseek r1 hexo 超融合 glm4 空间 查错 USB网络共享 Xshell 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 浏览器开发 AI浏览器 我的世界服务器搭建 minecraft 实时内核 nohup后台启动 个人博客 xss 分布式训练 navicat sudo原理 su切换 数码 联机 僵尸毁灭工程 游戏联机 开服 软负载 perl ECT转485串口服务器 ECT转Modbus485协议 ECT转Modbus串口服务器 佛山戴尔服务器维修 佛山三水服务器维修 企业网络规划 华为eNSP nohup 异步执行 阻塞队列 生产者消费者模型 服务器崩坏原因 笔灵AI AI工具 Spring Security 我的世界 我的世界联机 iNode Macos kerberos TCP协议 阿里云ECS env 变量 线性代数 电商平台 ISO镜像作为本地源 FTP服务器 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 音乐服务器 Navidrome 音流 Logstash 日志采集 mysql安装报错 windows拒绝安装 Radius 嵌入式Linux IPC 负载测试 桌面环境 dns是什么 如何设置电脑dns dns应该如何设置 备选 调用 示例 EMUI 回退 降级 代理服务器 影刀 #影刀RPA# 玩游戏 北亚数据恢复 oracle数据恢复 物联网开发 多端开发 智慧分发 应用生态 鸿蒙OS DevOps 软件交付 数据驱动 AI agent iventoy VmWare OpenEuler ufw 语音识别 diskgenius EMQX 通信协议 Docker快速入门 问题解决 AzureDataStudio ollama api ollama外网访问 qps 高并发 论文阅读 做raid 装系统 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 元服务 应用上架 计算虚拟化 弹性裸金属 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 信创 信创终端 中科方德 qt5 客户端开发 进程程序替换 execl函数 execv函数 execvp函数 execvpe函数 putenv函数 figma beautifulsoup flink 远程服务 性能调优 安全代理 MacOS wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 GoogLeNet AD域 EVE-NG 网络搭建 神州数码 神州数码云平台 云平台 shell脚本免交互 expect linux免交互 rpa 授时服务 北斗授时 终端工具 远程工具 查看显卡进程 fuser ArtTS umeditor粘贴word ueditor粘贴word ueditor复制word ueditor上传word图片 ueditor导入word ueditor导入pdf ueditor导入ppt ShapeFile GeoJSON 单一职责原则 Linux find grep deekseek HTTP 服务器控制 ESP32 DeepSeek cmake 银河麒麟桌面操作系统 Kylin OS 端口聚合 windows11 欧标 OCPP 查询数据库服务IP地址 SQL Server 本地知识库部署 DeepSeek R1 模型 达梦 DM8 ajax 华为机试 lighttpd安装 Ubuntu配置 Windows安装 服务器优化 自定义客户端 SAS deepseak 豆包 KIMI 腾讯元宝 CNNs 图像分类 qt项目 qt项目实战 qt教程 音乐库 李心怡 System V共享内存 进程通信 国标28181 监控接入 语音广播 流程 SDP AI员工 sublime text3 armbian u-boot tidb GLIBC pppoe radius MVS 海康威视相机 openjdk HAProxy mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 弹性服务器 autoware 接口优化 新盘添加 partedUtil GRE 零售 分布式账本 智能合约 信任链 共识算法 服务器ssl异常解决 配置原理 linuxdeployqt 打包部署程序 appimagetool 显示器 安全漏洞 信息安全 webview resolv.conf Pyppeteer 解决方案 Echarts图表 折线图 柱状图 异步动态数据 可视化效果 桌面快捷方式 termux 框架 流量运营 内存管理 macOS Claude Desktop Claude MCP Windows Cli MCP css3 显卡驱动持久化 GPU持久化 输入系统 WireGuard 异地组网 充电桩平台 充电桩开源平台 Unity插件 java-zookeeper IPv6 IPv6测试 IPv6测速 IPv6检测 IPv6查询 zerotier 分子对接 autodock mgltools PDB PubChem UDP initramfs Linux内核 Grub 锁屏不生效 NFC 近场通讯 智能门锁 AI Agent 字节智能运维 快捷键 旋转屏幕 自动操作 动静态库 IP配置 netplan 存储维护 NetApp存储 EMC存储 管道 粘包问题 AimRT 搜狗输入法 中文输入法 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 西门子PLC 通讯 LVM lvresize 磁盘扩容 pvcreate SystemV 终端 考试 打不开xxx软件 无法检查其是否包含恶意软件 arkTs ABAP 脚本 蓝桥杯C++组 yum换源 带外管理 fiddler SVN Server tortoise svn 全文检索 图搜索算法 chromium dpi 7-zip GeneCards OMIM TTD postgres Dify重启后重新初始化 智能体开发 数字证书 签署证书 行情服务器 股票交易 速度慢 切换 股票量化接口 股票API接口 archlinux kde plasma autodl ardunio BLE solidworks安装 pyside6 界面 大模型推理 llamafactory 微调 电路仿真 multisim 硬件工程师 硬件工程师学习 电路图 电路分析 仪器仪表 VGG网络 卷积层 池化层 电脑桌面出现linux图标 电脑桌面linux图标删除不了 电脑桌面Liunx图标删不掉 linux图标删不掉 风扇控制软件 服务器正确解析请求体 网络原理 用户管理 Python 视频爬取教程 Python 视频爬取 Python 视频教程 程序化交易 量化交易 高频交易 支持向量机 文件存储服务器组件 logstash 动态规划 RDP Bug解决 Qt platform OpenCV 商用密码产品体系 pthread kubeless 软件开发 hdc 鸿蒙NEXT 免费 ubuntu安装 linux入门小白 macbook rtc c/s 机械臂 跨域请求 massa sui aptos sei IPv4/IPv6双栈 双栈技术 网路规划设计 ensp综合实验 IPv4过渡IPv6 IPv4与IPv6 券商 股票交易接口api 类型 特点 金仓数据库概述 金仓数据库的产品优化提案 GPU训练 Webserver 异步 区块链项目 PyQt PySide6 哈希算法 星河版 三次握手 子系统 servlet Ubuntu20.04 2.35 post.io 企业邮箱 搭建邮箱 设计规范 设备树 源代码管理 #STC8 #STM32 localhost 物理地址 页表 虚拟地址 NVML nvidia-smi element-ui 上传视频并预览视频 vue上传本地视频及进度条功能 vue2选择视频上传到服务器 upload上传视频组件插件 批量上传视频 限制单个上传视频 飞腾处理器 海康