OpenHarmony南向统一编译的docker镜像来了

由于我自己的南向设备开发平台的需求,我将当前几个不同的 docker 镜像版本进行了整合,经过一段时间的攻关和验证,目前整合已完成,新版本的 Dockerfile 如下,这个不是公共需求,所以没有提交主干,存这里备个案,需要的伙伴自行使用。使用方法如下:

1。 在 Dockerfile 所在目录执行如下命令生成镜像

复制代码
docker build -t oh_compile:v1 . 

2。 使用 docker images 查看 oh_compile:v1 是否成功构建

Docker镜像简介

本文为OpenHarmony的Docker编译环境使用指导。

OpenHarmony的Docker镜像托管在HUAWEI Cloud SWR上,开发者可以通过该镜像在很大程度上简化编译前的环境配置。 目前容器化构建选项支持情况如下:

Docker镜像仓库 标签 说明
swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker 1.0.0 已经预安装OpenHarmony版本的编译环境。

使用方式及步骤

开发者在下载好源码后,可以通过以下步骤来使用我们提供的Docker环境。详情请参见Docker编译环境

  1. 获取Docker镜像

    复制代码
      docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
  2. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境

    复制代码
      docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
  3. 通过如下命令启动不同平台的编译

    复制代码
      hb set #在显示的页面中通过键盘上下键选择需要编译的平台,通过回车确定选择。
      hb build -f #执行编译。

本次整合后的完整 Dockerfile 如下,我额外调整了一下 WORKDIR 为 /root, 你们可以恢复成/home/openharmony

复制代码
FROM ubuntu:20.04

WORKDIR /root


ARG DEBIAN_FRONTEND=noninteractive

RUN TZ=Asia/Shanghai && sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list  \
    && sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list  \
    && apt-get update -y  \
    && apt-get install -y locales default-jre default-jdk libelf-dev bc rsync mtools dosfstools \
    wget curl ssh vim ccache libxi-dev libxrandr-dev libxcursor-dev libxinerama-dev libpixman-1-dev \
    qemu gcc-arm-none-eabi xsltproc lib32z1-dev libgl1-mesa-dev libx11-dev libxml2-dev kmod \
    libssl-dev openssl scons python3.8 mtd-utils binutils libglib2.0-dev genext2fs apt-utils gnupg \
    zlib1g-dev m4 u-boot-tools build-essential unzip make libc6-dev-i386 x11proto-core-dev g++ \
    libncurses5 libtinfo5 git-lfs gcc cpio perl ruby flex bison python3-pip zip git gperf \
    doxygen liblz4-tool  python3.8-distutils libffi-dev zlib* e2fsprogs device-tree-compiler \
    git-core libdwarf-dev lib32ncurses5-dev gnutls-bin gcc-arm-linux-gnueabi  \
    binutils-dev grsync xxd jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils \
    quota ppp libtinfo-dev libncurses5-dev libncursesw5 libstdc++6 \
    && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc-arm-none-eabi/10.3/linux/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 \
    && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar \
    && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz \
    && wget -P /home/tools https://mirrors.huaweicloud.com/nodejs/v14.19.1/node-v14.19.1-linux-x64.tar.xz \
    && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.10.1/linux/ninja-linux-x86-1.10.1.tar.gz  \
    && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gn/2021/linux/gn-linux-x86-2021.tar.gz  \
    && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/clang/12.0.1-36cd05/linux/clang_linux-x86_64-36cd05-20221030.tar.bz2  \
    && wget -P /home/tools https://hm-verify.obs.cn-north-4.myhuaweicloud.com/qemu-5.2.0.tar.xz \
    && locale-gen "en_US.UTF-8"  \
    && rm -rf /bin/sh /usr/bin/python /usr/bin/python3  \
    && mkdir -p /home/tools/gn  \
    && mkdir -p /home/tools/ninja  \
    && ln -s /bin/bash /bin/sh  \
    && ln -s /usr/bin/python3.8 /usr/bin/python3  \
    && ln -s /usr/bin/python3.8 /usr/bin/python \
    && pip3 install --trusted-host https://repo.huaweicloud.com \
    -i https://repo.huaweicloud.com/repository/pypi/simple \
    pycryptodome ecdsa redis kconfiglib setuptools requests ohos-build \
    pymongo  pyyaml prompt_toolkit==1.0.14 json2html yagmail python-jenkins  \
    && tar -xvf /home/tools/hc-gen-0.65-linux.tar -C /home/tools \
    && tar -xvf /home/tools/gcc_riscv32-linux-7.3.0.tar.gz -C /home/tools \
    && tar -xvf /home/tools/clang_linux-x86_64-36cd05-20221030.tar.bz2 -C /home/tools  \
    && tar -xvf /home/tools/ninja-linux-x86-1.10.1.tar.gz -C /home/tools/ninja  \
    && tar -xvf /home/tools/gn-linux-x86-2021.tar.gz -C /home/tools/gn  \
    && tar -xJf /home/tools/node-v14.19.1-linux-x64.tar.xz -C /home/tools  \
    && tar -jxvf /home/tools/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /home/tools \
    && tar -xJf /home/tools/qemu-5.2.0.tar.xz -C /home/tools  \
    && cp /home/tools/node-v14.19.1-linux-x64/bin/node /usr/local/bin  \
    && ln -s /home/tools/node-v14.19.1-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm  \
    && ln -s /home/tools/node-v14.19.1-linux-x64/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx  \
    && sed -i '$aexport PATH=/home/tools/hc-gen:$PATH' /root/.bashrc  \
    && sed -i '$aexport PATH=/home/tools/gcc_riscv32/bin:$PATH' /root/.bashrc \
    && sed -i '$aexport PATH=/home/tools/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH' /root/.bashrc \
    && sed -i '$aexport PATH=/home/tools/clang_linux-x86_64-36cd05-20221030/bin:$PATH' /root/.bashrc \
    && sed -i '$aexport PATH=/home/tools/ninja:$PATH' /root/.bashrc  \
    && sed -i '$aexport PATH=/home/tools/gn:$PATH' /root/.bashrc  \
    && sed -i '$aexport PATH=/home/tools/node-v14.19.1-linux-x64/bin:$PATH' /root/.bashrc  \
    && sed -i '$aexport PATH=/root/.local/bin:$PATH' /root/.bashrc \
    && export PATH=/home/tools/hc-gen:$PATH  \
    && export PATH=/home/tools/gcc_riscv32/bin:$PATH \
    && export PATH=/home/tools/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH \
    && export PATH=/home/tools/clang_linux-x86_64-36cd05-20221030/bin:$PATH  \
    && export PATH=/home/tools/ninja:$PATH  \
    && export PATH=/home/tools/gn:$PATH  \
    && export PATH=/home/tools/node-v14.19.1-linux-x64/bin:$PATH  \
    && export PATH=/root/.local/bin:$PATH  \
    && cd /home/tools/qemu-5.2.0  \
    && mkdir build  && cd build  \
    && ../configure --target-list=arm-softmmu  \
    && make -j  \
    && make install \
    && cd /root     \
    && rm -rf /home/tools/*.xz  \
    && rm -rf /home/tools/*.gz  \
    && rm -rf /home/tools/*.tar  \
    && rm -rf /home/tools/*.bz2 \
    && rm -rf /home/tools/qemu-5.2.0 \
    && npm install -g @ohos/hpm-cli --registry https://mirrors.huaweicloud.com/repository/npm/ \
    && pip3 install ohos-build

ENV LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 TZ=Asia/Shanghai


CMD ["/bin/bash"]

为了能让大家更好的学习鸿蒙(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.鸿蒙南向开发方向

相关推荐
天远数科6 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
Akiyama_Mio-Kon6 小时前
2026 最新:Dify 本地 Docker 部署完整教程(Windows + Git Bash)
windows·git·docker
骇客野人6 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
qiuhaipeng16 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
wxwx_bscxy3227 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步8 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
野熊佩骑9 小时前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes
渡我白衣9 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
电商API_180079052479 小时前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
zzzll11119 小时前
深度剖析:HashMap 并发死循环与 ConcurrentHashMap 两代演进全解
java·开发语言