0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

初次体验OpenHarmony2.0编译 棒极了!

OpenHarmony技术社区 来源:鸿蒙技术社区 作者:即构李航 2021-06-30 09:33 次阅读

2021 年 6 月 2 号,鸿蒙发布了 2.0 操作系统,并且对外公开了 2.0 操作系统的源代码。

看了介绍后发现鸿蒙的分布式能力非常强大,本来想拿多台设备结合 “音视频 SDK” 的功能开发多终端分布式的功能,比如 a 设备录视频,b 设备做采集推流,或者声音在另一台设备播放。

由于测试机还没有到货,先去编译一个鸿蒙系统玩玩吧,开源的系统是完全脱离安卓的独立鸿蒙系统,另外因为也是刚接触,还是会踩一些坑。

鸿蒙开源代码结构介绍

鸿蒙开源了两份源码:

轻量级系统,小型系统

标准系统源码(2.0 Canary)

华为开发文档并没有对这两个系统做介绍,“2.0 Canary” 也是最近开源的,我理解 2.0 可能是给更大性能与内存的设备使用的,例如手机,电视等。

小型系统应该给 IoT 一些物联网设备使用,例如智能冰箱呀,智能电风扇等,好了废话不多说,一起来构建鸿蒙标准系统源码吧。

01

准备环境

设备要求:Ubuntu18

编译工具:(如果使用 docker 可以无视)

https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/

另外华为非常贴心,还提供了 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。

02

下载源码

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” 解决。

a2fddfbc-d91a-11eb-9e57-12bb97331649.jpg

执行预处理脚本:

cd /

。。/scripts/prepare.sh

这个脚本是去下载构建工具建立构建环境的,比如 cmake gn 等一些构建工具,没有跑这个脚本编译会报各种错。

03

开始构建

。/build.sh --product-name Hi3516DV300

目前开源的这份源码里只有 Hi3516DV300,其他没找到:

a2fddfbc-d91a-11eb-9e57-12bb97331649.jpg

编译中…

a335037a-d91a-11eb-9e57-12bb97331649.png

编译完成:

a34454ba-d91a-11eb-9e57-12bb97331649.png

04

最终产物

镜像输出在 out/ohos-arm-release/packages/phone/images/ 目录下:

上图可以看到各个分区镜像已经编译出来了,如果有开发板的话可以直接烧录进去。有机会入个开发板玩玩,网上搜可以直接购买。

05

系统目录结构分析

a36ed320-d91a-11eb-9e57-12bb97331649.png

从以上结构分析,跟 Linux 与安卓目录结构大体类似,包括 vendor 分区,但是目前没有发现安卓相关的东西,也不能运行安卓 apk 只能运行华为自家的 hap。

可以看到系统自带的桌面,状态栏,设置等都是 hap。

继续拆解 hap:

a4521ae0-d91a-11eb-9e57-12bb97331649.png

系统的 App 没有了 Java 的身影,使用 JS 作为首选语言开发,非常的轻量。

06

官网资料

官网源码拉取文档:

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

07

关于个人畅想

鸿蒙不止是手机操作系统,他是一整套解决方案,解决安卓与 iOS 不能解决的问题,大家一同期待。

下次测试机到货后,我想结合多终端与音视频来开发一些好玩创新的东西分享出来。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 安卓
    +关注

    关注

    5

    文章

    2116

    浏览量

    56950
  • Docker
    +关注

    关注

    0

    文章

    452

    浏览量

    11791
  • 开源代码
    +关注

    关注

    0

    文章

    33

    浏览量

    2915
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2633

    浏览量

    66120
  • OpenHarmony
    +关注

    关注

    25

    文章

    3629

    浏览量

    16031

原文标题:OpenHarmony2.0编译初体验!

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    openharmony移植AT32F407编译时错误

    openharmony上移植AT32F407,hb build后出现链接错误 [OHOS ERROR] /home/sven/openharmony/env_setup
    发表于 08-18 17:04

    鸿蒙OpenHarmony南向/北向快速开发教程-迅为RK3568开发板

    源码 P3_初次编译OpenHarmony源码 P4_OpenHarmony镜像简介以及烧写工具配置 P5_优化开发流程-搭建windows开发环境 P6_优化开发流程-搭建ubunt
    发表于 07-23 10:44

    鸿蒙OpenHarmony【轻量系统 编译】 (基于Hi3861开发板)

    OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码]。
    的头像 发表于 05-14 17:53 1122次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>【轻量系统 <b class='flag-5'>编译</b>】 (基于Hi3861开发板)

    鸿蒙OpenHarmony开发:【编译构建指导】

    OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能
    的头像 发表于 05-13 09:31 1516次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>开发:【<b class='flag-5'>编译</b>构建指导】

    鸿蒙OpenHarmony:【常见编译问题和解决方法】

    常见编译问题和解决方法
    的头像 发表于 05-11 16:09 1832次阅读

    鸿蒙OpenHarmony技术:【Docker编译环境】

    OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。
    的头像 发表于 05-11 09:47 1356次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>技术:【Docker<b class='flag-5'>编译</b>环境】

    鸿蒙OpenHarmony【小型系统 编译】(基于Hi3516开发板)

    OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码]。
    的头像 发表于 05-10 15:59 624次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>【小型系统 <b class='flag-5'>编译</b>】(基于Hi3516开发板)

    鸿蒙OpenHarmony【标准系统 编译】(基于RK3568开发板)

    OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码]。
    的头像 发表于 05-08 17:37 843次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>【标准系统 <b class='flag-5'>编译</b>】(基于RK3568开发板)

    鸿蒙OpenHarmony:【 编译异常处理】

    Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt_pkg”
    的头像 发表于 04-30 17:37 1059次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>:【 <b class='flag-5'>编译</b>异常处理】

    鸿蒙OpenHarmony【搭建Ubuntu环境】

    在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不
    的头像 发表于 04-19 16:53 1219次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>【搭建Ubuntu环境】

    OpenHarmony开发学习:【源码下载和编译

    本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(`Hi3516`,`Hi3518`和`Hi3861`)的编译环境,以及如何将源码编译为三个目标平台的二进制文件。
    的头像 发表于 04-14 09:36 844次阅读
    <b class='flag-5'>OpenHarmony</b>开发学习:【源码下载和<b class='flag-5'>编译</b>】

    OpenHarmony南向能力征集令

    1、适配过程中缺少哪些接口能力或者南向能力,需要OpenHarmony去补齐的?例如内核、编译、器件适配、单板适配等; 2、对标linux,需要OpenHarmony提供哪些能力?比如V4L2
    发表于 04-09 15:32

    [鸿蒙]OpenHarmony4.0的Rust开发

    OpenHarmony 为了集成 C/C++ 代码和提升编译速度,使用了 GN + Ninja 的编译构建系统。GN 的构建语言简洁易读,Ninja 的汇编级编译规则直接高效。 为
    的头像 发表于 02-26 17:28 774次阅读
    [鸿蒙]<b class='flag-5'>OpenHarmony</b>4.0的Rust开发

    OpenHarmony 移植:build lite 编译构建过程

    配置完毕产品解决方案、芯片开发板解决方案,就可以执行 hb build 进行编译。但是产品解决方案代码是如何被调用编译的? 芯片开发板解决方案代码是如何被调用编译的?内核代码如何被调用编译
    的头像 发表于 02-19 16:19 874次阅读

    浅谈兼容 OpenHarmony 的 Flutter

    拓展,可支持使用 Flutter Tools 指令编译和构建 OpenHarmony 应用程序。 仓库的 commit 记录显示,OpenHarmony 使用的 Flutter 版本是 3.7 稳定分支
    的头像 发表于 02-02 15:22 547次阅读
    浅谈兼容 <b class='flag-5'>OpenHarmony</b> 的 Flutter