HarmonyOS实战-软件开发环境搭建

【本文正在参与“有奖征文 | HarmonyOS征文大赛”活动】

DevEco Studio集成开发环境下载,网址如下,因为要开发HarmonyOS应用,选择2.0进行下载下

https://developer.huawei.com/consumer/cn/deveco_studio

下载完毕后,运行安装程序,一路下一步知道安装完成,选择立即重启,重启后运行 

DevEco Studio 2.1.0.501 x64

选择一个位置安装SDK

下一步

等待下载

然后漫长的等待

安装好后新建一个工程,由于华为集成开发环境自带只有手表和相机的模拟器,所以新建Lite工程

运行

使用HarmonyOS系统手机作为调试器,华为官方例程

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#ZH-CN_TOPIC_0000001154985555__section837891802519

调试流程

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

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

配置应用签名信息

对应用进行签名

调试应用签名的方式包括如下两种:

  • 方式一:通过DevEco Studio自动化签名的方式对应用进行签名;
  • 方式二:通过从AppGallery Connect中申请调试证书和Profile文件后,再进行签名。

通过DevEco Studio自动化签名的方式更加简单和高效,因此推荐开发者使用自动化签名。关于AppGallery Connect中申请调测证书和Profile的方式,可以参考申请发布证书和Profile文件流程。

  1. 连接真机设备,确保DevEco Studio与真机设备已连接。
  2. 进入File > Project Structure > Project > Signing Configs界面,点击“Sign In”按钮进行登录。

  3. 在AppGallery Connect中创建项目和应用。
    1. 登录AppGallery Connect,创建一个项目。
    2. 在项目中,点击添加应用按钮,创建一个应用。如果是非实名认证的用户,请点击“HAP Provision Profile管理”界面的HarmonyOS应用按钮。
      • 选择平台:选择APP(HarmonyOS应用)。
      • 支持设备:选择调试的设备类型。
      • 应用包名:必须与config.json文件中的“bundleName”取值保持一致。
      • 应用名称、应用分类、默认语言请根据实际需要进行设置。

  4. 返回DevEco Studio的自动签名界面,点击Try Again,即可自动进行签名。自动生成签名所需的密钥(.p12)、数字证书(.cer)和Profile文件(.p7b)会存放到用户user目录下的.ohos\config目录下。

    说明

    如果是非实名认证用户,需要先接受“HUAWEI Developer Basic Service Agreement”协议。

    设置完签名信息后,点击OK进行保存,然后可以在工程下的build.gradle中查看签名的配置信息。

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

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

  1. 在工程的根目录下创建一个名为signing-config.properties的文件。
  2. 打开signing-config.properties文件,写入签名配置信息。签名配置信息可以从工程的build.gradle文件中进行拷贝,p12、p7b和cer文件存储地址可以自定义。
     
    1. storeFile=D:\\key\\auto_debug_900086000300430549.p12
    2. storePassword=0000001BA1E0B33A4507FAAD0CD0F378CE4E6AC5AEBDEA75C3283753284436002D859E52C3836DAD3A3D1C
    3. keyAlias=myApplication_debug
    4. keyPassword=0000001BAC7C26C59AC5EB95E56DFC155C911ED08C658839127F4CEC6AB548B39BE8CC499CE7F27F13AE57
    5. profile=D:\\key\\auto_debug_Myapplication_900086000300430549.p7b
    6. certpath=D:\\key\\auto_debug_900086000300430549.cer
  3. 打开build.gradle,修改debug或release类型的签名配置信息从signing-config.properties文件中读取。下面是debug类型签名信息的配置示例:
     
    1. apply plugin: 'com.huawei.ohos.hap'
    2. ...
    3. //加载签名信息配置文件
    4. def signingConfigPropsFile = rootProject.file("signing-config")
    5. def signingConfigProps = new Properties()
    6. signingConfigProps.load((new FileInputStream(signingConfigPropsFile)))
    7.  
    8. ohos {
    9. ...
    10. //配置签名信息索引
    11. signingConfigs {
    12. debug {
    13. storeFile file(signingConfigProps['storeFile'])
    14. storePassword signingConfigProps['storePassword']
    15. keyAlias signingConfigProps['keyAlias']
    16. keyPassword signingConfigProps['keyPassword']
    17. signAlg = 'SHA256withECDSA'
    18. profile file(signingConfigProps['profile'])
    19. certpath file(signingConfigProps['certpath'])
    20. }
    21. }
  4. 修改完成后重新同步工程即可。

调试设置

设置调试代码类型

调试类型默认情况下为Detect Automatically,支持Java、JS、C/C++、JS+Java、Java+C/C++工程的调试。只有在JS+Java混合工程中,如果需要单独调试Java代码,这种情况下需要手动修改Debug Type为“Java”。

关于各调试类型的说明如下表所示。

表1 调试类型配置项

调试类型

调试代码

Java Only

仅调试Java代码

Js Only

仅调试JavaScript代码

Native Only

仅调试C/C++代码

Dual(Js + Java)

调试JS FA调用Java PA场景的JS和Java代码

Dual(Java + Native)

调试C/C++工程的Java和C/C++代码

Detect Automatically

新建工程默认调试器选项,根据调试的工程类型,自动启动对应的调试器。

说明

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

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

点击Run > Edit Configurations > Debugger,在HarmonyOS App中,选择相应模块, 可以进行Java/JS/C++调试配置。

检查config.json文件属性

在启动Feature模块的调试前,请检查Feature模块下的config.json文件的abilities数组是否存在“visible”属性,如果不存在,请手动添加,否则Feature模块的调试无法进入断点。Entry模块的调试不需要做该检查。

  1. 在工程目录中,点击Feature模块下的src > main > config.json文件,检查abilities数组是否存在“visible”属性。
    • 存在visible属性,且取值为true:可以正常启动调试
    • 不存在,或者取值为false,请根据2进行设置。
  2. 在abilities数组中手动添加“visible”属性,取值为true。

    说明

    如果Feature模块手动添加了“visible”属性为true,表示该模块可以被其它的应用所调用。如果您不允许该模块被其它应用调用,请在调试完成后手动删除visible属性。

设置Hap包安装方式

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

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

设置方法如下:

点击Run > Edit Configurations,设置指定模块的Hap包安装方式,勾选 ”Replace existing application”,则表示采用覆盖安装方式,保留应用缓存数据。

如果一个工程中同一个设备存在多个模块(如Phone设备,存在entry和feature模块),且存在模块间的调用时,在调试阶段需要同时安装多个模块的hap包到设备中。此时,需要在待调试模块的设置项中勾选“Deploy Multi Hap Package”。例如entry模块调用feature模块,在调试entry模块时,需要同时安装feature模块,您应该在entry模块的调试设置项中勾选“Deploy Multi Hap Package”后再启动调试。

启动调试

  1. 在工具栏中,选择调试的设备,并点击Debug Attach Debugger to Process启动调试。

    说明

    Debug和Attach Debugger的区别在于,Attach Debugger to Process可以先运行应用,然后再启动调试,或者直接启动设备上已安装的应用进行调试;而Debug是直接运行应用后立即启动调试。目前JS代码不支持Attach Debugger to Process调试。

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

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

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

     

    表2 调试器按钮

    按钮

    名称

    快捷键

    功能

    Resume Program

    F9(Mac为Option+Command+R

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

    Step Over

    F8(Mac为F8

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

    Step Into

    F7(Mac为F7

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

    Force Step Into

    Alt+Shift+F7(Mac为Option+Shift+F7

    在单步调试时,强制下一步。

    Step Out

    Shift+F8(Mac为Shift+F8

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

    Stop

    Ctrl+F2(Mac为Command+F2

    停止调试任务。

    Run To Cursor

    Alt+F9(Mac为Option+F9

    断点执行到鼠标停留处。

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

  • 在服务中心露出的原子化服务:
    • 通过DevEco Studio的运行/调试按钮,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务;同时在服务中心的最近使用中可以看到该原子化服务的卡片。
    • 通过hdc命令行工具,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务;同时在服务中心的最近使用中可以看到该原子化服务的卡片。
  • 在服务中心不露出的原子化服务:
    • 通过DevEco Studio的运行/调试按钮,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务。
    • 通过hdc命令行工具,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务。
    • 设备控制类的原子化服务,可通过碰一碰、扫一扫等方式运行。

断点管理

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

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

代码类型

断点管理

JS(JavaScript)

普通行断点

Java

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

C/C++

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

【本文正在参与“有奖征文 | HarmonyOS征文大赛”活动】 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开花落的个人博客

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值