鸿蒙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.mzph.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™功能提供动态可扩展的开关设置&…