【HarmonyOS】元服务启动命令漫谈

在日常开发中,我们可以通过DevEco Studio,直接Run我们的元服务工程,在测试机上拉起我们开发的元服务页面。但是我们自己打包HarmonyOS元服务hap在手机上安装后是没有桌面图标的。虽然我们可以在设置的服务管理中找到我们安装的元服务,但是无法直接打开,这就需要通过命令行的方式来启动了。

 

【切入点】

我们主要从IDE工具是如何启动元服务的过程来探索对应的启动命令,这边对API6-API8和API9做一个区分,原因在下文的内容中会有对应的描述。

 

【HarmonyOS API6-API8】

API6-API8的工程都是基于FA模型开发的,在IDE Run的过程中,我们可以在Run窗口中看到以下命令:

cke_12519.png​​

这边对输出框中的命令做一下相关的解释

1、$ hdc shell am force-stop com.example.arktsdemo

这边的am force-stop命令是强制关闭应用的命令,后面加的是需要关闭的bundleName

2、$ hdc shell bm uninstall com.example.arktsdemo

bm uninstal这个命令就比较简单了,是用来删除设备上对应bundleName的应用

3、$ hdc file send D:\AGC_Codelabs\Codelabs\ohos_ArkUI\ArkTsDemo\entry\build\default\outputs\default\entry-default-signed.hap /sdcard/c27bd3aeb0334f0caebc9749a5f3ff42/entry-default-signed.hap

这个命令是把我们IDE中编译好的outputs下的hap文件推送到连接的HarmonyOS设备中,前一个路径是本地hap路径,后一个路径是设备中的文件路径

4、$ hdc shell bm install –p /sdcard/c27bd3aeb0334f0caebc9749a5f3ff42/

然后通过bm install –p的方式安装上一步文件夹中的所有hap包

5、$ hdc shell rm –rf /sdcard/c27bd3aeb0334f0caebc9749a5f3ff42

安装完成后删除设备中接收文件的临时目录

上面这几个步骤是在所有版本上透视统一的,下面我们主要讲一下,安装完成后IDE是如何拉起对应应用的,这个拉起的命令在不同版本和不同的开发模式下都是不一样的

首先API6-API8的FA工程中命令如下:

$ hdc shell aa start -p "com.example.arktsdemo" -n "com.example.arktsdemo.MainAbility" -a action

这边-p 后放的是需要启动的PackageName,在config.json中对应是的hdc shell aa start -p

-n 后放的是对应启动的AbilityName,对应的是config.json中的"mainAbility"字段

-a 存放的是action,我们可以省略这个字段,直接通过下面的命令也可以启动应用:

hdc shell aa start -p "com.example.arktsdemo" -n "com.example.arktsdemo.MainAbility"

 

【HarmonyOS API9】

FA模型:

cke_16346.png​​

$ hdc shell aa start -a com.example.quickfixfa.MainAbility -b com.example.quickfixfa

这边的命令就跟之前的不同了,使用的是-a和-b,

-a 表示需要启动的abilityName,-b 需要启动的 bundleName

“com.example.quickfixfa”对应的是config.json里的bundleName

“com.example.quickfixfa.MainAbility”对应的是config.json中的"mainAbility"字段

Stage模型:

cke_18653.png​​

$ hdc shell aa start -a EntryAbility -b com.example.quickfixdemo

需要注意的是这百年-a后对应的abilityName是“EntryAbility”,指的就是我们入口的EntryAbility

“com.example.quickfixdemo”对应的是app.json5中的bundleName

 

【Tips】

对于上面的abilityName和bundleName我们在IDE中其实是有地方可以查看的,在我们的打包输出的output目录下有下面这个文件,pack.info

cke_4618.png

打开pack.info文件,可以查看到对应的bundleName和mainAbility字段,这些字段就是我们上面启动所需要的字段。下图是API8 FA工程中的pack.info,mainAbility字段的值是“.MainAbility”对应的完整的abilityName还需要加上上面的bundleName,这就得到上面IDE中的“com.example.arktsdemo.MainAbility”

然后我们打开API9 Stage模型工程,这边的mainAbility对应的“EntryAbility”前面是不带“.”的,也就是为什么abilityName我们只需要写成“EntryAbility”的原因

posted @ 2023-07-04 13:46  Mayism123  阅读(132)  评论(0编辑  收藏  举报