首页 > 其他分享 >OpenharmonyOS HDC命令集合

OpenharmonyOS HDC命令集合

时间:2024-09-10 13:23:51浏览次数:3  
标签:dump -- hmapp list OpenharmonyOS hdc 集合 HDC com

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    //<IP>:<Port>形式的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 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>
options list:
  -h, --help                           list available commands
  -a, --all                            list all bundles in system
  -n, --bundle-name <bundle-name>      list the bundle info by a bundle name
  -s, --shortcut-info                  list the shortcut info
  -d, --device-id <device-id>          specify a device id
  -u, --user-id <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"
}

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

清除应用数据

$ hdc shell bm clean -h

usage: bm clean <options>
options list:
  -h, --help                                      list available commands
  -n, --bundle-name  <

标签:dump,--,hmapp,list,OpenharmonyOS,hdc,集合,HDC,com
From: https://blog.csdn.net/sdrgtywretyeruet/article/details/142071510

相关文章

  • 集合底层学习笔记
    集合的底层原理数据结构中有数组和链表来实现对数据的存储,但这两者基本上就是两个极端。数组:数组存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找时间复杂度很小,为O(1);数组的特点是:寻址容易,插入和删除困难。链表:链表存储区间不连续,占用内存比较宽松,故空......
  • LeetCode 刷题—集合
    一:集合1、特点:元素没有顺序;不重复2、集合可以用来检擦某个元素是否存在;或者检查是否从在重复的元素3、常见的操作:#创建集合my_set={1,2,3,4,5}#添加元素my_set.add(6)#访问元素(集合是无序的;不能通过下标索引访问元素;只能通过遍历访问元素)foriinmy_set:print(i)#......
  • Java中的集合框架深度解析:从ArrayList到ConcurrentHashMap的性能考量
    Java中的集合框架深度解析:从ArrayList到ConcurrentHashMap的性能考量大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Java的集合框架为开发者提供了多种数据结构,每种数据结构都有其特定的使用场景和性能特征。本文将深度解析Java中的主要集合类,从Array......
  • C++小游戏集合3个(不定时更新)1
    前言在Dvec++中想做游戏是很难的,但我不这么想,在下写了一些小游戏给客官看看一,2048#include<iostream>#include<vector>#include<ctime>#include<cstdlib>usingnamespacestd;classGame_2048{public:Game_2048();~Game_2048();voidintroduction()......
  • Python3 学习笔记4-列表、元组、字典、集合、条件控制和循环语句
    目录一、列表:(1)Python3 列表: (2) 访问列表中的值: (3)列表更新:(4)列表元素删除: (5)列表脚本操作符 : (6)列表截取与拼接: (7)嵌套列表: (8)列表之间比较: (9)列表函数使用方法: 二、元组:(1)创建元组:(2)访问元组元素:(3)元组切片:(4)元组拼接:(5)元组重复:(7)元组内置函数:(8)元组比较:(9)注意......
  • VBA之Word应用第三章第一节:文档集合Documents 对象
    《VBA之Word应用》(版权10178982),是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让大家感受到WordVBA的妙处。这套教程是专门针对WORDVBA的教程,是VBA中的稀缺资源,我给这套教程分归为......
  • 【Day07-集合-Map&Stream&递归】
            可变参数        就是一种特殊形参,定义在方法、构造器的形参列表里,定义格式是:方法名(数据类型... 形参名称){ }                 可变参数的特点和好处特点:可以不传数据给它;可以传一个或者同时传多个数据给它;也可以传一个数......
  • LeetCodeTest算法测试 传递一个数组和一个特定的目标整型数字,返回的两个数组元素相加
    1importjava.util.ArrayList;2importjava.util.List;34publicclassLeetCodeTest{5publicstaticvoidmain(String[]args){67int[]intArr=newint[]{2,7,11,15};8List<CustomerIntIndex>customerIntIndexL......
  • Java集合
    Java集合一、什么是Java集合?主要组成部分:二、Collections工具类1.**排序相关方法**:2.**查找和替换相关方法**:3.**同步和不可变集合相关方法**:4.**打乱顺序相关方法**:5.**集合频率与填充相关方法**:6.**集合比较相关方法**:7.**集合旋转相关方法**:8.**集合交换相关......
  • 集合
    介绍集合可以存放引用数据类型,但是不能存放基本数据类型,如果想要存放基本数据类型,需要将基本数据类型转换为它的包装类,再存放进集合中。集合的长度可以自动改变,添加元素时集合长度自动变大,删除元素时集合长度自动变小。Java提供了很多种集合,最常用的是ArrayList。ArrayList......