Skip to content

Latest commit

 

History

History
205 lines (143 loc) · 7.12 KB

README_zh.md

File metadata and controls

205 lines (143 loc) · 7.12 KB
LOGO

MaaFramework.Binding.CSharp

MaaFramework 的 C# 绑定 ✨

💫 一个通用的互操作 API 封装 💫

license language platform Nuget (with prereleases)

English | 简体中文

文章

快速开始

系统要求

你的计算机应满足最低系统要求,才能运行和使用 MaaFramework.Binding.CSharp ,该框架可能在此处未列出的其他平台或版本上运行。

操作系统版本 最低要求 / 受限原因
Windows 10+ 受限于 .NET 7.0
macOS 12+ 受限于 MaaFramework
Linux
Ubuntu 23.10+
libc6 2.38+ 等
Android Unknown
  • 架构限制: X64, Arm64

安装依赖

MaaFramework.Binding.CSharp 需要安装以下依赖项才能正常运行。

平台 包 Id 依赖下载
Windows Maa.Framework
Maa.Framework.Runtimes
Maa.Framework.Runtime.win-arm64
Maa.Framework.Runtime.win-x64
Visual C++ Redistributable

准备资源

请参阅 MaaFramework 文档 ( English | 简体中文 ) 。

如同在 MaaFramework.Binding.CSharp 使用的的 SampleResource

添加包

包 Id 描述
Maa.Framework 引用 Native 和 Runtimes 的元包
Maa.Framework.Native 引用 Binding.Native 和 AgentBinary 的元包
Maa.Framework.Binding Binding 的抽象层
Maa.Framework.Binding.Native Binding 的本机 API 包装实现层
Maa.Framework.Runtimes
Maa.Framework.Runtime.win-x64
Maa.Framework.Runtime.win-arm64
Maa.Framework.Runtime.linux-x64
Maa.Framework.Runtime.linux-arm64
Maa.Framework.Runtime.osx-x64
Maa.Framework.Runtime.osx-arm64
Maa.Framework.Runtime.android-x64
Maa.Framework.Runtime.android-arm64
MaaFramework的本机二进制文件。
Runtimes 引用 android 包。
Maa.AgentBinary 预构建的代理二进制文件,包括 minitouch、maatouch 和 minicap。

发布版本

dotnet add package Maa.Framework --prerelease

夜间构建

添加包
  • shell
dotnet add package Maa.Framework --prerelease -s https://nuget.pkg.github.com/maaxyz/index.json
添加包源
  • .csproj
  <PropertyGroup>
    <RestoreSources>$(RestoreSources);https://api.nuget.org/v3/index.json;https://maaxyz.github.io/pkg/nuget/index.json</RestoreSources>
  </PropertyGroup>

指定 RIDs

MaaFramework 目前支持的 Runtime Id 可在此处查询。

要想使用指定的 RIDs,例如使用已受支持的 win 平台包,请手动引用如下包:

  • Maa.Framework.Native
  • Maa.Framework.Runtime.win-arm64
  • Maa.Framework.Runtime.win-x64

运行代码

准备工作:adb connect HOST[:PORT]

using MaaFramework.Binding;

var devices = new MaaToolkit(true).AdbDevice.Find();
if (devices.IsEmpty)
    throw new InvalidOperationException();

using var maa = new MaaTasker
{
    Controller = devices[0].ToAdbController(),
    Resource = new MaaResource("./SampleResource"),
    DisposeOptions = DisposeOptions.All,
};

if (!maa.Initialized)
    throw new InvalidOperationException();

maa.AppendPipeline("EmptyTask")
   .Wait()
   .ThrowIfNot(MaaJobStatus.Succeeded);

Console.WriteLine("EmptyTask Completed");

客制化

using MaaFramework.Binding.Buffers;
using MaaFramework.Binding.Custom;

var taskName = "MyCustomTask";
var param = $$"""
{
  "{{taskName}}": {
      "recognition": "Custom",
      "custom_recognition": "MyRec",
      "custom_recognition_param": {
          "my_rec_key": "my_rec_value"
      },
      "action": "Custom",
      "custom_action": "MyAct",
      "custom_action_param": {
          "my_act_key": "my_act_value"
      }
  }
}
""";

maa.Resource.Register(new MyRec());
maa.Resource.Register(new MyAct());
maa.AppendPipeline(taskName, param)
    .Wait()
    .ThrowIfNot(MaaJobStatus.Succeeded);

internal sealed class MyRec : IMaaCustomRecognition
{
    public string Name { get; set; } = nameof(MyRec);

    public bool Analyze(in IMaaContext context, in AnalyzeArgs args, in AnalyzeResults results)
    {
        results.Box.SetValues(0, 0, 100, 100);
        results.Detail.SetValue("Hello World!");
        return true;
    }
}

internal sealed class MyAct : IMaaCustomAction
{
    public string Name { get; set; } = nameof(MyAct);

    public bool Run(in IMaaContext context, in RunArgs args)
    {
        return true;
    }
}

最佳实践

  • MBA BA 小助手 基于 MAA 全新架构的 BA 小助手。 图像技术 + 模拟控制,解放双手,不再点点点!由 MaaFramework 强力驱动!

  • MFAWPF MFA 任务管理器 基于 MAA 全新架构的 通用 GUI。 由 MaaFramework 强力驱动!

  • 您还可以在 单元测试 中找到更多示例。

文档

我们在源代码文件中编写了详细的文档注释。

您还可以访问 API 参考单元测试 获取更多信息。

如果你仍然希望查阅特定版本的 MaaFramework.Binding.CSharp 的 API 参考,可以参考项目的发布页面并下载附带的 docs.zip 文件。

贡献

我们欢迎对 MaaFramework.Binding.CSharp 的贡献。如果您发现了 bug 或有功能请求,请在 GitHub 仓库中打开一个 issue。如果您想贡献代码,可以随时 fork 仓库并提交 pull request。

许可证

MaaFramework 采用 LGPL-3.0 许可证开源。

讨论

  • QQ 群: 595990173