OpenHarmony 2.0 Canary 操作系统编译初体验 原创 精华
尝试编译鸿蒙操作系统
概述
2021年6.2号,鸿蒙发布了2.0操作系统,并且对外公开了2.0操作系统的源代码,看了介绍后发现鸿蒙的分布式能力非常强大,本来想拿多台设备结合 “音视频SDK” 的功能开发多终端分布式的功能,比如a设备录视频,b设备做采集推流,或者声音在另一台设备播放,由于测试机还没有到货,先去编译一个鸿蒙系统玩玩吧,开源的系统是完全脱离安卓的独立鸿蒙系统,另外因为也是刚接触,还是会踩一些坑。
鸿蒙开源代码结构介绍
鸿蒙开源了2份源码
- 轻量级系统,小型系统
- 标准系统源码(2.0 Canary)
华为开发文档并没有对这2个系统做介绍,“2.0 Canary” 也是最近开源的,我理解 2.0 可能是给更大性能与内存的设备使用的,例如手机,电视等。小型系统应该给 iot 一些物联网设备使用,例如智能冰箱呀,智能电风扇等,好了废话不多说,一起来构建鸿蒙标准系统源码吧。
一.准备环境
设备要求:Ubuntu18
编译工具:https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/ (如果使用docker可以无视)
另外华为非常贴心,还提供了 docker 带编译环境的镜像,由于我用的笔记本是 mac os 必须得用 docker 了,另外强烈推荐 docker,快好,省心省力,否则你还得安装上面一堆工具。
docker 镜像地址:
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4
执行 “docker run -it xxx:tag /bin/bash” 运行并进入 docker。
二.下载源码
-
repo 介绍:
当初由于安卓源码非常大,为了方便管理各个仓库,用xml的方式记录了整个系统git库的数量,名称,路径等,便于管理,鸿蒙也用的 repo 管理各个仓库,还是挺香的,避免了各种子模块杂乱脏的问题。 -
repo 初始化
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
# 使用此命令初始化时,可能会因为网络慢的问题导致代码更新失败,可以尝试以下命令来初始化:
repo init -u https://gitee.com/openharmony/manifest.git -b ssh/master --no-repo-verify
- 同步源码
// -c 获取当前分支 -j 同步线程数默认为4
repo sync -c -j8
漫长的等待中… 以目前网速来看 需要一段时间。
- 更新二进制
repo forall -c 'git lfs pull'
居然失败了,看了下错误信息,华为给的这个 docker 镜像没有安装lfs,接下来手动装一下 git lfs吧,
执行 “apt-get install git-lfs” 解决。
- 执行预处理脚本
cd /
../scripts/prepare.sh
这个脚本是去下载构建工具建立构建环境的,比如 cmake gn 等一些构建工具,没有跑这个脚本编译会报各种错。
三. 开始构建
./build.sh --product-name Hi3516DV300
目前开源的这份源码里只有 Hi3516DV300 其他没找到
编译中…
编译完成
四. 最终产物
镜像输出在 out/ohos-arm-release/packages/phone/images/ 目录下
上图可以看到各个分区镜像已经编译出来了,如果有开发板的话可以直接烧录进去。
有机会入个开发板玩玩,网上搜可以直接购买。
五. 系统目录结构分析
从以上结构分析,跟linux与安卓目录结构大体类似,包括 vendor 分区,但是目前没有发现安卓相关的东西,也不能运行安卓apk 只能运行华为自家的 hap
可以看到系统自带的桌面,状态栏,设置等都是hap。
继续拆解hap
系统的 app 没有了 java 的身影,使用js作为首选语言开发,非常的轻量。
六.官网资料
- 官网文档:
官网源码拉取文档:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7.md#section69141039143518
官网构建教程:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md
七.关于个人畅想
鸿蒙不止是手机操作系统,他是一整套解决方案,解决安卓与ios不能解决的问题,大家一同期待。
下次测试机到货后,我想结合多终端与音视频来开发一些好玩创新的东西分享出来。
优秀的指导贴。