技术 807 阅读 1 评论

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

    因为有着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

      1. 昭君
        2021-07-19 23:46

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