OpenHarmony南向开发-Docker编译环境

news2024/11/26 8:49:59

Docker环境介绍

OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下:

  • 独立Docker环境:适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。

  • 基于HPM的Docker环境:适用于使用HPM工具进行发行版编译的场景。

表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指导。
  1. 获取OpenHarmony源码

    说明:
    HPM Docker环境无需单独获取源码。

  2. 获取使用权限

    为了能够使用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
  1. 进入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

说明:
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
  1. 查看编译结果

在编译结束后,编译所生成的文件都会被存放在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/目录下。

说明:

如需退出Docker,执行exit命令即可。这个命令会停止当前的Docker容器,并返回到您的操作系统。

搭建Docker环境(标准系统)

  1. 获取Docker镜像

在搭建标准系统的Docker环境前,我们也需要先获取对应的Docker镜像。具体的命令如下:

   docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2
  1. 进入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
  1. 查看编译结果\

编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/目录下。

说明:

如需退出Docker,执行exit命令即可。这个命令会停止当前的Docker容器,并返回到您的操作系统。

基于HPM的Docker环境

docker_dist是一个HPM系统中的模板组件,能够帮助用户快速初始化HPM工程,利用docker镜像来快速编译OpenHarmony发行版,在很大程度上简化了编译前的环境配置。开发者在配置好Ubuntu和hpm-cli开发环境后,可以通过以下步骤来使用我们提供的Docker环境。

搭建Docker环境

  1. 初始化安装模板

    在任意工作目录中执行以下命令

   hpm init -t @ohos/docker_dist
  1. 修改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。

  1. 获取源码及执行编译。
      hpm run docker

以上两种方式以@ohos/hispark_taurus为例,执行成功结果如下:

......
ohos ipcamera_hispark_taurus build success!
@ohos/hispark_taurus: distribution building completed.
  • 自行安装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}
    

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

书客、月影、欧普护眼大路灯哪款好?三款落地灯真实对比测评

作为在照明电器领域资深的评测员,我对市面上各种新颖的照明家电有着深入的探索和研究。大路灯能够提供舒适健康的照明光线,目前正受到许多用眼人群的广泛欢迎。,当然随着大路灯的普及,市场中也充斥着一些低劣的大路灯产品&#xf…

JetBrains WebStorm 2024.1 发布 - 最智能的 JavaScript IDE

JetBrains WebStorm 2024.1 发布 - 最智能的 JavaScript IDE 请访问原文链接:JetBrains WebStorm 2024.1 (macOS, Linux, Windows) - 最智能的 JavaScript IDE,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org JetBr…

BI数据分析软件:行业趋势与功能特点剖析

随着数据量的爆炸性增长,企业对于数据的需求也日益迫切。BI数据分析软件作为帮助企业实现数据驱动决策的关键工具,在当前的商业环境中扮演着不可或缺的角色。本文将从行业趋势、功能特点以及适用场景等方面,深入剖析BI数据分析软件&#xff0…

Oracle体系结构:聊聊session与process

提前声明:本篇文章讨论的是专用服务器模式下的session和process;不讨论共享服务器模式,因为共享服务器现在真的应用的很少了,独占才是主流。共享服务器往往都是用在资源紧张的场合 ,而且独占服务器模式有独立的PGA&…

spring04:注解使用

spring04:注解使用 文章目录 spring04:注解使用前言:一、 Autowired Qualifier和 Resource 和 nullable1. Autowired 2. Resource :使用在类的属性上面(和Autowired类似)3. nullable 二、 Component 和 Re…

bugku-web-你从哪里来

这里就这一句话提示,问我是不是谷歌的? 用谷歌浏览器访问 没看见什么变化 抓包查看 没有变化 这时我想到爬虫中的反爬策略中有一种,判断请求的当前界面来判断用户的起始判断位置 这时抓取报文 GET / HTTP/1.1 Host: 114.67.175.224:1516…

C++初阶:反向迭代器

reverse_iterator的封装实现 Reverse_Iterator.h namespace xx {// 所有容器的反向迭代器// 迭代器适配器template<class Iterator, class Ref, class Ptr>struct Reverse_iterator{Iterator _it;typedef Reverse_iterator<Iterator, Ref, Ptr> Self;Reverse_iter…

MySQL索引优化方法(1/16)

索引优化方法 基本概述 MySQL中有几种索引&#xff1a; 主键索引&#xff08;Primary Key Index&#xff09;&#xff1a;每个表都有一个主键&#xff0c;主键索引是自动创建的唯一索引。它通常是聚簇索引&#xff08;在索引树的叶子结点中存储的是需要查找的数据&#xff0…

C++的并发世界(九)——条件变量

0.绪论——单例模型 单例设计模式是一种常见的设计模式&#xff0c;用于确保某个类只能创建一个实例。由于单例实例是全局唯一的。因此在多线程环境中使用单例模式时,需要考虑线程安全的问题。 1.消费者设计模式 2.condition_variable使用步骤 ①准备好信号量 std::conditio…

基于Spring Boot的旅游管理系统设计与实现

基于Spring Boot的旅游管理系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 旅游方案&#xff0c;用户通过旅游方案可以查看方案编号…

护眼台灯对眼睛有危害吗?比较好的台灯推荐

护眼台灯对眼睛有危害吗&#xff1f;我相信这应该是很多家长所关心的一件事&#xff0c;毕竟现在的孩子近视率实在太高了&#xff0c;而台灯作为夜晚学习不可或缺的一盏照明灯具&#xff0c;光源品质的好坏对眼睛的影响是非常大的&#xff01; 尤其是在这鱼龙混杂的台灯市场上…

Linux:Redis7.2.4的简单在线部署(1)

注意&#xff1a;我写的这个文章是以最快速的办法去搭建一个redis的基础环境&#xff0c;作用是为了做实验简单的练习&#xff0c;如果你想搭建一个相对稳定的redis去使用&#xff0c;可以看我下面这个文章 Linux&#xff1a;Redis7.2.4的源码包部署&#xff08;2&#xff09;-…

02—js数据类型及相互转换

一、数据类型 js把数据分为两类 基本类型&#xff1a;string number boolean undefined null 引用类型&#xff1a;object(fuction(可以执行) array&#xff08;数值下标&#xff0c;内部数据是有序的&#xff09;) 1.Number:数值类型&#xff0c;整数和小数 &#xff08…

【C#】 删除首/尾部字符

代码 static void Main(string[] args){string str "123abc";string strdelete "abc";string str1 str.Trim(1);string strc str1.Trim(c);string str11 str1.TrimStart(1);string strcc str1.TrimEnd(c);string strabc str.Trim(strdelete.ToCharA…

mysql8主从配置报错Authentication plugin ‘caching_sha2_password‘ reported error

错误信息&#xff1a; Error connecting to source slave192.168.2.177:3306. This was attempt 2/86400, with a delay of 60 seconds between attempts. Message: Authentication plugin caching_sha2_password reported error: Authentication requires secure connection.…

连续6年!九州未来获评2024中国边缘计算企业20强

4月9日&#xff0c;由国内中立边缘计算领域研究平台——边缘计算社区策划发起的“2024中国边缘计算企业20强”榜单正式揭晓&#xff0c;九州未来凭借在边缘计算领域的深厚积累以及创新实践&#xff0c;从众多参评企业中脱颖而出&#xff0c;连续6年入选中国边缘计算企业20强&am…

RabbitMQ消息模型之Fanout消息模型

Fanout消息模型 * 广播模型&#xff1a;* 一个交换机绑定多个队列* 每个队列都有一个消费者* 每个消费者消费自己队列中的消息&#xff0c;每个队列的信息是一样的生产者 package com.example.demo02.mq.fanout;import com.example.demo02.mq.util.ConnectionUtils; impor…

Java区域基层卫生云联his系统源码 医院信息管理系统源码

基于云计算的医疗卫生信息系统(cloud-based healthcare informationsystem&#xff0c;简称“云 HIS”)是基于云计算技术&#xff0c;将医院信息系统、电子病历系统、实验室信息系统、公共卫生等系统横向集成的系统&#xff0c;为医疗机构信息化建设提供标准化、信息化、协同化…

Java中的TCP通信

TCP通信 TCP通信Socket客户端ServerSocket服务端 例子&#xff1a;一发一收例子&#xff1a;多发多收异常捕获 例子&#xff1a;服务器与多个客户端同时通信多客户端通信架构服务端代码ServerReaderThread 服务端读数据线程 TCP通信 特点&#xff1a;面向连接、可靠通信 通信双…

Git可视化工具 - 推荐

概述 Git版本管理工具是我们日常开发中常用的工具&#xff0c;熟练使用它可以提高我们的工作效率。 当然老司机基本使用命令行的方式进行操作&#xff0c;新手可借助可视化工具来进行过渡&#xff0c;命令行与可视化工具结合使用来加深对Git的熟悉程度。 下面推荐两个较受欢迎…