HarmonyOS APP工程结构

在进行HarmonyOS应用开发前,您应该掌握HarmonyOS应用的逻辑结构。

HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。

一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用配置文件组成,可以分为Entry和Feature两种类型。

  • Entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。(类似安卓项目中主Module)

  • Feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。(类似安卓项目中的库,Module)

HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开,它是由一个或多个Ability组成。Ability分为两种类型:FA(Feature Ability,中文名称:元程序)和PA(Particle Ability,中文名称:元服务)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。(注:可以参考安卓,理解FA为activity,PA为服务 广播 内容提供者)

编译构建

编译构建是将HarmonyOS应用的源代码、资源、第三方库等打包生成HAP或者APP的过程。其中,HAP可以直接运行在真机设备或者模拟器中;APP则是用于应用上架到华为应用市场。

为了确保HarmonyOS应用的完整性,HarmonyOS通过数字证书和授权文件来对应用进行管控,只有签名过的HAP才允许安装到设备上运行(如果不带签名信息,仅可以运行在模拟器中);同时,上架到华为应用市场的APP也必须通过签名才允许上架。因此,为了保证应用能够发布和安装到设备上, 需要提前申请相应的证书与Profile文件,注意:

申请证书和Profile文件时,用于调试和上架的证书与授权文件不能交叉使用:

  • 应用调试证书与应用调试Profile文件、应用发布证书与应用发布Profile文件具有匹配关系,必须成对使用,不可交叉使用。
  • 应用调试证书与应用调试Profile文件必须应用于调试场景,用于发布场景将导致应用发布审核不通过;应用发布证书与应用发布Profile文件必须应用于发布场景,用于调试场景将导致应用无法安装。

应用签名

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

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

通过DevEco Studio自动化签名的方式更加简单和高效,因此推荐使用自动化签名

  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中查看签名的配置信息。

构建带签名信息的HAP(Debug类型)

在构建带签名信息的HAP前,请先对应用进行签名

  1. 打开左下角的OhosBuild Variants,检查并设置模块的编译构建类型为debug,默认类型为debug。

  2. 在主菜单栏,点击Build > Build APP(s)/Hap(s) > Build Hap(s),生成已签名的Debug HAP。

构建带签名信息的HAP(Release类型)

在构建带签名信息的HAP前,请先对应用进行签名

  1. 打开左下角的OhosBuild Variants,检查并设置模块的编译构建类型为release,默认类型为debug。

  2. 在主菜单栏,点击Build > Build APP(s)/Hap(s) > Build Hap(s),生成已签名的Release HAP。

构建不带签名信息的HAP

不带签名信息的HAP(包括Debug和Release类型),只能运行在模拟器设备上。

构建不带签名信息的HAP(Debug类型)

  1. 打开左下角的OhosBuild Variants,检查并设置模块的编译构建类型为debug,默认类型为debug。

  2. 在主菜单栏,点击Build > Build APP(s)/Hap(s) > Build Hap(s),生成不带签名的Debug HAP。

构建不带签名信息的HAP(Release类型)

  1. 打开左下角的OhosBuild Variants,检查并设置模块的编译构建类型为release,默认类型为debug。

  2. 在主菜单栏,点击Build > Build APP(s)/Hap(s) > Build Hap(s),生成不带签名的Release HAP。

设置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”后再启动调试。

使用Remote Emulator运行应用

Remote Emulator中的单设备模拟器(Single device)可以运行和调试Phone、Tablet、TV和Wearable设备的HarmonyOS应用,可兼容签名与不签名两种类型的HAP。

Remote Emulator每次使用时长为1小时,到期后会自动释放资源,请及时完成HarmonyOS应用的调试。如果Remote Emulator到期释放后,您可以重新申请资源。(查看使用Remote Emulator的常见问题

  1. 在DevEco Studio菜单栏,点击Tools > Device Manager
  2. Remote Emulator页签中,点击Login,在浏览器中弹出华为开发者联盟帐号登录界面,请输入已实名认证的华为开发者联盟帐号的用户名和密码进行登录(查看远程模拟器登录常见问题)。
  3. 登录后,请点击界面的允许按钮进行授权。

  4. Single device中,点击设备运行按钮,启动远程模拟设备(同一时间只能启动一个设备)。

  5. 点击DevEco Studio的Run > Run'模块名称',或使用默认快捷键Shift+F10(Mac为Control+R)。
  6. DevEco Studio会启动应用的编译构建,完成后应用即可运行在Remote Emulator上。

启动调试

  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

    断点执行到鼠标停留处。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐