ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MaaAssistantArknights 开发环境搭建与代码格式化规范完全指南

MaaAssistantArknights 开发环境搭建与代码格式化规范完全指南 MaaAssistantArknights 开发环境搭建与代码格式化规范完全指南【免费下载链接】MaaAssistantArknights《明日方舟》小助手全日常一键长草| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights本篇指南以 MaaAssistantArknights 官方开发者文档docs/ja-jp/develop/development.md为主线系统讲解从零搭建 Windows 完整开发环境、借助 GitHub Codespaces 快速起步、配置 VSCode CMake clangd 开发工作流以及项目强制执行的代码与资源文件格式化规范。读完本文你将能够独立完成 MAA 的 fork、克隆、构建、调试、格式化提交与向上游同步的完整开发闭环并理解这些流程背后的仓库级实现细节。说明该开发文档主要面向PRPull Request流程与 MAA 的文件格式要求。若你想修改 MAA 的运行逻辑如任务流程、战斗策略请参阅协议文档本文聚焦环境与规范本身。一、开始之前理解 MAA 的开发分支模型MAA 的核心开发分支是dev-v2所有新功能与修复都在该分支上合入发布时再合并到稳定分支。因此不要直接在 dev 分支上改代码建议为每个功能新建独立分支提交 PR 时目标分支必须是dev-v2而不是master-v2长期维护自己的 fork 时需要定期同步上游更新。如果你完全不会编程只是想修改 JSON 资源文件或文档官方提供了纯网页操作的 PR 教程可参考「帕拉斯」也能看懂的 GitHub Pull Request 使用指南无需本地搭建环境。二、零配置起步GitHub Codespaces 在线开发环境如果只是改几行代码却不想折腾本地环境官方在仓库的 .devcontainer 目录下预置了三套不同的在线开发环境Dev Container用浏览器即可完成编辑、提交与 PR环境适用场景对应配置空白环境裸 Linux 容器默认通用编辑、快速上手.devcontainer/devcontainer.json轻量环境文档站点前端开发.devcontainer/0/devcontainer.json完全环境MAA Core 相关开发.devcontainer/1/devcontainer.json三个环境的实际差异在配置中清晰可见轻量环境.devcontainer/0预装了文档站前端所需的扩展包括esbenp.prettier-vscodePrettier 格式化、DavidAnson.vscode-markdownlintmarkdownlint、vue.volar以及 MAA 专属的nekosu.maa-support并开启editor.formatOnSave适合直接修改 docs 目录下的多语言文档。完全环境.devcontainer/1在此基础上额外预装了ms-vscode.cmake-tools、xaver.clang-format、llvm-vs-code-extensions.vscode-clangd、ms-python.python与charliermarsh.ruff并在设置中按语言绑定格式化器C/C 使用 clang-format、Python 使用 ruff还预置了 venv 路径python.defaultInterpreterPath开箱即可编译 MAA Core。官方明确建议完全环境仅作参考不推荐作为主力开发方式——MAA Core 的完整构建仍以本地开发为准见下节。三、Windows 完整环境搭建推荐方式官方明确推荐使用Visual Studio作为 MAA 的主力开发环境下面按官方文档的完整流程逐步展开并补充仓库中的实际配置作为佐证。3.1 Fork 与克隆如果 fork 时间较早先在个人仓库的Settings最底部删除旧 fork避免历史包袱。打开 MAA 主仓库点击Fork→Create fork创建新 fork。克隆个人仓库的dev-v2分支必须包含子模块git clone --recurse-submodules 你的仓库 git 链接 -b dev-v2 --single-branch提示--single-branch只会拉取dev-v2的历史。若之后想切换到其他分支先执行git remote set-branches origin *再git fetch或者放弃--single-branch重新克隆一次以补全分支信息。警告Visual Studio 等不支持--recurse-submodules参数的 Git GUI 克隆后需要手动补初始化子模块git submodule update --initMAA 使用 git submodule 管理第三方依赖与资源仓库.devcontainer/post-create.sh中同样执行了git submodule update --init --recursive来保证容器内子模块就绪可见子模块是该项目的硬性依赖。3.2 下载预编译的第三方依赖库克隆完成后需要下载预编译的第三方库如 OpenCV、ONNX Runtime 等。项目提供了下载脚本运行前需确保本机有 Python 环境python tools/maadeps-download.py该脚本位于 tools/maadeps-download.py它会根据当前平台Windows/Linux/macOS与架构自动下载与 CMake preset 中MAADEPS_TRIPLET如maa-x64-windows匹配的依赖包避免从源码逐个编译第三方库的漫长过程。3.3 安装开发工具链下载并安装CMake安装Visual Studio 2026 Community安装时必须勾选以下两个工作负载C 桌面开发MaaCore 原生代码编译.NET 桌面开发MaaWpfGui 图形界面。3.4 配置 CMake 工程在项目根目录执行cmake --preset windows-x64这一命令对应仓库根目录 CMakePresets.json 中的windows-x64preset。从该文件可以看到windows-x64继承自windows-base生成器为Visual Studio 18 2026多配置生成器Debug/Release/RelWithDebInfo 共用同一 build 目录默认开启BUILD_WPF_GUIWPF 界面、BUILD_DEBUG_DEMODebug 演示程序与BUILD_RESOURCE_UPDATER依赖三元组MAADEPS_TRIPLET为maa-x64-windows。此外仓库还提供了windows-arm64、linux-x64、linux-arm64、macos-x64、macos-arm64及android-*等跨平台 preset以及windows-x64-RelWithDebInfo等 build preset供 CI 与多平台开发使用。3.5 打开工程并启动调试双击build/MAA.slnxVisual Studio 会自动加载项目在顶部配置栏选择Debug与x64右键MaaWpfGui→ 设置为启动项目按F5启动调试。至此环境就绪可以自由开展开发了。3.6 补充Windows 窗口控制与 MaaFramework 触摸模式的控制单元若要调试Win32ControllerWindows 窗口控制与MaaFwAdbControllerMaaFramework 触摸模式相关功能需要额外下载 MaaFramework 发布的控制单元Control Unit二进制python tools/maafw-control-unit-download.py该脚本tools/maafw-control-unit-download.py会自动将对应平台的MaaWin32ControlUnit.dll/MaaAdbControlUnit.dllmacOS 下为libMaaAdbControlUnit.dylibLinux 下为libMaaAdbControlUnit.so放入构建输出目录——默认是build/bin下最新的版本目录可通过--output-dir参数显式指定--force可强制重新下载。需要特别注意的是脚本下载的是 MaaFramework 的Release 构建与 MAA 的 Release/RelWithDebInfo 构建 ABI 兼容但与 Debug 构建不兼容MSVC 的 Debug/Release STL 布局不同混用会崩溃。因此调试相关功能时需要自行编译 MaaFramework 的 Debug 版本并使用其 DLL否则断点调试时可能发生难以排查的崩溃。四、VSCode 开发工作流可选官方明确提示推荐使用 Visual Studio 开发MAA 项目主要围绕 VS 构建。VSCode 工作流仅作为熟悉 VSCode CMake clangd 的开发者的替代方案配置门槛相对更高。完成前述步骤 16克隆、依赖、CMake 配置后可按以下方式配置4.1 推荐扩展扩展用途CMake ToolsCMake 配置、构建、调试集成clangdC 智能补全、代码导航与诊断基于 LSPC/Cms-vscode.cpptoolsC 程序调试配合 CMake Tools 或 launch.json使用 clangd 时建议将 C/C 扩展的 IntelliSense 引擎禁用C_Cpp.intelliSenseEngine设为disabled避免两个引擎冲突。4.2 配置步骤在 VSCode 中打开项目根目录CMake Tools在状态栏选择 Configure Preset如windows-x64、linux-x64再通过 Build Preset 执行构建clangdLinux/macOS 的 preset 已默认开启CMAKE_EXPORT_COMPILE_COMMANDS见 CMakePresets.json 中linux-base与macos-base的cacheVariablesclangd 会自动使用build/compile_commands.json。Windows 上则需要先手动生成该文件Windows 下 clangd 配置要点在 VS Installer 中勾选安装C Clang 编译器 for Windowsclang-cl切换到windows-x64-clangpreset 执行一次 Configure即可在build/下生成compile_commands.json该 preset 使用 clang-cl与 MSVC 不同无法直接产出可运行构建产物真正构建时需切回windows-x64clangd 按 clang-cl 的编译信息解析代码部分 MSVC 专属扩展会误报错误可忽略不影响实际 MSVC 构建。命令行切换 preset 的示例在项目根目录执行rem 仅生成 compile_commands.jsonConfigure不构建 cmake --preset windows-x64-clang rem 切回 MSVC 进行实际构建 cmake --preset windows-x64 cmake --build --preset windows-x64-RelWithDebInfo调试需要自行创建.vscode/launch.json配置后即可启动调试 MaaWpfGui 或 Debug Demo。4.3 快捷键构建CtrlShiftB或通过 CMake Tools 状态栏调试F5或在 Run and Debug 面板中选择配置。五、MAA 的文件格式规范为保证仓库中代码与资源文件风格统一、易于维护与阅读MAA 使用一整套格式化工具。提交代码前请先格式化或使用 Pre-commit Hooks 自动格式化。目前启用的格式化工具如下文件类型格式化工具Cclang-formatJSON / YAMLPrettierMarkdownmarkdownlintPythonruff-formatPNGoxipng这些规则在仓库中有完整落地具体见 .pre-commit-config.yaml其中clang-format只作用于^src/MaaCore/.*MAA Core 源码使用.clang-format配置Prettier覆盖配置文件YAML/JSON与 docs 文档markdownlint针对docs与根 README使用docs/.markdownlint.yaml配置oxipng对所有 PNG 资源做无损压缩参数-q -o 2 -s --ngruff-format格式化 Python 代码。C 侧的风格基线定义在根目录 .clang-format基于WebKit风格ColumnLimit: 120、缩进 4 空格、指针靠左对齐、Standard: c20并针对 MAA 实际需求做了大量定制如BinPackArguments: false、InsertBraces: true、SortIncludes: CaseSensitive等。5.1 使用 Pre-commit Hooks 自动格式化确保本机已安装 Python 与 Node 环境在项目根目录执行pip install pre-commit pre-commit install安装成功后每次git commit都会自动运行格式化工具确保提交内容符合风格规范。若pip安装后仍无法运行 pre-commit请检查 pip 安装路径是否已加入PATH。5.2 在 Visual Studio 中启用 clang-format安装clang-format 20.1.0 及以上版本python -m pip install clang-format使用 Everything 等工具查找clang-format.exe的安装位置例如使用 Anaconda 时通常位于YourAnacondaPath/Scripts/clang-format.exe在 Visual Studio 中进入Tools → Options搜索clang-format勾选启用 clang-format 支持并选择使用自定义的 clang-format.exe 文件填入上一步找到的clang-format.exe路径。完成配置后Visual Studio 即可使用支持 C20 语法的 clang-format与仓库根目录 .clang-format 中的Standard: c20保持一致。5.3 使用仓库自带脚本批量格式化除了 IDE 集成仓库还提供了独立的批量格式化脚本 tools/ClangFormatter/clang-formatter.py可递归处理指定目录/文件。在项目根目录执行python tools\ClangFormatter\clang-formatter.py --clang-formatPATH\TO\YOUR\clang-format.exe --inputsrc\MaaCore脚本支持以下参数--input输入目录或文件如src\MaaCore脚本会递归遍历;--clang-formatclang-format可执行文件路径默认clang-format--style格式化风格默认file即读取仓库根目录的 .clang-format--ruleJSON 格式的文件扩展名数组默认[.c, .h, .cpp, .hpp]--ignoreJSON 格式的忽略路径数组可混用文件与目录例如python tools\ClangFormatter\clang-formatter.py --inputresource\ --ignore[\resource/Arknights-Tile-Pos\, \resource/infrast.json\]六、提交、推送与 PR 流程开发过程中建议每完成一定量的修改就提交一次且必须填写提交信息。不熟悉 Git 的开发者尤其不要直接修改 dev 分支而是新建独立分支git branch your_own_branch git checkout your_own_branch这样可以免受 dev 分支后续更新的影响独立开发。开发完成后将修改推送到远程仓库git push origin dev-v2然后在 MAA 主仓库提交 Pull Request目标分支务必选择dev-v2而非master-v2。6.1 同步上游仓库更新当上游仓库有更新时按以下步骤同步# 1. 添加上游仓库 git remote add upstream https://github.com/MaaAssistantArknights/MaaAssistantArknights.git # 2. 拉取上游更新 git fetch upstream # 3. 推荐使用 rebase 合并更新 git rebase upstream/dev-v2 # 或使用 merge git mergerebase 或 merge 完成后重复前面的构建、调试、提交与推送步骤即可。提示Visual Studio 启动后可在Git 更改面板中直接完成全部 Git 操作无需命令行。七、小结MAA 的开发流程可以概括为一条清晰的链路fork 克隆 dev-v2含子模块→ 下载预编译依赖 → 按 preset 配置 CMake → VS 启动调试 → 格式化提交 → PR 到 dev-v2。对只想改文档或 JSON 的贡献者Codespaces 与网页版 PR 教程提供了零本地配置的捷径对核心开发者windows-x64-clangpreset 生成的compile_commands.json则打通了 VSCode clangd 的现代 C 开发体验。而贯穿始终的格式化规范.clang-format .pre-commit-config.yaml保证了数千个文件在长期迭代中依然保持统一、可读、可维护。【免费下载链接】MaaAssistantArknights《明日方舟》小助手全日常一键长草| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表