Table of Contents

介绍

Caution

在项目尚未准备适用于生产环境之前,可能会包含不稳定的 API 和功能,包括破坏性变更,请谨慎使用。

环境准备

Note

以下方法适用于Windows,我们尚未在 Linux/macOS 测试如下工作流

# 通过 winget 在 Windows 上安装 Zig
winget install zig.zig
  • .NET 8.0 SDK 和 .NET 9.0 SDK

  • DevEco Studio 最新版本

  • 可选 Visual Studio 2022

  • 可选 JetBrains Rider

构建运行

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;

也就是更改App类的所属项目

        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();
        }