鴻蒙OpenHarmony技術:【Docker編譯環境】

?Docker環境介紹

OpenHarmony為開發者提供了兩種Docker環境,以幫助開發者快速完成復雜的開發環境準備工作。兩種Docker環境及適用場景如下:

  • 獨立Docker環境:適用于直接基于Ubuntu、Windows操作系統平臺進行版本編譯的場景。
  • 基于HPM的Docker環境:適用于使用HPM工具進行發行版編譯的場景。
  • 開發前請熟悉鴻蒙開發指導文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復制轉到。

表1?Docker鏡像介紹

系統類型運行平臺Docker鏡像倉庫標簽
標準系統(獨立Docker環境)Ubuntu/Windowsswr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard3.2
小型系統(獨立Docker環境)Ubuntu/Windowsswr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small3.2
輕量系統(獨立Docker環境)Ubuntu/Windowsswr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini3.2
輕量和小型系統(HPM Docker環境)Ubuntu/Windowsswr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker0.0.3

環境準備

在使用Docker環境前,需要準備源碼和一些基本工具,以Ubuntu為例,您需要執行以下步驟:

  1. 安裝Docker

    • 在Ubuntu中,可以使用下面的命令來安裝Docker:

      sudo apt install docker.io

    • 其他系統的Docker安裝請參考Docker指導。
  2. 獲取OpenHarmony源碼

    請參考獲取源碼。

    icon-note.gif

    ? 說明:
    HPM Docker環境無需單獨獲取源碼。
  3. 獲取使用權限

    為了能夠使用Docker,請使用具備root權限的用戶,或已被授予Docker使用權限的用戶進行后續操作。在Ubuntu系統中,通常可以通過在命令前加sudo來獲取root權限。在Windows系統中,您可能需要在管理員模式下運行cmd或PowerShell。

獨立Docker環境

Docker鏡像是包含了運行環境和應用程序的輕量級、可執行的軟件包,OpenHarmony的Docker鏡像托管在HuaweiCloud SWR上。開發者可以通過該鏡像在很大程度上簡化編譯前的環境配置。這一部分將引導您如何在Docker環境中配置和使用OpenHarmony,下文將介紹具體使用步驟。

搭建Docker環境(輕量系統和小型系統)

  1. 獲取Docker鏡像

    獲取小型系統鏡像的命令為:

    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2

    獲取輕量系統鏡像的命令為:

    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2

  2. 進入Docker構建環境

    在獲取了鏡像之后,您需要創建一個新的Docker容器,并進入該容器中。進入OpenHarmony源碼根目錄執行如下命令,從而進入Docker構建環境。

    • Ubuntu系統

      # 進入小型系統Docker構建環境
      docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2# 進入輕量系統Docker構建環境
      docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2

    • Windows系統(假設源碼目錄為D:\OpenHarmony):

      # 進入小型系統Docker構建環境
      docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2# 進入輕量系統Docker構建環境
      docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2

    icon-note.gif

    ? 說明:
    docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2?這個命令的含義是,創建并運行一個新的OpenHarmony的Docker容器,這個容器運行在交互模式下,并且將當前目錄映射到容器的/home/openharmony目錄。

編譯源碼(輕量系統和小型系統)

  1. 啟動編譯腳本

    執行docker run命令進入Docker容器后(此時位于/home/openharmony路徑下),您可以通過如下編譯腳本啟動輕量系統類設備(參考內存≥128KiB)和小型系統類設備(參考內存≥1MiB)的編譯。

    python3 build.py -p {product_name}@{company}

    其中,{product_name}為當前版本支持的平臺,{company}{product_name}對應的公司名。

    舉個例子,如果您要編譯的產品為hisilicon下的ipcamera_hispark_taurus,您可以輸入以下命令來啟動編譯:

    python3 build.py -p ipcamera_hispark_taurus@hisilicon

    同樣,如果您要編譯的產品是ohemu下的qemu_small_system_demo,那么您可以輸入以下命令來啟動編譯:

    python3 build.py -p qemu_small_system_demo@ohemu

  2. 查看編譯結果

    在編譯結束后,編譯所生成的文件都會被存放在out/{device_name}/目錄下,結果鏡像輸出在out/{device_name}/packages/phone/images/目錄下。

icon-note.gif

? 說明:
如需退出Docker,執行 exit命令即可。這個命令會停止當前的Docker容器,并返回到您的操作系統。

搭建Docker環境(標準系統)

  1. 獲取Docker鏡像

    在搭建標準系統的Docker環境前,我們也需要先獲取對應的Docker鏡像。具體的命令如下:

    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2

  2. 進入Docker構建環境

    與之前的步驟相同,我們需要創建一個新的Docker容器,并進入該容器中。進入openharmony源碼根目錄執行如下命令,從而進入Docker構建環境。

    • Ubuntu系統

      docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2

    • Windows系統(假設源碼目錄為D:\OpenHarmony

      docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2

編譯源碼(標準系統)

  1. 啟動編譯腳本

    執行docker run命令進入Docker容器后(此時位于/home/openharmony路徑下),您可以通過如下編譯腳本啟動標準系統類設備(參考內存≥128MB)的編譯。

    ./build.sh --product-name {product_name} --ccache

    {product_name}為當前版本支持的平臺。例如,您要編譯的產品是rk3568,那么您可以輸入以下命令來啟動編譯:

    ./build.sh --product-name rk3568 --ccache

  2. 查看編譯結果
    編譯所生成的文件都歸檔在out/{device_name}/目錄下,結果鏡像輸出在out/{device_name}/packages/phone/images/目錄下。

icon-note.gif

? 說明:
如需退出Docker,執行 exit命令即可。這個命令會停止當前的Docker容器,并返回到您的操作系統。

基于HPM的Docker環境

docker_dist是一個[HPM]系統中的模板組件,能夠幫助用戶快速初始化HPM工程,利用docker鏡像來快速編譯OpenHarmony發行版,在很大程度上簡化了編譯前的環境配置。開發者在配置好Ubuntu和[hpm-cli]開發環境后,可以通過以下步驟來使用我們提供的Docker環境。

搭建Docker環境

  1. 初始化安裝模板

    在任意工作目錄中執行以下命令

    hpm init -t @ohos/docker_dist

  2. 修改publishAs

    因為獲取到的是模板類型的包,要把包的類型改為需要的類型。 在當前目錄下打開bundle.json文件,把"publishAs"字段的值由"template"改為"distribution"。

獲取及編譯源碼

執行編譯。自動安裝docker只能在Ubuntu環境下執行,如果其他環境,需要用戶自行安裝docker,然后拉取鏡像,執行編譯。

  • 自動安裝docker(Ubuntu環境)
    以下命令可以幫助用戶自動安裝docker, 拉取鏡像,并且在容器中開始運行對應解決方案的拉取和編譯。

    方式一:

    命令后接參數指定解決方案,格式如下:

    hpm run docker solution={product}

    {product}為需編譯的解決方案,如:@ohos/hispark_taurus、@ohos/hispark_aries、@ohos/hispark_pegasus。

    方式二:

    設置環境變量來選擇解決方案,再執行編譯命令。

    1. 選擇解決方案。

      export solution={product}

      {product}為需編譯的解決方案,如:@ohos/hispark_taurus、@ohos/hispark_aries、@ohos/hispark_pegasus。

    2. 獲取源碼及執行編譯。

      hpm run docker

    以上兩種方式以@ohos/hispark_taurus為例,執行成功結果如下:

    ......
    ohos ipcamera_hispark_taurus build success!
    @ohos/hispark_taurus: distribution building completed.

搜狗高速瀏覽器截圖20240326151547.png

  • 自行安裝docker(非Ubuntu環境)
    自行安裝docker相關操作如下:

    # 拉取鏡像 
    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3# linux環境下的編譯 
    hpm run distWithDocker solution={product}
    # windows下的編譯,需要配置gitbash 
    hpm config set shellPath "gitbash路徑"
    hpm run distWithDocker solution={product}

鴻蒙語言有TS、ArkTS等語法,那么除了這些基礎知識之外,其核心技術點有那些呢?下面就用一張整理出的鴻蒙學習路線圖表示:

從上面的OpenHarmony技術梳理來看,鴻蒙的學習內容也是很多的。現在全網的鴻蒙學習文檔也是非常的少,下面推薦一些:完整內容可在頭像頁保存,或這qr23.cn/AKFP8k甲助力

內容包含:《鴻蒙NEXT星河版開發學習文檔》

  • ArkTS
  • 聲明式ArkUI
  • 多媒體
  • 通信問題
  • 系統移植
  • 系統裁剪
  • FW層的原理
  • 各種開發調試工具
  • 智能設備開發
  • 分布式開發等等。

這些就是對往后開發者的分享,希望大家多多點贊關注喔!

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

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

相關文章

其他編程語言中調用 Python 腳本,如何設置Python腳本的相對路徑

import os# 假設 script_directory 是你的腳本所在的目錄 script_directory os.path.dirname(os.path.abspath(__file__))# 使用 os.path.join 來構建相對路徑 relative_path_to_image os.path.join(script_directory, 合并/figure_pic2.png)# 現在你可以使用這個相對路徑來加…

uni-app+vue3 +uni.connectSocket 使用websocket

前言 最近在uni-appvue3websocket實現聊天功能,在使用websocket還是遇到很多問題 這次因為是app手機應用,就沒有使用websocket對象,使用的是uni-app的uni.connectSocket 為了方便測試這次用的是node.js一個簡單的dom,來聯調模擬…

Apache Flume Agent內部原理

Apache Flume Agent內部原理 Apache Flume 是一個可擴展的、分布式的日志收集、聚合和傳輸系統。在 Flume 中,Agent 是一個獨立的進程,負責接收、傳輸和處理數據。Agent 內部包含多個組件,每個組件都有不同的功能和責任。 1. Source&#xff…

5個 Elasticsearch 核心組件

Elasticsearch 是一個基于 Lucene 的搜索引擎,它提供了分布式、高可用、多租戶的能力。Elasticsearch 的核心組件包括節點(Node)、集群(Cluster)、索引(Index)、分片(Shard&#xff…

三下鄉社會實踐投稿攻略在這里

在當今信息爆炸的時代,如何讓自己的聲音被更多人聽到,成為許多人和企業所關心的問題。其中,向各大媒體網站投稿,成為了一種常見的宣傳方式。但是,如何投稿各大媒體網站?新聞媒體發文策略又有哪些呢&#xf…

Flutter Clipboard實現復制功能

Flutter內置了Clipboard 功能,可以幫助我們完成復制粘貼的功能,比如我們想把“hello flutter”復制到粘貼板,代碼如下: TextButton(onPressed: () async {await Clipboard.setData(ClipboardData(text: hello flutter)

基于SpringBoot設計模式之開端

文章目錄 前言引言開始 前言 為了更好的在項目中,能更加優雅的使用設計模式,比較針對性的解決我們的問題。我將在這個專欄詳細的描述23種設計模式,為了與時俱進,我打算通過springboot的形式將23種設計模式全部擼完! 引…

光耦推薦—高速風筒方案中用到哪些光耦型號

高速風筒是現代生活中常見的電器設備,廣泛應用于家庭、商業和工業領域;光耦是一種能夠將輸入信號轉換成輸出信號的元器件,其作用在于將電氣信號轉換成光信號,從而實現電路的隔離和保護;采用光耦可實現對風機轉速和溫度…

【管理咨詢寶藏99】離散制造智能工廠戰略規劃方案

本報告首發于公號“管理咨詢寶藏”,如需閱讀完整版報告內容,請查閱公號“管理咨詢寶藏”。 【管理咨詢寶藏99】離散制造智能工廠戰略規劃方案 【格式】PDF版本 【關鍵詞】智能制造、先進制造業轉型、數字化轉型 【核心觀點】 - 推進EHS、品質一致性、生…

【無標題】QCC 308x 518x 517x增加usb voice 32k采樣率

QCC 308x 518x 517x增加usb voice 32k采樣率 diff --git a/adk/src/domains/audio/kymera/kymera_usb_voice.c b/adk/src/domains/audio/kymera/kymera_usb_voice.c index 6dd82061..532c4ad8 100755 --- a/adk/src/domains/audio/kymera/kymera_usb_voice.c +++ b/adk/src/dom…

Failed to start tomcat.service: Unit is not loaded properly: Bad message 如何解決?

錯誤 “Failed to start tomcat.service: Unit is not loaded properly: Bad message” 通常意味著的 tomcat.service systemd 配置文件存在語法錯誤或配置不正確。為了解決這個問題,一步步檢查和修正這個服務文件。 1. 檢查 tomcat.service 文件 首先&#xff0c…

CSS文字描邊,文字間隔,div自定義形狀切割

clip-path: polygon( 0 0, 68% 0, 100% 32%, 100% 100%, 0 100% );//這里切割出來是少一角的正方形 letter-spacing: 1vw; //文字間隔 -webkit-text-stroke: 1px #fff; //文字描邊1px uniapp微信小程序頂部導航欄設置透明,下拉改變透明度 onP…

Docker部署RabbitMQ集群(單服務器多端口)

rabbitmq.conf在mq1、mq2、mq3下 ####文件內容 loopback_users.guest false listeners.tcp.default 5672 cluster_formation.peer_discovery_backend rabbit_peer_discovery_classic_config cluster_formation.classic_config.nodes.1 rabbitmq1 cluster_formation.classi…

SQL注入(sqli-labs第一關)

sqli-labs第一關 方法一:手工注入 來到第一關,圖上說我們需要一個數字的參數 于是我們先手工注入?id1 and 11 跟?id1 and 12發現頁面沒有報錯 每張截圖上面頁面中有select查詢語句,這是我在第一關的源碼中加上了echo "$sql ";…

SSM【Spring SpringMVC Mybatis】——Mybatis(二)

如果對一些基礎理論感興趣可以看這一期👇 SSM【Spring SpringMVC Mybatis】——Mybatis 目錄 1、Mybatis中參數傳遞問題 1.1 單個普通參數 1.2 多個普通參數 1.3 命名參數 1.4 POJO參數 1.5 Map參數 1.6 Collection|List|Array等參數 2、Mybatis參數傳遞【#與…

STL——stack容器【棧】

stack基本概念: 概念: 是一種先進后出的數據結構,它只有一個出口 因為只有一端可以調用,所以棧不支持遍歷操作 棧的操作: 棧中進入數據稱為:入棧(push) 棧中彈出數據稱為:出棧(pop) 生活中…

C#編程模式之享元模式

創作背景:各位朋友,我們繼續學習C#的編程模式,本文主要介紹享元模式。享元模式是一種結構型設計模式,它主要用于減少創建對象的數量,從而提高程序性能。它通過共享對象的方式來減少內存的使用,特別是系統中…

springCloud服務降級使用到的組件

服務降級在Spring Cloud中通常使用的組件包括斷路器(Circuit Breaker)和降級處理器(Fallback)。以下是它們的概念表述: 斷路器(Circuit Breaker):斷路器是一種設計模式,…

【多客陪玩】陪玩小程序源碼APP+小程序+公眾號開發 -源碼交付,線下可爆改家政,整理師等功能

簡述 隨著電競行業的快速發展,電競陪玩APP正在逐漸成為用戶在休閑娛樂時的首選。為了吸引用戶和提高用戶體驗,電競陪玩APP開發需要定制一些特色功能,并通過合適的盈利模式來獲得收益。本文將為您介紹電競陪玩APP開發需要定制的特色功能以及常…

M21121G-11

M21121專為當今要求苛刻的電信、數據通信和廣播視頻應用而設計,是一款低功耗、高速34x34交叉點交換機,具有輸入均衡和內置系統測試功能。在所有通道運行的情況下,該設備的功耗通常低至3.5瓦。PowerScaler?功能提供動態可擴展的開關設置&…