一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

服務器資訊|IT/互聯網|云計算|區塊鏈|軟件資訊|操作系統|手機數碼|百科知識|免費資源|頭條新聞|

服務器之家 - 新聞資訊 - 操作系統 - OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

2023-12-12 17:03未知服務器之家 操作系統

想了解更多關于開源的內容,請訪問: 本站開源基礎軟件社區 概述 文檔環境 開發環境:Windows 11 編譯環境:Ubuntu 22.04 開發板型號:DAYU 200(RK3568) 系統版本:OpenHarmony-4.0-Release 涉及倉庫: applications_launcher 功能簡介 在OpenHarmony系

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

想了解更多關于開源的內容,請訪問:

本站開源基礎軟件社區

概述

文檔環境

  • 開發環境:Windows 11
  • 編譯環境:Ubuntu 22.04
  • 開發板型號:DAYU 200(RK3568)
  • 系統版本:OpenHarmony-4.0-Release
  • 涉及倉庫:applications_launcher

功能簡介

  • 在OpenHarmony系統中預安裝應用的hap包會隨系統編譯打包到鏡像中,目前有兩種編譯預安裝應用hap包的方式,一種為隨系統編譯時,編譯應用源碼生成hap包的方式,另一種是將已生成的hap包放入系統源碼中,再進行打包的方式。后者需要開發者使用DevEco Studio或其它途徑,把應用源碼編譯構建為hap包,再將hap放入系統源碼中。
  • 在OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(3.2-Release)文章中,介紹了如何在3.2Release版本的系統源碼中編譯系統應用Launcher。本文檔將繼續以Launcher為例,帶大家了解如何通過4.0Release的系統源碼編譯應用的方式來打包預安裝應用。
  • 由于應用依賴和構建工具的升級和替換,3.2Release系統編譯構建應用的方式是NPM+Webpack,而4.0Release使用OHPM+Hvigor的方式進行構建,差別較大。

4.0-Release系統編譯Launcher

由于Launcher自身原因,導致需要做2處改動才可進行源碼編譯構建。本步驟并非所有項目通用,如果新建的項目可以跳過本步驟,后續Launcher或工具更新后也不需要本步驟。

適配系統源碼中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 "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m"
}

error() {
	echo ""
	echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[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_HOME\n\nPlease 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}" "$@"

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

由于系統編譯應用目前不支持配置產品,所以需要把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",
          ],
        },
      ],
    }
  ],
}

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

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

內容如下:

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

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

刪除或注釋系統中默認的Launcher應用hap包編譯方式。

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

group("hap") {
  deps = [
    	...
      # "http://applications/standard/hap:launcher_hap", // 直接刪除或注釋,不參與編譯
      # "http://applications/standard/hap:launcher_settings_hap",  // 直接刪除或注釋,不參與編譯
    	...
  ]
 }

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

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

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

內容如下:

import("http://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"
}

說明:

  • 此處產物名稱hap_name定義為Launcher_OS是為了區分原系統源碼中默認的hap包名稱,實際可以填寫為Launcher或任意值。
  • BUILD.gn的模板參數可以參考編譯系統提供的模板。

在applications/standard/hap/ohos.build文件的module_list中增加launcher_OS模塊編譯。

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

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

執行源碼編譯指令。如果以下2個目錄產物正確,則說明應用源碼編譯方式修改成功。

在out/rk3568/obj/applications/standard/launcher/launcher_OS目錄中,會生成2個hap的編譯產物。

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

在out/rk3568/packages/phone/system/app/com.ohos.launcher目錄中,是實際系統環境中的hap包產物。

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

燒錄系統驗證功能。

Launcher正常啟動:

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

系統應用目錄文件正確:

OpenHarmony應用編譯 - 如何在源碼中編譯復雜應用(4.0-Release)

想了解更多關于開源的內容,請訪問:

本站開源基礎軟件社區

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久香蕉网 | 欧美午夜精品久久久久久黑人 | 国产成人精品一区二三区 | 国产小视频免费看 | 四虎影院免费在线 | 精品在线免费播放 | 国产一久久香蕉国产线看观看 | 日本特级大片 | 国产第一综合另类色区奇米 | 91porny丨首页 | 免费观看美景之屋 | 国产aaaaa一级毛片 | 久久这里只有精品视频9 | brazzers办公室 | 黄色aaa级片 | 国产卡一卡二卡三乱码手机 | 日韩在线观看网站 | 精品日韩欧美一区二区三区 | 国产一级真人毛爱做毛片 | 日韩欧美中文字幕一区二区三区 | 欧美free激情野战hd | 97国产精品久久碰碰牛牛 | 亚洲欧美日韩久久一区 | 满城尽带黄金甲大胸片 | 国产亚洲福利一区二区免费看 | 特黄特色大片免费高清视频 | 性姿势女人嗷嗷叫图片 | 成年人在线免费观看视频网站 | 日本丰满大乳乳奶 | 我年轻漂亮的继坶2中字在线播放 | 日产乱码2021永久手机版 | 午夜理论电影在线观看亚洲 | 国产一区二 | 草莓在深夜释放自己软件 | 国产日本免费 | 日本三级免费网站 | 国产精品亚洲一区二区久久 | 日本无遮挡拍拍拍凤凰 | 亚洲欧美专区精品伊人久久 | 亚洲欧美日韩另类在线一 | 午夜伦伦电影理论片费看 |