OpenHarmony应用编译 – 如何在源码中编译复杂应用(4.0-Release)

文档环境

开发环境:Windows 11
编译环境:Ubuntu 22.04
开发板型号:DAYU 200(RK3568)
系统版本:OpenHarmony-4.0-Release

  • OpenHarmony 系统中预安装应用的 hap 包会随系统编译打包到镜像中,目前有两种编译预安装应用 hap 包的方式,一种为随系统编译时,编译应用源码生成 hap 包的方式,另一种是将已生成的 hap 包放入系统源码中,再进行打包的方式。后者需要开发者使用 DevEco Studio 或其它途径,把应用源码编译构建为 hap 包,再将 hap 放入系统源码中。
  • 本文档将以 Launcher 为例,带大家了解如何通过 4.0Release 的系统源码编译应用的方式来打包预安装应用。
  • 由于应用依赖和构建工具的升级和替换,3.2Release 系统编译构建应用的方式是 NPM+Webpack,而 4.0Release 使用 OHPM+Hvigor 的方式进行构建,差别较大。

4.0-Release 系统编译 Launcher

1.由于 Launcher 自身原因,导致需要做 2 处改动才可进行源码编译构建。本步骤并非所有项目通用,如果新建的项目可以跳过本步骤,后续 Launcher 或工具更新后也不需要本步骤。

(1)适配系统源码中 NODE_HOME 环境变量的配置,需要修改应用目录下 hvigorw 工具为最新。

文件位置:applications/standard/launcher/hvigorw

内容如下:

#!/bin/bash

# ----------------------------------------------------------------------------
#  Hvigor startup script, version 1.0.0
#
#  Required ENV vars:
#  ------------------
#    NODE_HOME - location of a Node home dir
#    or
#    Add /usr/local/nodejs/bin to the PATH environment variable
# ----------------------------------------------------------------------------

HVIGOR_APP_HOME="`pwd -P`"
HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js
warn() {
    echo ""
    echo -e "33[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@33[0m"
}

error() {
    echo ""
    echo -e "33[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@33[0m"
}

fail() {
    error "$@"
    exit 1
}

# Determine node to start hvigor wrapper script
if [ -n "${NODE_HOME}" ];then
   EXECUTABLE_NODE="${NODE_HOME}/bin/node"
   if [ ! -x "$EXECUTABLE_NODE" ];then
       fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOMEnnPlease set NODE_HOME in your environment to the location where your nodejs installed"
   fi
else
   EXECUTABLE_NODE="node"
   which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path"
fi

# Check hvigor wrapper script
if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then
    fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}"
fi

# start hvigor-wrapper script
exec "${EXECUTABLE_NODE}" 
    "${HVIGOR_WRAPPER_SCRIPT}" "$@"

(2)由于系统编译应用目前不支持配置产品,所以需要把 Launcher 应用源码中有关 pad 的构建项删除。

文件位置:applications/standard/launcher/build-profile.json5

内容如下:

{
    ...
    {
      "name": "phone_launcher",
      "srcPath": "./product/phone",
      "targets": [
        {
          "name": "default",
          "applyToProducts": [
            "default",
          ],
        },
      ],
    },
    {
      "name": "launcher_settings",
      "srcPath": "./feature/settings",
      "targets": [
        {
          "name": "default",
          "applyToProducts": [
            "default",
          ],
        },
      ],
    }
  ],
}

文件位置:applications/standard/launcher/feature/settings/build-profile.json5

内容如下:

{
  "apiType": 'stageMode',
  "buildOption": {
  },
  "targets": [
    {
      "name": "default",
    }
  ],
  "entryModules": ["phone_launcher"]
}

2.删除或注释系统中默认的 Launcher 应用 hap 包编译方式。

文件位置:applications/standard/hap/BUILD.gn

group("hap") {
  deps = [
        ...
      # "//applications/standard/hap:launcher_hap", // 直接删除或注释,不参与编译
      # "//applications/standard/hap:launcher_settings_hap",  // 直接删除或注释,不参与编译
        ...
  ]
 }

3.在 applications/standard/launcher 目录中增加 BUILD.gn 文件。

内容如下:

import("//build/ohos.gni")

ohos_app("launcher_OS") {
  part_name = "prebuilt_hap"
  subsystem_name = "applications" 
  hap_name = "Launcher_OS"   
  certificate_profile = "./signature/launcher.p7b"
  module_libs_dir = "entry"
  module_install_dir = "app/com.ohos.launcher"
  js_build_mode = "release"
  build_level = "module"
  assemble_type = "assembleHap"
}

说明:

4.在 applications/standard/hap/ohos.build 文件的 module_list 中增加 launcher_OS 模块编译。

{
  "subsystem": "applications",
  "parts": {
    "prebuilt_hap": {
        ...
      "module_list": [
        ...
       "//applications/standard/launcher:launcher_OS",
        ...
      ]
    }
  }
}

5.执行源码编译指令。如果以下 2 个目录产物正确,则说明应用源码编译方式修改成功。

(1)在 out/rk3568/obj/applications/standard/launcher/launcher_OS 目录中,会生成 2 个 hap 的编译产物。

(2)在 out/rk3568/packages/phone/system/app/com.ohos.launcher 目录中,是实际系统环境中的 hap 包产物。

6.烧录系统验证功能。

Launcher 正常启动:

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21735,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?