鸿蒙os初步研究,从源码编译系统镜像

技术 · 2021-07-19

因为有着openwrt开发的一些经验,论坛不少老哥都想刷鸿蒙系统,所以无聊搞着玩。

然而目前OpenHarmony OS 2.0 的源码仅支持Hi3516DV300的开发板,所以其他手机还是省省吧,还有需要一些烧录工具。

1.JPG

家中常备各种烧录工具,杜邦线,夹子,卷到一坨了,用的时候在分。

827.jpg

开发板已从朋友那里借到,几天后发过来

在编译OpenHarmony OS 2.0之前,我们需要配置下基础环境,这里可以在基于linux的宿主机上实现,也可以用wsl或者docker
我更推荐使用docker,毕竟宿主机上安装的软件太多,linux下很多软件依赖需要解决,还是docker用起来方便。

这里我们需要拉取一个linux镜像,这里我选择ubuntu20.04,使用docker pull ubuntu:xenial-20210611拉取最新版。

01.JPG

docker run xxx运行容器

使用docker ps -a查看运行的容器,看到ubuntu已经在运行啦,找到容器的id。

02.JPG

使用 docker exec -it 容器id /bin/bash 进入容器

03.JPG

参考鸿蒙开发论坛,要把shell改为bash
https://harmonyos.51cto.com/posts/2749

现在需要安装些依赖工具:

04.JPG

apt-get update
apt-get install binutils git-core git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 python2.7 python3-pip

按下y,安装这些包。

05.JPG

现在我们就准备克隆源码了

配置git,参考:https://www.jianshu.com/p/6e1de95828a8

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global credential.helper store

安装repo
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo

06.JPG

chmod 777 repo
sudo mv repo /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

创建一个文件夹OpenHarmonyOs

mkdir OpenHarmonyOs && cd OpenHarmonyOs
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
这里会花很长时间下载

266.JPG

466.JPG

repo forall -c 'git lfs pull'

776.JPG

下载编译工具:

curl https://gitee.com/landwind/script-tools/raw/master/Shell/OpenHarmony/OpenHarmony_2.0_canary_prebuilts_download.sh >./prebuilts.sh

886.JPG

执行:./prebuilts.sh

如果提示无权限,chmod +x 走你

996.JPG

提示缺少wget ,apt-get install wget,缺什么补什么

1006.JPG

1116.JPG

1216.JPG

配置nodejs

mkdir -p prebuilts/build-tools/common/nodejs
cd prebuilts/build-tools/common/nodejs
wget --no-check-certificate https://nodejs.org/download/release/v12.18.4/node-v12.18.4-linux-x64.tar.gz
tar -zxvf node-v12.18.4-linux-x64.tar.gz
返回到上一次的工作目录 cd -

后面就不附截图了,就复制粘贴我的代码就行。

9666.JPG

如果是龟速,那么一般是移动的宽带 笑。

cd third_party/jsframework
export PATH=../../prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin:${PATH}
npm install
cd -

mkdir -p prebuilts/build-tools/common/js-framework
cp -rp third_party/jsframework/node_modules prebuilts/build-tools/common/js-framework/

安装hc-gen :

wget https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
tar -xvf hc-gen-0.65-linux.tar -C ~/
使用vi修改环境变量
apt-get install vim
vim ~/.bashrc
加入:export PATH=~/hc-gen:$PATH
退出vi
source ~/.bashrc

编译系统:

执行build.sh即可,需要注意的是目前只支持Hi3516DV300,所以也要加上参数

./build.sh --product-name Hi3516DV300 --ccache

07.JPG

如果不出错就会构建成功,然后烧录到板子中即可,如果出错就根据出错代码下载依赖包。

基于官方教程弄的hello world
输出:

999.jpg

96666.JPG

有老哥说,咱们搞这么久就为了输出helloworld??

不要小瞧这个hello world,这是一切的开端,命运之轮开始转动,传说从这里开始。。。。

149.jpg

214.jpg

不过我以前挺喜欢java,念大学的时候时不时就借java相关书籍,python也挺喜欢,最近又在捣腾perl,我汉化过的lan就是基于perl的。

附录:

其实Openharmony 和 HarmonyOS(鸿蒙操作系统) 是两个完全不同的概念。华为把 HarmonyOS 中基础功能提取出来,打包成功一个项目叫做“Openharmony” ,把 Openharmony 捐献给了原子开源基金会。
  
而华为自己的商业版本HarmonyOS 2 并没有捐出,这个商业版本也是基于开源项目 OpenHarmony 2.0 开发的,兼容了 AOSP( Android 10.0.0_r2),增加了 HMS 。

166.png

看了下有老哥在gitee 上咨询鸿蒙系统的软件工程师,得到的回复是Harmony 2.0 的 AOSP 的预编译文件来自 Android 10.0.0_r2 版本,版本比我们手机op9系列使用的安卓11要低,所以没必要移植鸿蒙到我们的手机,即使要移植得多个厂商配合提供驱动呢。

6321.jpg

  1. 昭君 (作者)  2021-07-19

    参考着大佬的教程弄着玩的,如有不足请指正

主题 Jasmine .