使用Jenkins實現鴻蒙HAR應用的自動化構建打包

使用Jenkins實現鴻蒙HAR應用的自動化構建打包

在軟件開發領域,自動化構建是提高開發效率和確保代碼質量的重要手段。特別是在鴻蒙(OpenHarmony)應用開發中,自動化構建更是不可或缺。本文將詳細介紹如何使用Jenkins命令行工具實現鴻蒙HAR應用的自動化構建打包,讓開發流程更加高效、可靠。

一、引言

隨著鴻蒙系統的廣泛應用,越來越多的開發者投入到鴻蒙應用的開發中。然而,手動構建和打包應用不僅耗時耗力,還容易出錯。因此,實現自動化構建成為開發者的迫切需求。Jenkins作為一款開源的自動化服務器軟件,以其強大的功能和靈活的插件體系,成為實現這一需求的理想選擇。

二、環境準備

在開始之前,請確保你已經安裝了以下軟件和環境:

  • Jenkins:用于自動化構建的任務調度和執行。
  • DevEco Studio:鴻蒙開發的集成開發環境(IDE),包含了必要的工具和SDK。
  • Node.js:JavaScript運行環境,用于執行hvigorw等腳本。
三、核心步驟

實現鴻蒙HAR應用的自動化構建打包,核心在于以下三個步驟:初始化依賴、初始化工作環境、執行具體的構建任務。下面將詳細介紹每個步驟的具體實現。

1. 初始化依賴

首先,需要使用ohpm命令來初始化項目所需的依賴。ohpm是鴻蒙的包管理工具,類似于npm或yarn。在Jenkins腳本中,可以使用以下命令來安裝所有依賴:

/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true

這條命令會從指定的ohpm倉庫(https://ohpm.openharmony.cn/ohpm/)下載并安裝所有在oh-package.json5中聲明的依賴。

2. 初始化工作環境

接下來,使用hvigorw腳本來初始化工作環境。hvigorw是鴻蒙的構建工具,用于執行構建、編譯等任務。在Jenkins腳本中,可以使用以下命令來同步項目配置并初始化工作環境:

/Applications/DevEco-Studio.app/Contents/tools/node/bin/node /Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js --sync -p product=default --analyze=normal --parallel --incremental --daemon

這條命令會同步項目的配置信息,并根據指定的產品配置(product=default)初始化工作環境。同時,它還會開啟并行構建、增量構建和守護進程等功能,以提高構建效率。

3. 執行具體的構建任務

最后,使用hvigorw腳本來執行具體的構建任務。在Jenkins腳本中,可以使用以下命令來構建并打包HAR應用:

hvigorw --mode module -p product=default -p module=$moduleName@default -p buildMode=release assembleHar --analyze=normal --parallel --incremental --daemon

這條命令會根據指定的模塊(module=$moduleName@default)和產品配置(product=default),以發布模式(buildMode=release)構建并打包HAR應用。同樣地,它也開啟了并行構建、增量構建和守護進程等功能。

四、腳本實現

將上述三個步驟整合到一個腳本中,就可以在Jenkins中執行完整的業務邏輯構建了。以下是一個示例腳本:

#!/bin/bash# 設置DevEco Studio路徑
DEVECO_STUDIO_PATH="/Applications/DevEco-Studio.app/Contents/tools"# 初始化依賴
${DEVECO_STUDIO_PATH}/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true# 檢查依賴安裝是否成功
if [ $? -ne 0 ]; thenecho "依賴安裝失敗"exit 1
fi# 初始化工作環境
${DEVECO_STUDIO_PATH}/node/bin/node ${DEVECO_STUDIO_PATH}/hvigor/bin/hvigorw.js --sync -p product=default --analyze=normal --parallel --incremental --daemon# 檢查工作環境初始化是否成功
if [ $? -ne 0 ]; thenecho "工作環境初始化失敗"exit 1
fi# 執行具體的構建任務
hvigorw --mode module -p product=default -p module=$moduleName@default -p buildMode=release assembleHar --analyze=normal --parallel --incremental --daemon# 檢查構建任務是否成功
if [ $? -ne 0 ]; thenecho "構建任務失敗"exit 1
fiecho "構建成功"

將這個腳本保存為build.sh,并在Jenkins中配置一個執行該腳本的構建任務,就可以實現鴻蒙HAR應用的自動化構建打包了。

五、總結與展望

通過本文的介紹,我們了解了如何使用Jenkins命令行工具實現鴻蒙HAR應用的自動化構建打包。這不僅提高了開發效率,還確保了代碼質量。未來,隨著鴻蒙系統的不斷發展和完善,自動化構建工具也將更加智能和高效。我們可以期待更多的自動化工具和插件出現,為鴻蒙應用開發提供更加便捷和高效的解決方案。

希望本文對大家有所幫助!如果你有任何疑問或建議,請隨時在評論區留言。

附錄一

在DevEco Studio啟動或項目初始化過程中,執行以下命令:

/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true

作用是為鴻蒙(HarmonyOS/OpenHarmony)項目安裝或更新所有依賴包。以下是具體解析:


1. 命令的組成部分

參數/路徑說明
/Applications/DevEco-Studio.app/.../ohpm調用DevEco Studio內置的 ohpm(OpenHarmony Package Manager)工具,專用于管理鴻蒙生態的依賴包。
install --all安裝項目配置文件(如oh-package.json5)中定義的所有依賴項(包括dependenciesdevDependencies)。
--registry https://ohpm.openharmony.cn/ohpm/指定鴻蒙官方包倉庫作為依賴源,確保下載合法的鴻蒙組件。
--strict_ssl true啟用嚴格的SSL證書驗證,防止網絡劫持或下載來源被篡改。

2. 該命令的典型場景

(1) 初始化項目時
  • 當首次打開項目或檢測到oh_modules(依賴目錄)缺失時,DevEco Studio會自動觸發此命令,確保依賴完整。
  • 類似npm installyarn install的作用,但針對鴻蒙生態的包管理。
(2) 更新依賴配置后
  • 如果修改了oh-package.json5文件(如添加/刪除依賴項),手動執行此命令可同步依賴。
(3) 解決依賴沖突或缺失
  • 當編譯失敗并提示缺少模塊或版本不兼容時,重新運行此命令可嘗試修復依賴樹。

3. 關鍵注意事項

(1) 依賴源的合法性
  • 必須使用鴻蒙官方倉庫(https://ohpm.openharmony.cn/ohpm/)以確保依賴包與鴻蒙系統兼容。
  • 不要隨意切換第三方倉庫,否則可能引入非鴻蒙適配的代碼,導致編譯失敗。
(2) --strict_ssl true的作用
  • 若本地網絡有SSL證書攔截(如公司代理),可能需要臨時關閉此參數(設為false),但會降低安全性。
  • 推薦優先配置系統信任的證書,而非禁用SSL驗證。
(3) 與npm的區別
  • ohpm是鴻蒙專用的包管理器,與Node.js的npm無直接關系。
  • 鴻蒙的Native模塊(如C++庫)和HAR/HSP包必須通過ohpm管理,無法使用npm替代。

4. 常見問題

Q1: 能否省略此命令?
  • 。除非項目無任何依賴項,否則缺少依賴會導致編譯失敗(如ERROR: ENOENT: no such file)。
Q2: 執行失敗怎么辦?
  • 步驟1:檢查網絡
    確保能訪問https://ohpm.openharmony.cn,尤其注意代理或防火墻設置。
  • 步驟2:清理緩存
    rm -rf ./oh_modules  # 刪除依賴目錄
    ohpm clean           # 清理ohpm緩存
    
  • 步驟3:手動指定環境
    若系統全局安裝了其他Node.js版本,可能路徑沖突,應直接使用DevEco Studio內置的ohpm和Node.js。

5. 總結

此命令是鴻蒙項目依賴管理的核心步驟,確保所有模塊和工具鏈正確安裝。
如果編譯過程中出現依賴相關錯誤(如uv_cwdENOENT),優先嘗試重新執行此命令并檢查網絡環境。

附錄二

在鴻蒙(HarmonyOS/OpenHarmony)應用開發中,您提到的命令是用于調用 DevEco Studio 內置的 hvigor 工具來執行項目構建任務。以下是該命令的詳細解析:


命令結構

/Applications/DevEco-Studio.app/Contents/tools/node/bin/node 
/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js 
--sync 
-p product=default 
--analyze=normal 
--parallel 
--incremental 
--daemon

各部分作用

1. nodehvigorw.js 路徑
  • /Applications/DevEco-Studio.app/.../node
    使用 DevEco Studio 內置的 Node.js 環境,避免因系統全局 Node.js 版本不兼容導致問題。
  • /Applications/DevEco-Studio.app/.../hvigorw.js
    hvigor 是華為為鴻蒙開發定制的構建工具(類似 Android 的 Gradle),負責管理依賴、編譯代碼、打包資源等任務。

2. 核心參數解析
參數作用
--sync同步項目配置,確保所有模塊的依賴關系和配置(如 build-profile.json5)一致。常用于首次拉取代碼或修改依賴后。
-p product=default指定構建的 產品形態default 表示使用默認配置(如調試模式),其他可能值如 release(發布模式)。
--analyze=normal啟用構建過程分析,但僅輸出常規日志(非詳細)。若需調試,可改為 --analyze=verbose
--parallel啟用多線程并行構建,加快大型項目的編譯速度。
--incremental增量編譯模式,僅編譯修改過的文件,減少構建時間。但若緩存異常可能導致失敗,需定期清理(如 hvigor clean)。
--daemon以守護進程模式運行 hvigor,首次啟動稍慢,但后續構建會復用進程提升速度。

該命令的典型場景

1. 項目初始化或配置變更后
  • 首次拉取代碼或修改 build-profile.json5oh-package.json5 等文件后,需執行 --sync 確保配置同步。
2. 日常開發構建
  • 使用 --incremental--parallel 加速構建,適合頻繁修改代碼的場景。
3. 調試構建問題
  • 若構建失敗,移除 --incremental--daemon 進行全量編譯,或添加 --debug 參數獲取詳細日志。

常見問題與注意事項

1. 增量編譯失敗
  • 現象:修改代碼后構建報錯,但全量編譯成功。
  • 解決:清理緩存重新同步:
    /Applications/DevEco-Studio.app/.../hvigorw.js clean
    
2. 守護進程(daemon)沖突
  • 現象:修改環境變量或工具鏈后,構建行為異常。
  • 解決:終止守護進程:
    /Applications/DevEco-Studio.app/.../hvigorw.js --stop
    
3. 并行編譯(parallel)的資源競爭
  • 現象:多模塊同時編譯時,偶發文件鎖沖突(如 ENOENTEACCES)。
  • 解決:降低并行線程數(默認根據 CPU 核心數自動分配):
    --parallel --max-workers=2  # 限制為 2 個線程
    

與 DevEco Studio 圖形化操作的關系

  • GUI 操作等價性:在 DevEco Studio 中點擊 Build > Build Project 時,IDE 底層會生成類似命令,但可能省略部分參數(如默認啟用 --daemon)。
  • 手動調用的優勢:在自動化腳本或調試復雜問題時,手動指定參數更靈活。

總結

此命令是鴻蒙項目構建的核心步驟,通過 hvigor 工具實現:

  1. 同步配置--sync
  2. 按產品形態構建-p product=default
  3. 優化構建速度--parallel--incremental--daemon

若構建不穩定,可嘗試以下操作:
4. 清理緩存:hvigor clean
5. 關閉增量編譯:移除 --incremental
6. 查看詳細日志:添加 --debug 參數。

附錄三 .鴻蒙構建-Error: ENOENT: no such file or directory, uv_cwd

工程在進行構建的時候遇到這個問題:Error: ENOENT: no such file or directory, uv_cwd

詳細報錯其實是在 node 里面,因此在網絡上主要有以下幾種解決方式

  1. 如果是在終端運行的話,可以重啟終端,看是否解決

  2. 暴力終止所有 node 進程:killall node (本人用此方法解決問題)

  3. 重啟電腦。還真別說,我覺得靠譜。跟上一種方法有異曲同工之妙。但如果你不想每次都重啟,可能還是優先看看上面的方法吧

上面參考了其他博主的問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895029.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

漏洞分析 Spring Framework路徑遍歷漏洞(CVE-2024-38816)

漏洞概述 VMware Spring Framework是美國威睿(VMware)公司的一套開源的Java、JavaEE應用程序框架。該框架可幫助開發人員構建高質量的應用。 近期,監測到Spring Framework在特定條件下,存在目錄遍歷漏洞(網宿評分&am…

筆記:理解借貸相等的公式

強烈推薦非會計人士,快速了解會計看這個系列的視頻,其中比較燒腦的“借貸相等”公式,這個視頻講解的不錯: 4.小白財務入門-借貸記賬法_嗶哩嗶哩_bilibili 比如這里,錢在銀行卡重,所以銀行存款就是借方…

Java算法技術文章:深入解析排序、搜索與數據結構

引言 在軟件開發的世界里,算法不僅是程序設計的基礎,更是提升軟件性能、優化用戶體驗的關鍵。Java,作為一種廣泛使用的編程語言,提供了豐富的API和標準庫來支持各種算法的實現。本文將深入探討Java中的排序算法、搜索算法以及一些…

Android15音頻進階之MediaRecorder支持通道(一百零五)

簡介: CSDN博客專家、《Android系統多媒體進階實戰》一書作者 新書發布:《Android系統多媒體進階實戰》?? 優質專欄: Audio工程師進階系列【原創干貨持續更新中……】?? 優質專欄: 多媒體系統工程師系列【原創干貨持續更新中……】?? 優質視頻課程:AAOS車載系統+…

個人 Vite 構建性能分析插件開發實踐

Vite 構建分析插件開發實踐 一、開發背景 在個人項目開發中遇到以下問題: 🕒 構建時間波動大(30%)🔍 難以定位耗時模塊📈 缺乏構建進度反饋 開發目標: 實現模塊級耗時分析提供實時進度預測識…

【Spring】什么是Spring?

什么是Spring? Spring是一個開源的輕量級框架,是為了簡化企業級開發而設計的。我們通常講的Spring一般指的是Spring Framework。Spring的核心是控制反轉(IoC-Inversion of Control)和面向切面編程(AOP-Aspect-Oriented Programming)。這些功能使得開發者…

學習筆記:機器學習中的數學原理(一)

1. 集合 集合分為有限集和無限集; 對于有限集,兩集合元素數相等即為等勢; 對于無限集,兩集合元素存在一一映射關系即為等勢; 無限集根據是否與正整數集等勢分為可數集和不可數集。 2. sigmoid函數(也叫…

【信息系統項目管理師-案例真題】2016下半年案例分析答案和詳解

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 試題一【問題1】4 分【問題2】12 分【問題3】3 分【問題4】6 分試題二【問題1】3 分【問題2】4 分【問題3】8 分【問題4】5 分【問題5】5 分試題三【問題1】4 分【問題2】8 分【問題3】5 分【問題4】8 分試題一…

基于javaweb的SpringBoothis智能醫院管理系統(源碼+文檔+部署講解)

🎬 秋野醬:《個人主頁》 🔥 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 運行環境開發工具適用功能說明一、項目運行 環境配置: 運行環境 Java≥8、MySQL≥5.7、Node.js≥14 開發工具 后端&…

JS實現燈光閃爍效果

在 JS中&#xff0c;我們可以實現燈光閃爍效果&#xff0c;這里主要用 setInterval 和 clearInterval 兩個重要方法。 效果圖 源代碼 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>燈閃爍效果<…

Linux ltrace跟蹤入門

文章目錄 背景ltrace原理ltrace使用跟蹤程序調用庫函數跟蹤指定pid進程調用 參考 本文介紹ltrace跟蹤 背景 ltrace 會攔截并記錄正在執行的進程所調用的動態庫調用以及該進程接收到的信號&#xff0c;它還可以攔截并打印程序執行的系統調用。 其代碼位置在&#xff1a;https:/…

PCA9685 16路PWM 控制板 STM32F103 驅動

PCA9685 擁有16路PWM&#xff0c;通過 IIC 與 STM32 進行通信&#xff0c;以下驅動代碼已通過測試&#xff0c;你可以進行更多代碼優化 #include "pca9685.h"// 向 PCA9685 寫入一個字節數據 static void PCA9685_write8( uint8_t addr, uint8_t d) {while (I2C_Get…

使用 Apache Spark 進行大數據分析

使用 Apache Spark 進行大數據分析 環境準備 為了能夠在本地環境中運行Spark程序&#xff0c;需要先完成環境搭建。確保已經安裝了Jupyter Notebook和Apache Spark&#xff0c;并完成了兩者之間的集成。 創建 SparkSession 在 Python 中使用 PySpark 時&#xff0c;通常會創…

2025 專業的物聯網軟件開發公司有哪些

物聯網&#xff08;Internet of Things&#xff0c;簡稱IoT&#xff09;具有多個顯著的優勢&#xff0c;主要包括提高效率、節省成本、數據收集與分析、自動化控制、改善用戶體驗、增強決策能力和創新業務模式?。2025&#xff0c;有哪些比較專業的物聯網開發公司呢&#xff1f…

7.PPT:“中國夢”學習實踐活動【20】

目錄 NO1234? NO5678? NO9\10\11 NO1234 考生文件夾下創建一個名為“PPT.pptx”的新演示文稿Word素材文檔的文字&#xff1a;復制/挪動→“PPT.pptx”的新演示文稿&#xff08;藍色、黑色、紅色&#xff09; 視圖→幻燈片母版→重命名&#xff1a;“中國夢母版1”→背景樣…

學習筆記十九:K8S生成pod過程

K8S生成pod過程 流程圖具體生成過程用戶提交 Pod 定義API Server 處理請求調度器分配節點&#xff08;Scheduling&#xff09;目標節點上的 Pod 創建網絡配置狀態上報與監控控制器管理&#xff08;Controller Manager&#xff09;就緒與服務發現 關鍵錯誤場景高級特性 流程圖 具…

封裝descriptions組件,描述,靈活

效果 1、組件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…

21.2.6 字體和邊框

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的。 通過設置Rang.Font對象的幾個成員就可以修改字體&#xff0c;設置Range.Borders就可以修改邊框樣式。 【例 21.6】【項目&#xff…

FPGA VGA timing

概念 VGA(Video Graphics Array)時序是控制VGA接口顯示圖像的關鍵參數,它主要包括行時序和場時序兩部分。以下是對VGA時序的詳細解釋: 一、VGA接口簡介 VGA接口是IBM公司在1987年推出的一種使用模擬信號的視頻傳輸標準,具有成本低、結構簡單、應用靈活等優點,至今仍被廣…

中級通信工程師綜合教材(5、6章節)

五、現代通信網 1、通信網的構成要素 通信網在硬件設備方面的構成要素是交換設備、傳輸鏈路和終設備。 構成要素 功能作用 常見設備舉例 終端設備 通信的源點和目的地 電話機、傳真機、計算機、視頻終端、多媒體終端等 交換設備 通信網的核心設備,主要完成呼叫處理、信令處理…