【鸿蒙应用实战开发】HarmonyOS-Hvigor组件详解

前言

本篇文章仅会介绍API9之后的Hvigor构建工具及其插件hvigor-ohos-plugin。且仅会介绍stage模型下的配置

1.鸿蒙使用Hvigor工具链对应用/服务进行打包,打包后的产物位于各自模块下的build文件夹中
2.打包后的产物包括一个.app文件和多个.hap文件

●.hap是可以直接运行在模拟器或真机设备中的软件包
●.app则是用于应用/服务上架到华为应用市场

3.任务流的执行是通过构建插件hvigor-ohos-plugin利用Hvigor的任务编排机制实现的

修改构建工具和构建插件版本

修改 hvigor 目录下的 hvigor-config.json5 文件

{
  "@ohos/hvigor": "1.6.0",
  "dependencies": {
        "@ohos/hvigor-ohos-plugin": "1.6.0"
  }
}

工程目录、配置文件、配置构建信息

无论是工程(App)级还是模块(Module)级,都提供以下三个文件

1.构建配置文件(build-profile.json5)
2.构建脚本文件(hvigorfile.ts)
3.依赖配置文件(oh-package.json5) 在这里插入图片描述

构建配置文件 build-profile.json5

构建配置文件,配置构建过程的一些参数

工程级 build-profile.json5

{
  "app": { 
    // 工程的签名信息,可包含多个签名信息
    "signingConfigs": [  
      {
        // 标识签名方案的名称
        "name": "default",  
        // 标识HarmonyOS应用
        "type": "HarmonyOS",  
        // 该方案的签名材料
        "material": {  
          // 调试或发布证书文件,格式为.cer
          "certpath": "D:\\SigningConfig\\debug_hos.cer",  
          // 密钥库密码,以密文形式呈现
          "storePassword": "******",
          // 密钥别名信息
          "keyAlias": "debugKey",  
          // 密钥密码,以密文形式呈现
          "keyPassword": "******",  
          // 调试或发布证书Profile文件,格式为.p7b
          "profile": "D:\\SigningConfig\\debug_hos.p7b",  
          // 密钥库signAlg参数
          "signAlg": "SHA256withECDSA",  
          // 密钥库文件,格式为.p12
          "storeFile": "D:\\SigningConfig\\debug_hos.p12" 
        }
      }
    ],
    // 指定HarmonyOS应用/服务编译时的SDK版本
    "compileSdkVersion": 9,  
    // 指定HarmonyOS应用/服务兼容的最低SDK版本
    "compatibleSdkVersion": 9,  
    // 定义构建的产品品类,如通用默认版、付费版、免费版等
    "products": [  
      {
        // 定义产品的名称,支持定制多product目标产物,具体请参考定制多目标构建产物
        "name": "default",  
        // 指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义
        "signingConfig": "default",  
      }
    ]
  },
  "modules": [
    {
     // 模块名称
      "name": "entry",  
      // 标明模块根目录相对工程根目录的相对路径
      "srcPath": "./entry",  
      // 定义构建的APP产物,由product和各模块定义的targets共同定义
      "targets": [  
        {
           // target名称,由各个模块的build-profile.json5中的targets字段定义
          "name": "default",  
          "applyToProducts": [  
            // 表示将该模块下的“default” Target打包到“default” Product中
            "default"   
          ]
        }
      ]
    }
  ]
}

模块级 build-profile.json5

{
  // API类型,支持FA和Stage模型
  "apiType": 'stageMode',  
  // 是否在服务中心展示
  "showInServiceCenter": true,  
  "buildOption": {
    // 配置筛选har依赖.so资源文件的过滤规则
    "napiLibFilterOption": {
      // 按照.so文件的优先级顺序,打包最高优先级的.so文件
      "pickFirsts": [
        "**/1.so"
      ],
      // 按照.so文件的优先级顺序,打包最低优先级的.so 文件
      "pickLasts": [
        "**/2.so"
      ],
      // 排除的.so文件
      "excludes": [
        "**/3.so"
      ],
      // 允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
      "enableOverride": true
    },
    // cpp相关编译配置
    "externalNativeOptions": {
      // CMake配置文件,提供CMake构建脚本
      "path": "./src/main/cpp/CMakeLists.txt",  
      // 传递给CMake的可选编译参数
      "arguments": "", 
      // 用于设置本机的ABI编译环境
      "abiFilters": [  
        "armeabi-v7a",
        "arm64-v8a"
      ],
      // 设置C++编译器的可选参数
      "cppFlags": ""  
    },
  },
  // 定义的Target,开发者可以定制不同的Target,具体请参考定制多目标构建产物
  "targets": [  
    {
      "name": "default",
      "runtimeOS": "HarmonyOS",
    },
    {
      "name": "ohosTest",
    }    
  ]
}

依赖配置文件 oh-package.json5

应用/服务支持通过ohpm来安装、共享、分发代码,管理项目的依赖关系。oh-package.json5格式遵循标准的ohpm规范

工程级 oh-package.json5

{
  "name": "myapplication",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "",
  "dependencies": {},
  "devDependencies": {
    "@ohos/hypium": "1.0.6"
  }
}

模块级 oh-package.json5

{
  "name": "entry",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "index.ets",
  "author": "",
  "license": "",
  "dependencies": {},
}

oh-package.json5中配置ohpm包依赖

ohpm原生三方包

"dependencies": {
  // 包名:语义化版本
  "eslint": "^7.32.0",
  ... 
}

ohpm三方共享包

"dependencies": {
 "@ohos/lottie": "^2.0.0",
 ...
}

ohpm本地共享模块

"dependencies": {
 "library": "file:../library", 
 ...
}

依赖安装和同步

两种方式

1.在Terminal窗口执行ohpm install命令下载依赖包
2.单击编辑器窗口上方的 Sync Now 进行同步

依赖包会存储在工程或各模块的oh_modules目录下

怎么启动构建

1.通过单击或按钮,DevEco Studio会启动应用/服务的编译,并将编译后的HAP部署到设备中

2.通过DevEco Studio的 Build 菜单栏的编译选项进行构建,HAP的构建结果存放于各模块的“build”文件夹下,APP包的构建结果存放于工程的“build”文件夹下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

默认开启模块化编译模式

1.应用模块化编译是指 基于ESModule的Bundleless编译模式 ,使用原生ES Module规则构建源码。
2.Stage工程默认开启模块化编译,可有效缩短增量编译时间、减小编译后的包体积

开启AOT编译模式

AOT(Ahead Of Time)即提前编译,能够 在Host端(即运行DevEco Studio的电脑)将字节码提前编译成Target端(即运行应用的设备)可运行的机器码 ,这样字节码可以获得充分编译优化,放到Target端运行时可以获得加速

AOT编译模式

在模块级build-profile.json5文件中,buildOption内的aotCompileMode字段可以设置为以下值,对应不同的AOT模式。

在这里插入图片描述

使用type编译模式
json复制代码{
“apiType”: ‘stageMode’,
“buildOption”: {
“aotCompileMode”: “type”
},

}

使用partial编译模式

1.使用partial编译模式需要先使用type模式进行编译,获取到ap文件后,再进行partial模式编译
2.这种编译方式类似于Xcode的PGO文件,需要在相应场景下先运行一段时间,然后把ap文件从设备里取出来使用。一般使用较少,大家要了解的话点标题进入自己去看就行,挺简单的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值