OpenHarmony南向开发-Docker编译环境

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.鸿蒙南向开发方向

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宏定义(超级详细)

宏定义在编程里面也有十分重要的作用,下面我就来详细介绍一下: 宏的特点 宏主要特点是它在预编译的时候就会被数字或者代码字符替换掉。这样可以将一些重复的变量替换掉,方便我们进行修改,只需要修改宏定义就行了。 宏的几大类…

《一》Qt的概述

1.1 什么是Qt Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 1.2 Qt的发展史 1991年 Qt最早由芬兰奇趣科技开发 1996年 进入商业领域&#x…

2024年mathorcup(妈妈杯)数学建模C题思路-物流网络分拣中心货量预测及人员排班

# 1 赛题 C 题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成,图 ’ 是一个简化的物流 网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同 流向进行分拣并发往下一个场地,最终使包裹…

matlab conv2

MATLAB卷积conv、conv2、convn详解-CSDN博客

全面学习SpringCloud框架指南

要深入学习Spring Cloud框架,你需要系统地掌握其核心组件和概念,并了解如何在实际项目中应用这些知识。以下是一些关键的学习点和相应的学习内容: 一共分为10个模块包括: 1、微服务架构基础: 理解微服务架构的概念和优势。 学习单体架构向微服务架构演进的过程。 掌握…

IE浏览器清理缓存工具

有些项目可能因为浏览器缓存导致使用异常,比如登陆异常。这里提供清除浏览器痕迹的工具,以IE浏览器为例,痕迹的默认存放位置为: C:\Users\Ro\AppData\Local\Microsoft\Windows\Temporary Internet Files 新建bat或者cmd批处理文件…

【LeetCode热题100】189. 轮转数组(数组)

一.题目要求 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 二.题目难度 中等 三.输入样例 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: …

【学习】企业做等保测评有何意义

等保测评是指对信息系统的安全性进行评估和保障的一种标准,其全称为“信息安全等级保护测评”。随着信息技术的不断发展和应用,信息安全问题越来越受到人们的关注。为了保障信息系统的安全,国家制定了一系列的安全等级保护标准,而…

【优选算法专栏】专题四:前缀和(二)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

gitee上传出现git did not exit cleanly (exit code 1)的错误

在最后push的时候出现下面的结果: 出现这个错误的原因有好多种,目前介绍博主遇到的两种: 在第一次进行push操作的时候,需要输入用户名和密码,如果输入错误,则最后可能会出现上述报错 解决方法:…

智慧InSAR专题———模拟数据实现现实场景异常形变点识别(项目讲解)

续上篇 文章目录 (一项技术的复现,我们应该有打破砂锅问到底的态度,我找到了这篇文章的一些灵感来源,包括算法和编程以及专业知识等,对我而言也是受益匪浅)1. 数据准备1.1 A deep learning approach to de…

基于STM32F103单片机的时间同步项目

一、前言 本项目为前一个时间同步项目的更迭版本,由于之前的G031开发板没有外部晶振,从机守时能力几乎没有,5秒以上不同步从机时间就开始飞了。在考虑成本选型后,选择了带有外部有缘晶振的STM32F103C8T6最小单片机,来作为本次项目的开发平台。 G031时间同步链接: 基于ST…

mui和uniapp跳转外部链接

Hbuilder开发的app&#xff0c;会涉及到跳转H5页面 mui <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, maximum-scale1.0, user-scalableno" /><link …

windows下安装yolov8环境(详细图文教程)

目录 一&#xff1a;前言 二&#xff1a;安装yolov8 一&#xff1a;前言 最近看了 YOLO 的发展史&#xff0c;发现在机器视觉领域的应用非常广泛&#xff0c;f刚好最近一直在做机器视觉的工作&#xff0c;特此记录下搭建yolov的环境。我们使用的版本是yolov8的就用这个作为演…

大小端、结构体对齐

目录 王道ppt总结&#xff1a;​编辑 个人理解&#xff1a; 相关文章&#xff1a; 王道ppt总结&#xff1a; 个人理解&#xff1a; 机器的读取数据的顺序&#xff1a;都是从低地址开始。 为什么&#xff1f;假如进行一个加法计算&#xff0c;肯定是从最低位开始&#xff0c…

spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

背景 默认的Spring Eureka服务器&#xff0c;服务提供者和服务调用者配置不够灵敏&#xff0c;总是服务提供者在停掉很久之后&#xff0c;服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了&#xff0c;但是服务调用方很长时间还是调用不到&#xff0c;发现不了这…

apline安装redisjson

安装前的说明 由于redis现在下载redisjson很繁琐&#xff0c;还可能需要科学上网&#xff0c;只能自己编译了 系统是apline&#xff0c; 为什么是这个系统&#xff1f;原因是docker安装redis是用了这个系统 下载地址,按照实际情况选择&#xff0c;如果不行就老老实实自己编译吧…

ESP8266开发

1esp8266Wifi连接,通过手机控制点灯 1.下载Arduino,编程 2.下载blinker手机APP。 3.下载blinker库。https://arduino.me/s/blinker-arduino?aid=711 4.打开编程工具 Arduino,加载blinker库 5. 打开库里面的例程,基于例程开发。 blinker-library-0.3.10230510\blinker-…

数据同步工具datax配置与示例

文章目录 前言一、部署步骤1、jdk环境2、python环境步骤一&#xff1a;安装方式一&#xff1a;官网下载安装包方式二&#xff1a;brew命令安装 步骤二&#xff1a;配置环境变量步骤三&#xff1a;验证 3、maven环境&#xff08;可选&#xff09; 二、下载安装datax1、下载datax…

C语言完结篇(17)

编译和链接 1. 翻译环境和运⾏环境 2. 翻译环境&#xff1a;预编译编译汇编链接 我们知道计算机能够执行的是二进制的指令 而我们的C语言代码都是文本信息 所以我们需要让C语言代码转变为二进制的指令&#xff08;这是需要编译器来进行处理的&#xff09; 翻译环境和运⾏…