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

相关推荐
程序员清风几秒前
网易三面:Java中默认使用的垃圾回收器及特点分版本说说?
java·后端·面试
这周也會开心9 分钟前
本地部署javaweb项目到Tomcat的三种方法
java·tomcat
小蒜学长18 分钟前
jsp基于JavaWeb的原色蛋糕商城的设计与实现(代码+数据库+LW)
java·开发语言·数据库·spring boot·后端
摇滚侠24 分钟前
Spring Boot中使用线程池来优化程序执行的效率!笔记01
java·spring boot·多线程
毕设源码-江学长31 分钟前
计算机毕业设计java共享茶室预约微信小程序 微信小程序中的共享茶室预订平台 茶室共享预约小程序的设计与开发
java·微信小程序·课程设计
卡布奇诺-海晨1 小时前
2025版本的idea解决Git冲突
java·git·intellij-idea
Flash Dog1 小时前
【MyBatis】——执行过程
java·mybatis
Li_7695321 小时前
2025.2.X 版本 IDEA maven 打包乱码问题的解决
java·maven·intellij-idea
DKPT2 小时前
JVM栈溢出和堆溢出哪个先满?
java·开发语言·jvm·笔记·学习
m0_475064502 小时前
jvm双亲委派的含义
java·jvm