📚往期笔录记录🔖:
🔖鸿蒙(HarmonyOS)北向开发知识点记录~
🔖鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
🔖鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
🔖嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
🔖对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
🔖鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
🔖记录一场鸿蒙开发岗位面试经历~
🔖持续更新中……
本文将介绍如何在GN工程中配置HarmonyOS工具链,然后通过HarmonyOS工具链编译出可以在HarmonyOS环境下使用的三方库。
概述
HarmonyOS编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能:
- 以部件为最小粒度拼装产品和独立编译。
- 支持轻量、小型、标准三种系统的解决方案级版本构建,以及用于支撑应用开发者使用IDE开发的SDK开发套件的构建。
- 支持芯片解决方案厂商的灵活定制和独立编译。
Ninja: 是一个专注于快速编译的小型构建系统。
GN: Generate Ninja的缩写,用于产生Ninja文件。
编译环境配置
- Linux编译环境搭建(如果已有对应版本的Linux开发环境,可跳过Linux环境搭建过程):详细指导见以下链接。
使用 WSL 在 Windows 上安装 Linux:https://learn.microsoft.com/zh-cn/windows/wsl/install
Ubuntu分发版本获取及安装说明:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
编译环境目前主要支持Ubuntu18.04和Ubuntu20.04(Ubuntu22.04暂不支持)。
- HarmonyOS SDK镜像下载:
从DevEco Studio的SDK Manager中获取SDK。
- 安装构建工具depot_tools并添加到环境变量。
任意位置创建工作目录depot_tools,cd到自己创建的目录,拉取工具(需要网络环境):
mkdir depot_tools
cd depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
将depot_tools的路径加到环境变量中:
编译.bashrc文件将depot_tools路径信息加到最后一行。
vi ~/.bashrc
在.bashrc文件的最后添加下面一行代码。

export PATH="$PATH:/xxx/depot_tools"
此处需配置绝对路径信息,例如这里创建的本地路径是/mnt/d/my_code/depot_tools,故此处配置如上图。
刷新环境变量使其生效:
source ~/.bashrc
- 使用GN需要Python环境,安装Python环境。
sudo apt update
sudo apt install python
直接输入指令sudo apt install python可能会安装失败,需要先输入sudo apt update更新一下可用包的最新列表。

判断python是否安装成功:
输入python显示python版本即可。

GN构建工程适配流程

首先,需要添加HarmonyOS平台的宏定义;然后配置好HarmonyOS平台的工具链信息(包括clang工具链,sysroot以及clang版本);接着需要在toolchain路径下配置各个架构的ohos_clang_toolchain;然后扩充gcc_toolchain模版功能,配置HarmonyOS用于启动引导程序的.o文件信息。剩下的就是需要设置一些HarmonyOS的编译参数(主要是基础的编译选项、宏定义等);然后在BUILD.gn中不同架构平台的分支处,添加对应的HarmonyOS平台的分支,其中未适配HarmonyOS的三方库可以先走Linux分支的编译配置。更加详细的信息可参考下节的适配案例。
webRTC适配案例
本文将通过webRTC的GN构建工程案例来对上一章节的流程进行实操讲解。WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。下面我们来了解下如何通过GN构建工程将webRTC适配到HarmonyOS系统上。
适配流程
示例代码中D:\my_cod

最低0.47元/天 解锁文章
1518

被折叠的 条评论
为什么被折叠?



