介绍
Caution
在项目尚未准备适用于生产环境之前,可能会包含不稳定的 API 和功能,包括破坏性变更,请谨慎使用。
环境准备
Note
以下方法适用于Windows,我们尚未在 Linux/macOS 测试如下工作流
- Zig 为 OpenHarmony-NET.PublishAotCross 提供
linker/sysroot
支持来允许在 Windows 上交叉编译linux-x64/linux-arm64/linux-musl-x64/linux-musl-arm64
目标
# 通过 winget 在 Windows 上安装 Zig
winget install zig.zig
.NET 8.0 SDK 和 .NET 9.0 SDK
DevEco Studio 最新版本
可选
Visual Studio 2022
可选
JetBrains Rider
构建运行
- 拉取 OpenHarmony.Avalonia 的最新代码
git clone https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia.git --recursive
- 进入项目目录
OpenHarmony.Avalonia
|-- Directory.Build.props
|-- OHOS_Project
|-- OpenHarmony.Avalonia.sln
|-- README.md
|-- Src
|-- ThirdParty
3 directories, 3 files
然后执行以下命令 或者 使用 Visual Studio 2022
打开 OpenHarmony.Avalonia.sln
解决方案,右键点击Entry
项目发布
Note
arm64-v8a
适用于真机,x86_64
适用于模拟器,请根据你的设备类型选择进行构建
dotnet publish ./Src/Entry/Entry.csproj -c Release -r linux-musl-arm64 -p:PublishAot=true -o OHOS_Project/entry/libs/arm64-v8a
或者在发布页面中选择PublishArm64.pubxml
,然后点击发布按钮
- 打开 DevEco Studio,打开
OHOS_Project
目录,然后点击运行按钮,DevEco Studio 会自动安装应用并运行到真机/虚拟机上
Note
在真机上运行可能需要签名等流程,与正常的鸿蒙软件开发一致
运行你自己的项目
- 在
Entry
中添加项目引用(也就是Entry项目引用你的项目)
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Avalonia.OpenHarmony;
using OpenHarmony.NDK.Bindings.Native;
- using AOOH_Gallery;
+ using YourProjectNamespace;
namespace Entry;
try
{
Ace.OH_NativeXComponent_RegisterOnFrameCallback(component, &OnSurfaceRendered);
if (XComponents.TryGetValue((nint)component, out var xComponent))
return;
+ xComponent = new AvaloniaXComponent<App>((nint)component, (nint)window);
XComponents.Add((nint)component, xComponent);
xComponent.OnSurfaceCreated();
}