HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试

丶龙八夷
发布于 2023-4-4 11:48
浏览
0收藏

使用真机设备进行调试,真机设备分为本地物理真机和远程真机,其调试流程完全相同,都需要对应用或原子化服务进行签名。本文以物理真机为例进行说明,关于如何运行远程真机请参考​​使用远程真机运行应用/服务​​。

调试流程

DevEco Studio提供了丰富的HarmonyOS应用/服务调试能力,支持Java、JS、ArkTS、C/C++单语言调试和JS+Java、Java+C/C++跨语言调试能力,同时还支持分布式应用/服务的跨设备调试,帮助开发者更方便、高效的调试应用/服务。

HarmonyOS应用/服务调试支持使用真机设备调试。使用真机设备进行调试前,需要对HAP进行签名。详细的调试流程如下图所示:

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

配置签名信息

为应用/服务进行签名

针对原子化服务和应用的签名,DevEco Studio为开发者提供了自动化签名方案,帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名,手动方式签名请参考​​手动方式对HarmonyOS应用/服务签名​​。

  1. 连接真机设备,确保​​DevEco Studio与真机设备已连接​​,真机连接成功后如下图所示:

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

说明

如果同时连接多个设备,则使用自动化签名时,会同时将这多个设备的信息写到证书文件中。

  1. 进入File > Project Structure > Project > Signing Configs界面,勾选“Automatically generate signature”(如果是API 8和9工程,需同时勾选“SupportHarmonyOS”),即可完成签名。如果未登录,请先单击Sign In进行登录,然后自动完成签名。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

签名完成后,如下图所示:

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

通过配置文件存储签名信息

说明

该功能仅适用于API Version 4至7的Gradle工程。

(可选)由于签名配置是开发者的私有信息,DevEco Studio会对签名配置中的密码进行安全保护,但是这个保护会对提交build.gradle到代码仓中带来不便。因此,开发者可以将签名配置信息放在一个独立的文件中,从而可以方便的将build.gradle提交到代码仓,而存放签名配置信息的文件不用提交。

  1. 在工程的根目录下创建一个名为signing-config.properties的文件。
  2. 打开signing-config.properties文件,写入签名配置信息。签名配置信息可以从工程的build.gradle文件中进行拷贝,p12、p7b和cer文件存储地址可以自定义。

storeFile=D:\\key\\auto_debug_900086000300430549.p12
storePassword=0000001BA1E0B33A4507FAAD0CD0F378CE4E6AC5AEBDEA75C3283753284436002D859E52C3836DAD3A3D1C
keyAlias=myApplication_debug
keyPassword=0000001BAC7C26C59AC5EB95E56DFC155C911ED08C658839127F4CEC6AB548B39BE8CC499CE7F27F13AE57
profile=D:\\key\\auto_debug_Myapplication_900086000300430549.p7b
certpath=D:\\key\\auto_debug_900086000300430549.cer
  1. 打开build.gradle,修改debug或release类型的签名配置信息从signing-config.properties文件中读取。下面是debug类型签名信息的配置示例:

apply plugin: 'com.huawei.ohos.hap'
...
//加载签名信息配置文件
def signingConfigPropsFile = rootProject.file("signing-config.properties")
def signingConfigProps = new Properties()
signingConfigProps.load((new FileInputStream(signingConfigPropsFile)))

ohos {
    ...
    //配置签名信息索引
    signingConfigs {
        debug {
            storeFile file(signingConfigProps['storeFile'])
            storePassword signingConfigProps['storePassword']
            keyAlias signingConfigProps['keyAlias']
            keyPassword signingConfigProps['keyPassword']
            signAlg = 'SHA256withECDSA'
            profile file(signingConfigProps['profile'])
            certpath file(signingConfigProps['certpath'])
        }
    }
  1. 修改完成后重新同步工程即可。

调试设置

设置调试代码类型

工程调试类型默认为Detect Automatically,关于各调试类型的说明如下表所示:

表1 调试类型配置项

调试类型

调试代码

Java Only

仅调试Java代码,API Version 4~7支持

Js Only

  • 调试ArkTS代码,API Version 7~9支持
  • 调试JS代码,API Version 4~9支持

Native Only

仅调试C/C++代码,API Version 4~9支持

Dual(Js + Native)

调试C/C++工程的ArkTS/JS和C/C++代码,支持API Version 8~9

Dual(Js + Java)

调试JS FA调用Java PA场景的JS和Java代码,API 4~7 Version 支持

Dual(Java + Native)

调试C/C++工程的Java和C/C++代码,API Version 4~7支持

Detect Automatically

新建工程默认调试器选项,根据调试的工程类型,自动启动对应的调试器。API 4~9 Version 支持













说明



JS+Java混合工程中,如果需要单独调试Java代码,需要手动修改Debug Type为“Java Only”。






修改调试类型的方法如下。

点击Run > Edit Configurations > Debugger,选择相应模块,设置Debug type即可。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

设置HAP安装方式

在调试阶段,HAP在设备上的安装方式有2种,可以根据实际需要进行设置。

  • 安装方式一:先卸载应用/服务后,再重新安装,该方式会清除设备上的所有应用/服务缓存数据(默认安装方式)。
  • 安装方式二:采用覆盖安装方式,不卸载应用/服务,该方式会保留应用/服务的缓存数据。

设置方法如下:

单击Run > Edit Configurations,设置指定模块的HAP安装方式,勾选“Keep Application Data”,则表示采用覆盖安装方式,保留应用/服务缓存数据。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

如果一个工程中同一个设备存在多个模块(如Phone设备,存在entry和feature模块),且存在模块间的调用时,在调试阶段需要同时安装多个模块的HAP到设备中。此时,需要在Deploy Multi Hap中选择多个模块,启动调试时,DevEco Studio会将所有的模块都安装到设备上。API 9工程不支持。

设置方法如下:

单击Run > Edit Configurations,在Deploy Multi Hap中,勾选Deploy Multi Hap Packages,选择多个模块。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

启动调试

  1. 在工具栏中,选择调试的设备,并单击Debug


HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

Attach Debugger to Process

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

启动调试。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

说明

Debug和Attach Debugger的区别在于,Attach Debugger to Process可以先运行应用/服务,然后再启动调试,或者直接启动设备上已安装的应用/服务进行调试;而Debug是直接运行应用/服务后立即启动调试。

  1. 如果需要设置断点调试,则需要选定要设置断点的有效代码行,在行号(比如:24行)的区域后,单击鼠标左键设置断点(如图示的红点)。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

设置断点后,调试能够在正确的断点处中断,并高亮显示该行。

  1. 启动调试后,开发者可以通过调试器进行代码调试。调试器的功能说明如下表所示:

表2 调试器按钮

按钮

名称

快捷键

功能



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Resume Program

F9(macOS为Option+Command+R

当程序执行到断点时停止执行,单击此按钮程序继续执行。



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Step Over

F8(macOS为F8

在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Step Into

F7(macOS为F7

在单步调试时,遇到子函数后,进入子函数并继续单步执行。



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Force Step Into

Alt+Shift+F7(macOS为Option+Shift+F7

在单步调试时,强制进入方法。



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Step Out

Shift+F8(macOS为Shift+F8

在单步调试执行到子函数内时,单击Step Out会执行完子函数剩余部分,并跳出返回到上一层函数。



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Stop

Ctrl+F2(macOS为Command+F2

停止调试任务。



HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



Run To Cursor

Alt+F9(macOS为Option+F9

断点执行到鼠标停留处。

对于原子化服务,由于原子化服务在设备中没有桌面图标,可以通过如下方式在设备中运行/调试原子化服务。

  • 在服务中心展示的原子化服务:

     ○  通过DevEco Studio的运行/调试按钮,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务;同时在服务中心的最近使用中可以看到该原子化服务的卡片。

     ○  通过hdc命令行工具,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务;同时在服务中心的最近使用中可以看到该原子化服务的卡片。

  • 在服务中心不展示的原子化服务:

     ○  通过DevEco Studio的运行/调试按钮,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务。

     ○  通过hdc命令行工具,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务。

     ○  设备控制类的原子化服务,可通过碰一碰、扫一扫等方式运行。

断点管理

在设置的程序断点红点处,单击鼠标右键,然后单击More或按快捷键Ctrl+Shift+F8(macOS为Shift+Command+F8),可以管理断点。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

表3 不同代码类型的断点管理功能

代码类型

断点管理

Java、JS、ArkTS

  • 普通行断点
  • Exception(异常)断点

C/C++

  • 普通行断点
  • Exception(异常)断点
  • Symbolic(符号)断点

参考:手动方式对HarmonyOS应用/服务签名

HarmonyOS应用/服务通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用/服务的完整性。在申请数字证书和Profile文件前,首先需要通过DevEco Studio或命令行工具来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。然后,申请调试证书和调试Profile文件。最后,将密钥(.p12)文件、数字证书(.cer)文件和Profile(.p7b)文件配置到工程中。

基本概念

  • 密钥:包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,格式为.p12,公钥和私钥对用于数字签名和验证。
  • 证书请求文件:格式为.csr,全称为Certificate Signing Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。
  • 数字证书:格式为.cer,由华为AppGallery Connect颁发。
  • Profile文件:格式为.p7b,包含HarmonyOS应用/服务的包名、数字证书信息、描述应用/服务允许申请的证书权限列表,以及允许应用/服务调试的设备列表(如果应用/服务类型为Release类型,则设备列表为空)等内容,每个应用/服务包中均必须包含一个Profile文件。

生成密钥和证书请求文件

使用DevEco Studio生成密钥和证书请求文件

  1. 在主菜单栏单击Build > Generate Keyand CSR

说明

如果本地已有对应的密钥,无需新生成密钥,可以在Generate Key界面中单击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。

  1. Key Store File中,可以单击Choose Existing选择已有的密钥库文件(存储有密钥的.p12文件);如果没有密钥库文件,单击New进行创建。下面以新创建密钥库文件为例进行说明。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

  1. Create Key Store窗口中,填写密钥库信息后,单击OK
  • Key Store File:设置密钥库文件存储路径,并填写p12文件名。
  • Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • Confirm Password:再次输入密钥库密码。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

  1. Generate Key and CSR界面中,继续填写密钥信息后,单击Next
  • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
  • Validity:证书有效期,建议设置为25年及以上,覆盖应用/服务的完整生命周期。
  • Certificate:输入证书基本信息,如组织、城市或地区、国家码等。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

  1. Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

  1. 单击OK,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

使用命令行工具生成证书请求文件

使用Open JDK携带的Keytool工具生成证书请求文件。

  1. 使用管理员身份运行命令行工具。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区

  1. 切换到keytool工具所在路径,路径为DevEco Studio安装目录下的jbr\bin目录。
  2. 执行如下命令,生成公私钥文件。例如,生成的密钥库名称为idedemokey.p12,存储到D盘根目录下。

keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app"  -keystore d:\\idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc

生成公私钥文件的参数说明如下:

说明

请记录下alias、storepasskeypass的值,在后续​​手动配置签名信息​​操作会使用到。

  • alias:密钥的别名信息,用于标识密钥名称。
  • sigalg:签名算法,固定为SHA256withECDSA
  • dname:按照操作界面提示进行输入。

     ○  C:国家/地区代码,如CN。

     ○  O:组织名称,如HUAWEI。

     ○  OU:组织单位名称,如HUAWEI IDE。

     ○  CN:名字与姓氏,建议与别名一致。

  • validity:证书有效期,建议设置为9125(25年)。
  • storepass:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • keypass:设置密钥的密码,请与storepass保持一致。
  1. 执行如下命令,执行后需要输入storepass密码,生成证书请求文件,后缀格式为.csr。

keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr

生成证书请求文件的参数说明如下:

  • alias:与​​3​​中输入的alias保持一致。
  • file:生成的证书请求文件名称,后缀为.csr。

申请调试证书和调试Profile文件

通过生成的证书请求文件,向AppGallery Connect申请调试证书和Profile文件,操作如下:

  • 创建HarmonyOS应用/服务:在AppGallery Connect项目中,创建一个HarmonyOS应用/服务,用于调试证书和Profile文件申请,具体请参考​​创建HarmonyOS应用​
  • 申请调试证书和Profile文件:在AppGallery Connect中申请、下载调试证书和Profile文件,具体请参考​​申请调试证书和Profile文件​​。

手动配置签名信息

在DevEco Studio中配置密钥(.p12)文件、申请的调试证书(.cer)文件和调试Profile(.p7b)文件。

File > Project Structure > Project > Signing Configs窗口中,去勾选“Automatically generate signature”(API 8和9工程请勾选“support HarmonyOS”),然后配置工程的签名信息。

HarmonyOS Developer DevEco Studio使用指南-使用真机进行调试-鸿蒙开发者社区



文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide_debug_device-0000001053822404-V3​

标签
已于2023-4-4 11:48:14修改
收藏
回复
举报
回复
    相关推荐