1.openharmony环境搭建
原文链接:https://kashima19960.github.io/2025/03/21/openharmony/1.openharmony环境搭建/
前言
在学习知识的时候,如果长时间不用,就会很快遗忘,所以我写这个系列的文章,目的是为了记录我学习openharmony的历程,让我以后回顾的时候,能够快速记忆起相关的知识,由于博主写这个系列的文章已经不是零基础了,所以有些步骤会呈现跳跃式,这个敬请谅解😊😊
采用的环境
- OpenHarmony-v3.1-Release
openharmony更新的挺快的,所以有些头库文件的位置会经常变动,因此本系列的文章以我学习的3.1版本为准
- 润和Hi3861
我学习的时候,采用南京的润和版,主控用的是hi3861V100,核心板长这样
- DevEco device tool+Vscode
华为提供的这个IDE是Vscode的插件,所以必须要用Vscode。。。。😐😐
- 虚拟机Ubuntu20.04
最好用20.04这个版本,有些工具链会因为版本原因不兼容(前人的教训)
虚拟机配置要求
创建虚拟机的软件可以采用Vmware或者Vitual box,不过我个人使用的话,是用的WSL,毕竟WSL的启动要快很多,如果是用Vmware或者Vitual box的话,这边是有推荐配置的,因为Openharmony的源码非常大,所以电脑最好要达成下图的配置
但实际上只要硬盘大一点就行了,其他方面差一点只是编译的时候会慢一点而已
搭建环境
搭建环境我不推荐使用命令行的方式,因为工具链太多,一个个安装很可能会遇到很多问题
OpenHarmony系统分类
Openharmony有三种基础系统,你下载源码的时候都是同一份的,所谓的不同的基础系统就是在编译的时候,编译组件数量的多少罢了,比如Hi3861L100使用的是轻量系统,编译出来的文件只有40M左右。但是如果用标准系统编译的话,就是全量编译,编译出来的固件有20G以上,我当时编译标准系统的时候,睡觉前开始编译,睡醒了还在编译🤣
类型 | 处理器 | 最小内存 | 能力 |
---|---|---|---|
轻量系统(mini system) | MCU类处理器(例如Arm Cortex-M、RISC-V 32位的设备) | 128KiB | 提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。 |
小型系统(small system) | 应用处理器(例如Arm Cortex-A的设备) | 1MiB | 提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。 |
标准系统(standard system) | 应用处理器(例如Arm Cortex-A的设备) | 128MiB | 提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。 |
更多内容请参考官方文档快速入门概述
搭建环境要同时搭建Windows和Ubuntu的环境,
搭建Windows环境
具体内容参考这个文档搭建Windows环境,唯一需要注意的是Python的版本最好用3.8,因为这个工具的python相关代码是用Python3.8版本写的,所以其他版本的Python多少会有点兼容性问题
搭建Ubuntu环境
具体内容参考这个文档搭建Ubuntu环境,搭建好后要用Vscode通过远程SSH的方式连接Ubuntu,实现交叉编译,远程连接参考这个文档配置远程访问环境
下载源码
官方文档下载源码是通过码云仓库获取,但是这个方式比较复杂,我们可以直接用Deveco device tool这个工具进行一键下载,在新建工程里,选择对应版本的源码
点击确定就能直接下载了
安装工具链
工具链安装同样不推荐用apt直接安装,在工程配置这里,可以直接装,这些都是写好的脚本,点击执行就能一键安装所需工具链了
编译源码
如果环境都安装好了,就可以build试试了,如果缺了啥工具,IDE会进行提示
附录
环境搭建过程中会安装很多工具,这里有几个表解释了其中一些工具的作用,有兴趣可以参考一下
如果你是用码云的方式下载源码的话,还会用到git相关的工具
-
git:是一个开源分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。是为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
-
git-lfs:若在用git管理的项目中出现大文件,其数量较多,
而且更新较频繁。那么当首次clone该项目时, 就会不可避免地将这些大文件的当前版本和历史所有版本的文件都下载下来, 虽然很可能用不到这些历史文件,
但却不得不为它们所占用的额外空间买单。git lfs(large file storage)就很好地解决了这一问题。通过将大文件替换为小指针的方式,
当你真正需要到这些大文件的时候, 它才会从本地或者远端的lfs缓存中下载这些大文件。 -
cURL:是一个利用URL语法在命令行下工作的文件传输工具,它支持文件上传和下载。
参考资料
快速入门概述
HarmonyOS设备开发 - HarmonyOS设备开发官网
Hi3861开发板介绍
编译形态整体说明
获取源码
下一节是啥?
讲讲轻量系统的编译构建与数据持久化