Skip to content

Commit e3377a8

Browse files
committed
docs: add section avalonia
1 parent b397f9c commit e3377a8

File tree

2 files changed

+106
-2
lines changed

2 files changed

+106
-2
lines changed

docs/avalonia/introduction.md

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,104 @@
1-
# Introduction
1+
# 介绍
2+
3+
> [!CAUTION]
4+
> 在项目尚未准备适用于生产环境之前,可能会包含不稳定的 API 和功能,包括破坏性变更,请谨慎使用。
5+
6+
## 环境准备
7+
8+
> [!NOTE]
9+
> 以下方法适用于Windows,我们尚未在 Linux/macOS 测试如下工作流
10+
11+
* [Zig](https://ziglang.org/)[OpenHarmony-NET.PublishAotCross](https://github.com/OpenHarmony-NET/PublishAotCross?tab=readme-ov-file#openharmony-netpublishaotcross) 提供 `linker/sysroot` 支持来允许在 Windows 上交叉编译 `linux-x64/linux-arm64/linux-musl-x64/linux-musl-arm64` 目标
12+
13+
```shell
14+
# 通过 winget 在 Windows 上安装 Zig
15+
winget install zig.zig
16+
```
17+
18+
* .NET 8.0 SDK 和 .NET 9.0 SDK
19+
20+
* DevEco Studio 最新版本
21+
22+
* _可选_ `Visual Studio 2022`
23+
24+
* _可选_ `JetBrains Rider`
25+
26+
## 构建运行
27+
28+
* 拉取 [OpenHarmony.Avalonia](https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia) 的最新代码
29+
30+
```shell
31+
git clone https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia.git --recursive
32+
```
33+
34+
* 进入项目目录`OpenHarmony.Avalonia`
35+
36+
```shell
37+
|-- Directory.Build.props
38+
|-- OHOS_Project
39+
|-- OpenHarmony.Avalonia.sln
40+
|-- README.md
41+
|-- Src
42+
|-- ThirdParty
43+
44+
3 directories, 3 files
45+
```
46+
47+
然后执行以下命令 或者 使用 `Visual Studio 2022` 打开 `OpenHarmony.Avalonia.sln` 解决方案,右键点击`Entry`项目发布
48+
49+
> [!NOTE]
50+
> `arm64-v8a` 适用于真机,`x86_64` 适用于模拟器,请根据你的设备类型选择进行构建
51+
52+
### [真机](#tab/physical)
53+
54+
```shell
55+
dotnet publish ./Src/Entry/Entry.csproj -c Release -r linux-musl-arm64 -p:PublishAot=true -o OHOS_Project/entry/libs/arm64-v8a
56+
```
57+
58+
或者在发布页面中选择`PublishArm64.pubxml`,然后点击发布按钮
59+
60+
### [模拟器](#tab/virtual)
61+
62+
```shell
63+
dotnet publish ./Src/Entry/Entry.csproj -c Release -r linux-musl-x64 -p:PublishAot=true -o OHOS_Project/entry/libs/x86_64
64+
```
65+
66+
或者在发布页面中选择`PublishAmd64.pubxml`,然后点击发布按钮
67+
68+
---
69+
70+
* 打开 DevEco Studio,打开`OHOS_Project`目录,然后点击运行按钮,DevEco Studio 会自动安装应用并运行到真机/虚拟机上
71+
72+
> [!NOTE]
73+
> 在真机上运行可能需要签名等流程,与正常的鸿蒙软件开发一致
74+
75+
## 运行你自己的项目
76+
77+
*`Entry`中添加项目引用(也就是Entry项目引用你的项目)
78+
79+
[并替换这个命名空间为你自己的软件的命名空间](https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia/blob/2f0af9d19832c48a69e972eb263caf4a68f381c6/Src/Entry/XComponentEntry.cs#L5)
80+
81+
```diff
82+
using System.Runtime.CompilerServices;
83+
using System.Runtime.InteropServices;
84+
using Avalonia.OpenHarmony;
85+
using OpenHarmony.NDK.Bindings.Native;
86+
- using AOOH_Gallery;
87+
+ using YourProjectNamespace;
88+
89+
namespace Entry;
90+
```
91+
92+
[也就是更改`App`类的所属项目](https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia/blob/2f0af9d19832c48a69e972eb263caf4a68f381c6/Src/Entry/XComponentEntry.cs#L21)
93+
94+
```diff
95+
try
96+
{
97+
Ace.OH_NativeXComponent_RegisterOnFrameCallback(component, &OnSurfaceRendered);
98+
if (XComponents.TryGetValue((nint)component, out var xComponent))
99+
return;
100+
+ xComponent = new AvaloniaXComponent<App>((nint)component, (nint)window);
101+
XComponents.Add((nint)component, xComponent);
102+
xComponent.OnSurfaceCreated();
103+
}
104+
```

docs/getting-started.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# 开始上手
2-
本文将介绍如何使用.NET和NDK为鸿蒙系统开发原生库,如果要使用.NET开发完整鸿蒙应用,请参考**Avalonia****Blazor Hybrid**章节。
2+
3+
本文将介绍如何使用.NET和NDK为鸿蒙系统开发原生库,如果要使用.NET开发完整鸿蒙应用,请参考[Avalonia](avalonia/introduction.md)****Blazor Hybrid章节。

0 commit comments

Comments
 (0)