Skip to content

Commit 97b07fd

Browse files
authored
Merge pull request #42 from ljlVink/main
添加ohos平台的编译文档
2 parents bb513a4 + b7ef869 commit 97b07fd

4 files changed

Lines changed: 112 additions & 0 deletions

File tree

src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
- [Linux](./phira_build_guide/Linux.md)
9393
- [macOS](./phira_build_guide/macOS.md)
9494
- [Android](./phira_build_guide/Android.md)
95+
- [OpenHarmony](./phira_build_guide/OpenHarmony.md)
9596

9697
- [糗事集锦](./dev-incident/README.md)
9798
- [长风的柳絮](./dev-incident/长风的柳絮.md)
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# OpenHarmony
2+
3+
## 准备阶段
4+
5+
1. 首先需要新增 ohos 平台,如果你还没有安装 `cargo`,请点击 [这里](https://rust-lang.org/learn/get-started/) 按系统安装构建工具。
6+
7+
更多内容可以参考 [ohos-rs](https://ohos.rs/)
8+
9+
```
10+
rustup target add aarch64-unknown-linux-ohos
11+
rustup target add armv7-unknown-linux-ohos # 理论可以不加
12+
rustup target add x86_64-unknown-linux-ohos # 理论可以不加,如果不在x86的模拟器运行
13+
```
14+
15+
2. 你只需要下载最新的 `DevEco-Studio` 然后安装对应的 `NDK` 即可。你可以在 [DevEco Studio (Windows/macOS 平台)](https://developer.huawei.com/consumer/cn/deveco-studio/) 或者配置 [Command Line Tools(推荐 Linux 平台)](https://developer.huawei.com/consumer/cn/download/command-line-tools-for-hmos) 找到并且下载。
16+
17+
下载完成之后,你需要为系统设置一个环境变量来帮助我们构建原生模块。假设你安装的 SDK 路径为 /path/Sdk,那么我们只需要设置如下的环境变量即可:
18+
19+
| 平台 | NDK 路径 | 环境变量设置方法 |
20+
|------|----------|------------------|
21+
| **MacOS** | `/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony` | 在终端执行:<br>`export OHOS_NDK_HOME=/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony`<br>建议添加到 `~/.zshrc``~/.bash_profile` 使其永久生效 |
22+
| **Windows** | `C:/Program Files/Huawei/DevEco Studio/sdk/default/openharmony` | 1. 打开系统环境变量设置<br>2. 新建系统变量 `OHOS_NDK_HOME`<br>3. 变量值填入上述路径<br>或 PowerShell 临时设置:<br>`$env:OHOS_NDK_HOME="C:/Program Files/Huawei/DevEco Studio/sdk/default/openharmony"` |
23+
| **Linux** | 下载 Command Line Tools 后的自定义路径 | 在终端执行:<br>`export OHOS_NDK_HOME=/your/download/path/openharmony`<br>建议添加到 `~/.bashrc``~/.profile` 使其永久生效 |
24+
25+
> **注意**`Deveco Studio``Command Line Tools` 版本不得低于 6.0.0 (API 20)。MacOS 仅推荐 ARM 版进行开发。
26+
27+
3. 安装ohrs
28+
29+
```
30+
cargo install ohrs
31+
```
32+
33+
## 开始构建
34+
35+
1. 首先克隆代码。
36+
37+
```
38+
git clone https://github.com/TeamFlos/phira
39+
git clone https://github.com/TeamFlos/phira-ohos
40+
```
41+
42+
2. 静态库文件,您可以在 [prpr-avc-ffmpeg](https://github.com/TeamFlos/prpr-avc-ffmpeg/releases) 下载 `aarch64-unknown-linux-ohos.tar.gz`,并解压所有链接库文件 `*.a``phira/prpr-avc/static-lib/aarch64-unknown-linux-ohos` 中。
43+
44+
3. 添加 `config.toml`,配置 cmake 位置,此部分为编译 ohos 平台的 phira 所需要的。
45+
46+
```
47+
$ cd phira
48+
```
49+
50+
针对 `Linux` 平台
51+
52+
`.cargo/config.toml`
53+
54+
```
55+
[env]
56+
CMAKE = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony/native/build-tools/cmake/bin/cmake"
57+
CMAKE_TOOLCHAIN_FILE_aarch64-unknown-linux-ohos = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony/native/build/cmake/ohos.toolchain.cmake"
58+
CMAKE_GENERATOR = "Ninja"
59+
CMAKE_MAKE_PROGRAM = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony/native/build-tools/cmake/bin/ninja"
60+
OHOS_NDK_HOME = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony"
61+
```
62+
63+
针对 `Windows` 平台,你需要在项目的 `.cargo` 文件夹中新建 `cmake-wrapper.cmd`,我们采用临时变量的方式防止与系统默认的cmake发生冲突
64+
65+
`.cargo/cmake-wrapper.cmd`
66+
67+
```
68+
@echo off
69+
set PATH=D:/你的ohos sdk位置/default/openharmony/native/build-tools/cmake/bin;%PATH%
70+
"D:/你的ohos sdk位置/default/openharmony/native/build-tools/cmake/bin/cmake.exe" %*
71+
```
72+
73+
74+
`.cargo/config.toml`
75+
76+
```
77+
[env]
78+
CMAKE = "你的项目位置/.cargo/cmake-wrapper.cmd"
79+
CMAKE_TOOLCHAIN_FILE_aarch64-unknown-linux-ohos = "D:/你的ohos sdk位置/default/openharmony/native/build/cmake/ohos.toolchain.cmake"
80+
CMAKE_GENERATOR = "Ninja"
81+
CMAKE_MAKE_PROGRAM = "D:/你的ohos sdk位置/default/openharmony/native/build-tools/cmake/bin/ninja.exe"
82+
```
83+
84+
4. 开始构建
85+
86+
```
87+
phira> cd phira # 这里要进入到 phira 文件夹,否则会没有产物输出
88+
phira/phira> ohrs build --release --arch aarch # 可以不加 --arch 参数,即默认在 x86_64、armv7、arm64 编译,但目前鸿蒙设备均为 arm64
89+
```
90+
91+
5. 构建成功之后会在 `phira/dist/<对应的arch>` 找到 `libphira.so`
92+
93+
6. `phira-ohos` 代码目录下不包含资源文件,你需要提前将 `assets/` 文件夹复制到 `entry/src/main/resources/resfile/assets` 中。如果您发现主程序黑屏,可以前往 [Release](https://github.com/TeamFlos/phira/releases) 页面下载任意版本,获取缺失的资源文件并复制到同一目录。
94+
95+
7. 进入 `phira-ohos` 文件夹中,将 `build-profile-nosigncfg.json5` 改成 `build-profile.json5`,然后打开 `DevEco Studio`
96+
97+
连接设备,在 `Project Structure` 中找到 `Signing configs`,选择 `Automatically generate signature` 后点击 `Apply`,同时项目会自动触发 Sync。
98+
99+
![](image.png)
100+
101+
Project Structure 位置如箭头所示
102+
103+
复制生成的 `libphira.so``entry/libs/arm64-v8a` 文件夹中。点击编译即可在 ohos 设备运行。
104+
105+
106+
## 常见问题
107+
108+
如果出现非常奇怪的编译报错,请考虑移步到 ~~arm64 的 MacOS~~ 或者 `WSL` 平台编译。
109+
110+
DevEco Studio 并没有 Linux 原生版本。

src/phira_build_guide/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ Windows MSVC:[here](./Windows_Msvc.md)
44
Linux:[here](./Linux.md)
55
macOS:[here](./macOS.md)
66
Android:[here](./Android.md)
7+
OpenHarmony:[here](./OpenHarmony.md)

src/phira_build_guide/image.png

14.8 KB
Loading

0 commit comments

Comments
 (0)