Skip to content

Commit 7c8344b

Browse files
committed
更新:添加OHOS平台编译文档
1 parent bb513a4 commit 7c8344b

3 files changed

Lines changed: 92 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: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# OpenHarmony
2+
3+
## 准备阶段
4+
5+
1. 首先需要新增ohos平台,如果你没有安装`rust`,如果没有安装,请点击 [这里](./cargo.md) 按步骤安装构建工具
6+
7+
```
8+
rustup target add aarch64-unknown-linux-ohos
9+
rustup target add armv7-unknown-linux-ohos # 理论可以不加
10+
rustup target add x86_64-unknown-linux-ohos # 理论可以不加,如果不在x86的模拟器运行
11+
```
12+
13+
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) 找到并且下载。
14+
15+
下载完成之后,你需要为系统设置一个环境变量来帮助我们构建原生模块。假设你安装的 SDK 路径为 /path/Sdk,那么我们只需要设置如下的环境变量即可:
16+
17+
```
18+
# 一般来说 SDK 目录下面都有多个版本,选择你自己需要使用的版本即可。
19+
# 对于 unix 系统的用户来说请务必使用 export 否则会导致读取不到环境变量
20+
export OHOS_NDK_HOME=/path/Sdk/9/
21+
22+
# 对于 5.0.0 release 的 IDE 来说他的路径示例如下所示:
23+
export OHOS_NDK_HOME=/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony
24+
```
25+
26+
3. 安装ohrs
27+
28+
```
29+
cargo install ohrs
30+
```
31+
32+
## 开始构建
33+
34+
1. 首先克隆代码。
35+
36+
```
37+
https://github.com/teamFlos/phira
38+
https://github.com/teamFlos/phira-ohos
39+
```
40+
41+
2. 静态库文件,您可以 [直接下载](https://teamflos.github.io/phira-docs/phira_build_guide/prpr-avc.zip) 或者在 [缓存站](https://www.nuanr-mxi.com/prpr-avc.zip) 下载静态库文件,下载完成后直接解压到代码根目录下,如果提示覆盖文件,请点击覆盖。
42+
43+
3. 添加`config.toml`,配置cmake位置。
44+
45+
针对 `Linux` 平台
46+
47+
`.cargo/config.toml`
48+
49+
```
50+
[env]
51+
CMAKE = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony/native/build-tools/cmake/bin/cmake"
52+
CMAKE_TOOLCHAIN_FILE_aarch64-unknown-linux-ohos = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony/native/build/cmake/ohos.toolchain.cmake"
53+
CMAKE_GENERATOR = "Ninja"
54+
CMAKE_MAKE_PROGRAM = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony/native/build-tools/cmake/bin/ninja"
55+
OHOS_NDK_HOME = "/你的ohos sdk位置/command-line-tools/sdk/default/openharmony"
56+
```
57+
58+
针对 `Windows` 平台,你需要在项目的`.cargo`文件夹中新建`cmake-wrapper.cmd`
59+
60+
`.cargo/config.toml`
61+
62+
```
63+
[env]
64+
CMAKE = "你的项目位置/.cargo/cmake-wrapper.cmd"
65+
CMAKE_TOOLCHAIN_FILE_aarch64-unknown-linux-ohos = "D:/你的ohos sdk位置/default/openharmony/native/build/cmake/ohos.toolchain.cmake"
66+
CMAKE_GENERATOR = "Ninja"
67+
CMAKE_MAKE_PROGRAM = "D:/你的ohos sdk位置/default/openharmony/native/build-tools/cmake/bin/ninja.exe"
68+
```
69+
70+
4. 开始构建
71+
72+
```
73+
phira>cd phira #这里要进入到phira文件夹。否则会没有产物输出
74+
phira/phira>ohrs build --release --arch aarch #可以不加--arch 参数,即默认在x86 armv7 arm64编译,但目前鸿蒙设备均为arm64
75+
```
76+
77+
5. 构建成功之后会在phira/dist找到`libphira.so`
78+
79+
6. 代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases)页面下载任意版本,获取缺失的资源文件,将缺失的资源文件放入 `entry\src\main\resources\resfile\assets` 中。
80+
81+
7. 进入`phira-ohos`文件夹中,将`build-profile-nosigncfg.json5`改成`build-profile.json5`,然后打开`Deveco Studio`。连接设备,在`Project Structure`中找到`Signing configs`选择自动生成签名。
82+
83+
复制生成的`libphira.so``entry\libs\arm64-v8a`文件夹中。点击编译即可在ohos设备运行。
84+
85+
86+
## 常见问题
87+
88+
如果出现非常奇怪的编译报错,请考虑移步到~~arm64的MacOS~~或者`WSL`平台编译。
89+
90+
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)

0 commit comments

Comments
 (0)