前言:docker环境以前没用过,华为云提供了docker的编译环境,拿来用。参考gitee上doc仓[url=https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/gettools-acquire.md#https://gitee.com/link?target=ht ... re-0000001050769927]docker编译环境[/url]说明文档。
一、Docker环境介绍(我用的独立Docker环境)
OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下:
独立Docker环境:适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。
基于HPM的Docker环境:适用于使用HPM工具进行发行版编译的场景。
表1 Docker镜像介绍
| 系统类型 | 运行平台 | Docker镜像仓库 | 标签 |
| 轻量和小型系统/标准系统(独立Docker环境) | Ubuntu/Windows | swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker | 1.0.0 |
| 轻量和小型系统(HPM Docker环境) | Ubuntu/Windows | swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker | 0.0.3 |
二、环境准备
进入docker engine官网,点击左侧在Ubuntu上安装docker引擎,如图1所示。
主要安装Install using the repository下的步骤进行安装docker引擎,步骤及命令如下:
- sudo apt-get update
- sudo apt-get install
- ca-certificates
- curl
- gnupg
- lsb-release
- sudo mkdir -p /etc/apt/keyrings
- curl -fsSL [url]https://download.docker.com/linux/ubuntu/gpg[/url] | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- echo
- "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] [url]https://download.docker.com/linux/ubuntu[/url]
- $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- sudo apt-get update
- sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- sudo docker run hello-world
This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits.意思是说这条命令会下载一个测试镜像并且在容器中运行,运行后会打印一个类似hello world的信息后就退出了。我运行如图2所示。
2.获取OpenHarmony源码,可参考获取源码 准备工作
- 注册码云gitee帐号。
- 注册码云SSH公钥,请参考码云帮助中心。
命令来生成 sshkey:
- ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"
注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_ed25519.pub 文件内容,获取到你的 public key。
- cat ~/.ssh/id_ed25519.pub
- # ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。
添加后,在终端(Terminal)中输入 - ssh -T [email]git@gitee.com[/email]
首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。
更新软件源:
通过以下命令安装:
- sudo apt-get install git git-lfs
- git config --global user.name "yourname"
- git config --global user.email "your-email-address"
- git config --global credential.helper store
- curl [url]https://gitee.com/oschina/repo/raw/fork_flow/repo-py3[/url] -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
- chmod a+x /usr/local/bin/repo
- pip3 install -i [url]https://repo.huaweicloud.com/repository/pypi/simple[/url] requests
第一步就有问题,bash: /usr/local/bin/repo: Permission denied没有权限,参考解决办法,进入root用户进行操作:
- su passwd root #修改添加root用户及密码
获取源码通过repo + ssh下载(需注册公钥,请参考码云帮助中心)。
- repo init -u [email]git@gitee.com[/email]:openharmony/manifest.git -b master --no-repo-verify[indent]repo sync -c[/indent]repo forall -c 'git lfs pull'
repo sync -c 和repo forall -c 'git lfs pull'两个命令一定要运行到没有错误,100%完成,否则后面会出现问题。有问题再次运行,因网络等各种原因会出现中断或者下载不全的问题,多次运行。
三、docker环境中编译
OpenHarmony的Docker镜像托管在HuaweiCloud SWR上。开发者可以通过该镜像在很大程度上简化编译前的环境配置。下文将介绍[url=https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/gettools-acquire.md#
https://gitee.com/link?target=ht ... re-0000001050769927]具体使用步骤[/url]
。
- docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
- 进入源码根目录执行如下命令,从而进入Docker构建环境。 ubuntu下执行:
- docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
图3 选择wifiiot_hispark_pegasus
结果如图4所示