0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony應(yīng)用的編譯構(gòu)建過(guò)程

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:鴻蒙技術(shù)社區(qū) ? 作者:panda_coder ? 2022-04-21 08:13 ? 次閱讀

2022 年 3 月 31 日發(fā)布了最新的 IDE 工具 DevEco Studio 3.0 Beta3,仔細(xì)閱讀文檔后發(fā)現(xiàn)最新 OpenHarmony 應(yīng)用的編譯構(gòu)建過(guò)程已經(jīng)公開(kāi)。

對(duì)應(yīng)官方文檔:《編譯構(gòu)建概述》

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-building-overview-0000001263360495

出于好奇,就對(duì)著文檔一步一步,一個(gè)文件一個(gè)文件的開(kāi)始手動(dòng)建立,最后編譯成功,分享一下構(gòu)建過(guò)程。

成果

如下圖:

69d2971a-c0fe-11ec-bce3-dac502259ad0.png

工具準(zhǔn)備

Node.js:v14.19.1+

最新 OpenHarmonySDK 包,并解壓到一個(gè)文件夾中,SDK下載地址:

https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fos%2F3.1-Release%2Fohos-sdk.tar.gz

SDK 目錄結(jié)構(gòu):

|---ets
|---3.1.5.5
|+---api
|+---build-tools
||+---ets-loader
|---component
---toolchains
---3.1.5.5
+---configcheck
+---lib
---syscapcheck

在創(chuàng)建好該目錄結(jié)構(gòu)后還需要在 ets/js 下的 ./3.1.5.5/build-tools/ets-loader/ 目錄下執(zhí)行 npm install 命令。

創(chuàng)建工程

①創(chuàng)建工程目錄

為了演示我重新在E盤(pán)創(chuàng)建一個(gè)新的工程文件夾 BuildTest,然后借助 vscode 工具創(chuàng)建 build-profile.json5、hvigofile.js、package.json 這三個(gè)配置文件。

build-profile.json5:注意 SDK 版本及 srcPath 配置,簽名信息略想看相應(yīng)配置參考上述官方文檔。

{
"app":{
"signingConfigs":[//工程的簽名信息,可包含多個(gè)簽名信息
],
"compileSdkVersion":8,//指定OpenHarmony應(yīng)用/服務(wù)編譯時(shí)的SDK版本
"compatibleSdkVersion":8,//指定OpenHarmony應(yīng)用/服務(wù)兼容的最低SDK版本
"products":[//定義構(gòu)建的產(chǎn)品品類(lèi),如通用默認(rèn)版、付費(fèi)版、免費(fèi)版等
{
"name":"default",//定義產(chǎn)品的名稱(chēng),由開(kāi)發(fā)者自定義
"signingConfig":"debug",//指定當(dāng)前產(chǎn)品品類(lèi)對(duì)應(yīng)的簽名信息,簽名信息需要在signingConfigs中進(jìn)行定義
}
]
},
"modules":[
{
"name":"entry",//模塊名稱(chēng)
"srcPath":"./entry",//標(biāo)明src目錄相對(duì)工程根目錄的相對(duì)路徑
"targets":[//定義構(gòu)建的產(chǎn)物,由product和各模塊定義的targets共同定義
{
"name":"default",//target名稱(chēng),由各個(gè)模塊的build-profile.json5中的targets字段定義
"applyToProducts":[//產(chǎn)品品類(lèi)名稱(chēng),由products字段進(jìn)行定義
"default"
]
}
]
}
]
}

hvigorfile.js:

module.exports=require('@ohos/hvigor-ohos-plugin').legacyAppTasks

package.json:熟悉 npm 框架的都應(yīng)該了解,package.json 是 npm 依賴(lài)相的配置文件,我們看看在工程目錄下的配置項(xiàng)。

{
"name":"buildtest",//工程名稱(chēng)
"version":"1.0.0",//版本
"ohos":{//ohos
"org":"huawei",
"buildTool":"hvigor",
"directoryLevel":"project"
},
"description":"exampledescription",
"repository":{},
"license":"ISC",
"dependencies":{//依賴(lài)項(xiàng)
"hypium":"^1.0.0",
"@ohos/hvigor":"1.0.6",
"@ohos/hvigor-ohos-plugin":"1.0.6"
}
}

配置完工程后,我們創(chuàng)建我們的第一個(gè)模塊 entry。

②創(chuàng)建模塊

在工程目錄創(chuàng)建文件夾 entry(于上述 build-profile.json5 的 module 配置的 srcPath 保持一致)。

并添加模塊配置文件:build-profile.json5、hvigorfile.js、package.json以及和 HarmonyOS 一樣的 src 模塊目錄。

build-profile.json5:此處省略了 Cpp 配置,Cpp 相關(guān)配置參考官方文檔。

{
"apiType":'faMode',//API類(lèi)型,API8為FA模型,API9為Stage模型,不需要修改
"showInServiceCenter":true,//是否在服務(wù)中心露出
"buildOption":{
"arkEnable":true,//是否使用方舟編譯器進(jìn)行編譯
},
"targets":[//模塊對(duì)應(yīng)的產(chǎn)物配置
{
"name":"default",
}
]
}

hvigorfile.js:

module.exports=require('@ohos/hvigor-ohos-plugin').legacyHapTasks

大家來(lái)找茬,此處配置乍一看和工程下的 hvigorfile.js 一個(gè)樣,其實(shí) require 引入的模塊卻不相同。

工程目錄是 legacyAppTasks,此處是 legacyHapTasks(工程是 AppTasks 模塊是 HapTasks)。我就因?yàn)榇颂幣渲脝?wèn)題浪費(fèi)了十幾分鐘。

package.json:此處的 npm 配置文件則是模塊中引用第三方組件/插件配置處。

{
"license":"ISC",
"name":"entry",
"ohos":{
"org":"huawei",
"directoryLevel":"module",
"buildTool":"hvigor"
},
"description":"exampledescription",
"repository":{},
"version":"1.0.0",
"dependencies":{}
}

再在 src 目錄下建立 src/main/config.json、src/main/ets/app.ets、src/main/ets/pages/index.ets、src/resources/…等對(duì)應(yīng)文件。此處省略,具體參考對(duì)應(yīng)文件結(jié)構(gòu)及文件。

③構(gòu)建

添加 npm 源:必須先添加 HarmonyOS 的 npm 源,否則執(zhí)行 npm install 會(huì)報(bào) 404 錯(cuò)誤。

npmconfigset@ohos:registry=https://repo.harmonyos.com/npm/

在工程目錄安裝依賴(lài):在工程目錄(根目錄)下安裝依賴(lài)。

npminstall

執(zhí)行構(gòu)建命令:在工程目錄執(zhí)行構(gòu)建命令,構(gòu)建是通過(guò) node.js 調(diào)用 hvigor 工具進(jìn)行打包構(gòu)建,確保 node 已添加在系統(tǒng)環(huán)境變量中。

node./node_modules/@ohos/hvigor/bin/hvigor.js-mmoduleassembleHap

不出意外會(huì)出現(xiàn)以下錯(cuò)誤:

PSE:BuildTest>node./node_modules/@ohos/hvigor/bin/hvigor.js-mmoduleassembleHap
>hvigorERROR:Aproblemoccurredinrootmodule:
ERROR:Cause:Cannotfindsdk.dirorOHOS_SDK_HOMEinSystemEnvironmentPath
atE:BuildTestlocal.properties:1:1
PSE:BuildTest>

以上原因是我們沒(méi)有配置 SDK 路徑。

處理方式為:在項(xiàng)目根路徑創(chuàng)建 local.properties 文件或者在系統(tǒng)環(huán)境變量中配置 OHOS_SDK_HOME,注意是系統(tǒng)環(huán)境變量不是用戶(hù)環(huán)境變量。

local.properties:

sdk.dir=//sdk所在文件夾
nodejs.dir=//nodejs所在文件夾

配置好后再重新執(zhí)行構(gòu)建命令就能看到我們構(gòu)建成功的結(jié)果了。

69ea937e-c0fe-11ec-bce3-dac502259ad0.png

結(jié)語(yǔ)

做了這么多步驟,那么有什么實(shí)際意義尼?

目前 OpenHarmony 和 HarmonyOS 在 UI 上是共通的,只是 API 上不同。那么就能將 HarmonyOS 的 UI 直接拿到 Openharmony 上使用,直接打包構(gòu)建 OpenHarmony 的 HAP。

再加工一下可以像 vue-cli 那樣直接創(chuàng)建出項(xiàng)目目錄,如果能再實(shí)現(xiàn) preview 功能,就可以實(shí)現(xiàn)無(wú)需依賴(lài) IDE 就能開(kāi)發(fā)打包 HAP。

有機(jī)會(huì)自己自定義一個(gè) IDE 出來(lái),將上述過(guò)程黑盒化,想自己做 IDE 的朋友這一步肯定不能少。

原文標(biāo)題:無(wú)需DevEco Studio就能編譯OHOS應(yīng)用

文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IDE
    IDE
    +關(guān)注

    關(guān)注

    0

    文章

    334

    瀏覽量

    46540
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32664
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1946

    瀏覽量

    29733
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3548

    瀏覽量

    15735

原文標(biāo)題:無(wú)需DevEco Studio就能編譯OHOS應(yīng)用

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何讓OpenHarmony編譯速度“狂飆”

    OpenHarmony 有兩種編譯方式,一種是通過(guò) hb 工具編譯,一種是通過(guò) build.sh 腳本編譯。本文筆者將提升 build.sh 方式
    的頭像 發(fā)表于 02-14 09:31 ?1727次閱讀

    OpenHarmony 移植:build lite 編譯構(gòu)建過(guò)程

    這些疑惑,會(huì)對(duì) build lite 編譯構(gòu)建過(guò)程有個(gè)更深入的理解。 1、產(chǎn)品解決方案代碼是如何被調(diào)用編譯的 在文件 buildliteBUILD.gn 配置文件中的
    的頭像 發(fā)表于 02-19 16:19 ?797次閱讀

    鴻蒙南向開(kāi)發(fā)—OpenHarmony技術(shù)編譯構(gòu)建框架

    概述 OpenHarmony編譯子系統(tǒng)是以GN和Ninja構(gòu)建為基座,對(duì)構(gòu)建和配置粒度進(jìn)行部件化抽象、對(duì)內(nèi)建模塊進(jìn)行功能增強(qiáng)、對(duì)業(yè)務(wù)模塊進(jìn)行功能擴(kuò)展的系統(tǒng),該系統(tǒng)提供以下基本功能: 以
    發(fā)表于 01-04 16:47

    使用DevEco Studio3.0編譯OHOS應(yīng)用的過(guò)程

    在2022年3月31日發(fā)布了最新的IDE工具DevEco Studio 3.0 Beta3,仔細(xì)閱讀文檔后發(fā)現(xiàn)最新OpenHarmony應(yīng)用的編譯構(gòu)建過(guò)程已經(jīng)公開(kāi),對(duì)應(yīng)官方文檔:
    發(fā)表于 04-11 11:20

    OpenHarmony輕量和小型系統(tǒng)編譯構(gòu)建指導(dǎo)

    構(gòu)建流程hb set: 設(shè)置OpenHarmony源碼目錄和要編譯的產(chǎn)品。hb build: 編譯產(chǎn)品、開(kāi)發(fā)板或者組件。編譯主要
    發(fā)表于 05-25 10:46

    【ROC-RK3568-PC開(kāi)發(fā)板試用體驗(yàn)】RK3568的Openharmony系統(tǒng)構(gòu)建過(guò)程

    就參考Firefly Wiki openharmony使用手冊(cè)進(jìn)行我們的系統(tǒng)構(gòu)建,其中構(gòu)建過(guò)程不多贅述,此處僅僅列舉構(gòu)建
    發(fā)表于 09-05 19:08

    DevEco Hvigor高效編譯構(gòu)建過(guò)程新秘籍

    包括任務(wù)執(zhí)行的耗時(shí)與線程、ArkTS編譯中的各環(huán)節(jié)的細(xì)分耗時(shí)情況等。開(kāi)發(fā)者可以藉此分析構(gòu)建過(guò)程中的耗時(shí)情況、進(jìn)而改善構(gòu)建效率。 在DevEco Studio中開(kāi)啟DevEco Hvig
    發(fā)表于 10-17 16:54

    編譯openharmony環(huán)境

    OpenHarmony是由開(kāi)放原子開(kāi)源基金會(huì)(OpenAtom Foundation)孵化及運(yùn)營(yíng)的開(kāi)源項(xiàng)目,當(dāng)前的OpenHarmony源代碼僅支持在Linux環(huán)境下編譯。 開(kāi)源代碼倉(cāng)庫(kù)地址
    的頭像 發(fā)表于 06-23 15:29 ?1335次閱讀
    <b class='flag-5'>編譯</b><b class='flag-5'>openharmony</b>環(huán)境

    詳解OpenHarmony編譯和燒錄

    在上一篇【博流 BL-HWC-G1 開(kāi)發(fā)板試用】開(kāi)箱及編譯燒錄官方程序(BL602 IoT SDK)中,我們講了這塊開(kāi)發(fā)板使用官方SDK進(jìn)行編譯燒錄,這一篇,我們來(lái)講OpenHarmony
    的頭像 發(fā)表于 11-08 09:58 ?5207次閱讀
    詳解<b class='flag-5'>OpenHarmony</b>的<b class='flag-5'>編譯</b>和燒錄

    剖析OpenHarmony3.0編譯構(gòu)建流程

    ?? 早就打算研究下 OH3.0 的編譯框架了,最近一直在搞移植,總算有點(diǎn)進(jìn)展了,抽個(gè)空來(lái)分析下 3.0 的編譯框架。 ?? 大體看了下和 2.0 的差別不是特別大:《 OpenHarmony
    的頭像 發(fā)表于 12-07 10:54 ?3061次閱讀

    OpenHarmony Dev-Board-SIG專(zhuān)場(chǎng):搭建編譯構(gòu)建主要步驟

    OpenHarmony Dev-Board-SIG專(zhuān)場(chǎng):搭建編譯構(gòu)建主要步驟
    的頭像 發(fā)表于 12-28 14:37 ?988次閱讀
    <b class='flag-5'>OpenHarmony</b> Dev-Board-SIG專(zhuān)場(chǎng):搭建<b class='flag-5'>編譯</b><b class='flag-5'>構(gòu)建</b>主要步驟

    OpenHarmony生態(tài)論壇:基于OpenHarmony構(gòu)建支付終端的安全框架

    OpenHarmony生態(tài)論壇:基于OpenHarmony構(gòu)建支付終端的安全框架 ? ? ? 審核編輯:彭菁 ?
    的頭像 發(fā)表于 04-25 17:17 ?1209次閱讀
    <b class='flag-5'>OpenHarmony</b>生態(tài)論壇:基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>構(gòu)建</b>支付終端的安全框架

    Windows搭建OpenHarmony編譯環(huán)境

    由于OpenHarmony編譯工具鏈主要是建立在Linux操作系統(tǒng)下,如需要編譯OpenHarony內(nèi)核則需要搭建虛擬機(jī)等工序,相對(duì)比較繁瑣。那么,是否可以在Windows操作系統(tǒng)上實(shí)現(xiàn)
    的頭像 發(fā)表于 08-09 08:26 ?1323次閱讀
    Windows搭建<b class='flag-5'>OpenHarmony</b><b class='flag-5'>編譯</b>環(huán)境

    【技術(shù)視界】DevEco Hvigor高效編譯,構(gòu)建過(guò)程新秘籍

    的是華為終端BG編譯構(gòu)建技術(shù)專(zhuān)家的分享,希望能為您的開(kāi)發(fā)之路帶來(lái)啟發(fā)~ 作者:Lewei,華為終端BG編譯構(gòu)建技術(shù)專(zhuān)家 DevEcoHvigor是使用TypeScript語(yǔ)言開(kāi)發(fā)的全新
    的頭像 發(fā)表于 09-26 12:10 ?955次閱讀
    【技術(shù)視界】DevEco Hvigor高效<b class='flag-5'>編譯</b>,<b class='flag-5'>構(gòu)建</b><b class='flag-5'>過(guò)程</b>新秘籍

    鴻蒙OpenHarmony開(kāi)發(fā):【編譯構(gòu)建指導(dǎo)】

    OpenHarmony編譯子系統(tǒng)是以GN和Ninja構(gòu)建為基座,對(duì)構(gòu)建和配置粒度進(jìn)行部件化抽象、對(duì)內(nèi)建模塊進(jìn)行功能增強(qiáng)、對(duì)業(yè)務(wù)模塊進(jìn)行功能擴(kuò)展的系統(tǒng),該系統(tǒng)提供以下基本功能
    的頭像 發(fā)表于 05-13 09:31 ?1202次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>開(kāi)發(fā):【<b class='flag-5'>編譯</b><b class='flag-5'>構(gòu)建</b>指導(dǎo)】