OpenHarmony DevEco Studio使用指南-应用/服务运行/服务调试
应用/服务运行
配置签名信息
应用/服务在真机设备上运行,需要提前为应用/服务进行签名,DevEco Studio为开发者提供了自动化签名方案,可以一键完成应用/服务签名。具体操作如下:
单击File > Project Structure > Project > Signing Configs界面勾选Automatically generate signature,等待自动签名完成即可,单击OK。如下图所示:
说明
如果您的应用/服务使用了“system_basic”和“system_core”权限,请参考修改应用权限等级修改签名模板。您使用到的应用权限,可以在自动化签名完成后,单击Show Restricted Permissions进行查看。
运行应用/服务
安装OpenHarmony应用可以通过DevEco Studio安装,也可以通过使用hdc_std工具(API 9工程中该工具名称为hdc)进行手动安装。
- 通过DevEco Studio安装:将设备连接上DevEco Studio后,单击
按钮即可安装。
- 通过hdc_std工具安装:手动执行命令行完成应用的安装。
hdc_std工具本身需要手动从开源仓中获取。然后使用工具命令将编译后的HAP安装到设备上。
相关命令如下:
○ 安装命令install [-r/-d/-g] package
命令示例:
hdc_std install E:\ohos-admin.hap
- 日志抓取命令
hilog
命令示例:
hdc_std hilog
完整的hdc_std工具使用指导及命令格式请参见hdc_std使用指导。
应用/服务调试
使用真机进行调试
调试流程
DevEco Studio提供了丰富的OpenHarmony应用/服务调试能力,帮助开发者更方便、高效的调试应用/服务。
OpenHarmony应用/服务调试支持使用真机设备调试。使用真机设备进行调试前,需要对HAP进行签名后进行调试。详细的调试流程如下图所示:
配置签名信息
DevEco Studio为开发者提供了自动化签名方案,可以一键完成应用/服务签名。具体操作如下:
单击File > Project Structure > Project > Signing Configs界面勾选“Automatically generate signature”,等待自动签名完成即可,单击“OK”。如下图所示:
说明
如果您的应用/服务使用了“system_basic”和“system_core”权限,请参考修改应用权限等级修改签名模板。您使用到的应用权限,可以在自动化签名完成后,单击Show Restricted Permissions进行查看。
调试设置
设置调试代码类型
OpenHarmony支持ArkTS、JS和C/C++代码调试,默认情况下调试器支持的调试类型为Detect Automatically。调试类型包括如下几种:
表1 调试类型配置项
调试类型 | 调试代码 |
Js Only | 调试ArkTS和JS代码 |
Native Only | 仅调试C/C++代码 |
Dual(Js + Native) | 调试C/C++工程的ArkTS/JS和C/C++代码 |
Detect Automatically | 新建工程默认调试器选项,根据调试的工程类型,自动启动对应的调试器。 |
修改调试类型的方法如下。
点击Run > Edit Configurations > Debugger,在OpenHarmony App中,选择相应模块,设置Debug type即可。
设置HAP安装方式
在调试阶段,HAP在设备上的安装方式有2种,可以根据实际需要进行设置。
- 安装方式一:先卸载应用/服务后,再重新安装,该方式会清除设备上的所有应用/服务缓存数据(默认安装方式)。
- 安装方式二:采用覆盖安装方式,不卸载应用/服务,该方式会保留应用/服务的缓存数据。
设置方法如下:
单击Run > Edit Configurations,设置指定模块的HAP安装方式,勾选 Keep Application Data,则表示采用覆盖安装方式,保留应用/服务缓存数据。
设置多HAP安装
如果工程中同时存在多个模块,且您的应用/服务存在跨模块间的调用时,在调试阶段需要同时安装多个模块的HAP到设备中。此时,需要在Deploy Multi Hap中选择多个模块,启动调试时,DevEco Studio会将所有的模块都安装到设备上。
设置方法如下:
单击Run > Edit Configurations,在Deploy Multi Hap中,勾选Deploy Multi Hap Packages,选择多个模块。
在启动调试时,请选择勾选了Deploy Multi Hap Packages的模块(如上图中的entry),然后再启动调试。
启动调试
- 在工具栏中,选择调试的设备,并单击Debug
或Attach Debugger to Process
启动调试。
说明
Debug和Attach Debugger的区别在于,Attach Debugger to Process需要先运行应用/服务,然后再启动调试,或者直接启动设备上已安装的应用/服务进行调试;而Debug是直接运行应用/服务后立即启动调试。
- 如果需要设置断点调试,则需要选定要设置断点的有效代码行,在行号(比如:第5行)的区域后,单击鼠标左键设置断点(如图示的红点)。
设置断点后,调试能够在正确的断点处中断,并高亮显示该行。
- 启动调试后,开发者可以通过调试器进行代码调试。调试器的功能说明如下表所示:
表2 调试器按钮
按钮 | 名称 | 快捷键 | 功能 |
Resume Program | F9(macOS为Option+Command+R) | 当程序执行到断点时停止执行,单击此按钮程序继续执行。 | |
Step Over | F8(macOS为F8) | 在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。 | |
Step Into | F7(macOS为F7) | 在单步调试时,遇到子函数后,进入子函数并继续单步执行。 | |
Step Out | Shift+F8(macOS为Shift+F8) | 在单步调试执行到子函数内时,单击Step Out会执行完子函数剩余部分,并跳出返回到上一层函数。 | |
Stop | Ctrl+F2(macOS为Command+F2) | 停止调试任务。 | |
Run To Cursor | Alt+F9(macOS为Option+F9) | 断点执行到鼠标停留处。 |
断点管理
在设置的程序断点红点处,单击鼠标右键,然后单击More或按快捷键Ctrl+Shift+F8(macOS为Shift+Command+F8),可以管理断点。
表3 不同代码类型的断点管理功能
代码类型 | 断点管理 |
JS(JS)、ArkTS |
|
C/C++ |
|
ArkTS/JS与C/C++工程跨语言调试
在C/C++工程中,采用ArkTS/JS与C/C++进行混合开发。一般使用ArkTS或JS进行界面的开发,使用C/C++来开发应用/服务的性能要求较高的部分功能、或Native平台迁移代码。针对这种场景,DevEco Studio提供了ArkTS/JS与C/C++语言的跨语言调试能力,能够在ArkTS或JS调用C/C++方法处,直接进入C/C++代码中的断点。
ArkTS/JS与C/C++跨语言调试功能,包括ArkTS/JS、C/C++断点的管理、调试信息的展示、单步调试等能力,方便开发者快速发现并解决跨语言调用相关代码的问题。
说明
ArkTS/JS与C/C++工程跨语言调试支持API Version 9。
ArkTS/JS与C/C++工程跨语言调试的操作方法如下:
- 将DevEco Studio与设备进行连接。如果使用真机设备,请先对应用/服务进行签名,具体请参考配置签名信息。
- 在菜单栏单击Run > Edit Configurations,选择OpenHarmony APP下的模块名(如entry),然后在右侧窗口中选择Debugger,将Debug type设置为“Dual(Js + Native)”或“Detect Automatically”。
- 在ArkTS或JS代码调用C/C++方法代码行处设置断点。
- 单击
按钮或使用快捷键Shift+F9,启动调试。
- 当调试到ArkTS或JS代码调用C/C++方法代码处进行中断。
- 使用Step Into进入到对应的C/C++方法的第一行代码处。然后便可以在C++代码中进行调试,包括:Step Over/Step Into/Step Out/Resume Program。