forked from nilaoda/BBDown
-
Notifications
You must be signed in to change notification settings - Fork 18
Developer Guide
aliveranme edited this page Aug 18, 2026
·
2 revisions
本文档为希望参与 BBDown 代码开发、修改源码或自行从源码构建独立 Native AOT 单文件二进制与轻量 Docker 镜像的开发者提供完整指引。
- .NET SDK:.NET 10.0 SDK 或更高版本
- IDE 与工具:Visual Studio 2022+ / JetBrains Rider / VS Code (配合 C# Dev Kit)
- 支持的操作系统:Windows 10/11、macOS (Intel/Apple Silicon) 或 Linux (x64/arm64)
- 外部依赖:FFmpeg(测试混流流程时需要)
BBDown/
├── BBDown/ # 主控制台应用程序 (CLI / Spectre.Console / API Server)
├── BBDown.Core/ # 核心业务类库 (解析、下载、混流、DRM、弹幕)
├── BBDown.Tests/ # xUnit 单元测试与集成测试工程
├── docs/ # 项目文档与 Wiki 知识库
├── scripts/ # 自动化构建与 Wiki 同步脚本
├── Dockerfile # Native AOT 多阶段 Docker 构建文件
└── BBDown.sln # 解决方案入口
# 还原 NuGet 依赖
dotnet restore
# Debug 编译构建
dotnet build
# 运行全套单元测试
dotnet test# 查看帮助
dotnet run --project BBDown -- --help
# 调试运行视频解析
dotnet run --project BBDown -- -I "https://www.bilibili.com/video/BV1qt4y1X7TW"BBDown 深度适配了 .NET 的 Native AOT (Ahead-Of-Time 提前编译) 技术:
- 零运行时依赖:编译直接生成目标平台原生机器码(ELF / PE / Mach-O),宿主机器无需预装任何 .NET Runtime。
- 极致冷启动速度:省去 JIT 即时编译,实现毫秒级快速启动。
# 1. Windows (x64)
dotnet publish BBDown -c Release -r win-x64 -o ./dist/win-x64
# 2. Linux (x64)
dotnet publish BBDown -c Release -r linux-x64 -o ./dist/linux-x64
# 3. Linux (ARM64 - 如树莓派 / 苹果 M 系列 Linux 容器)
dotnet publish BBDown -c Release -r linux-arm64 -o ./dist/linux-arm64
# 4. macOS (Apple Silicon M1/M2/M3/M4)
dotnet publish BBDown -c Release -r osx-arm64 -o ./dist/osx-arm64
# 5. macOS (Intel x64)
dotnet publish BBDown -c Release -r osx-x64 -o ./dist/osx-x64Warning
Native AOT 开发约束: 由于 Native AOT 会在编译期执行静态代码裁剪(Trim):
- 请避免使用无法推断类型的动态反射(Dynamic Reflection)。
- JSON 序列化请务必使用
System.Text.Json源生成器(Source Generator)上下文以确保 AOT 强类型支持。
# 构建本地镜像
docker build -t bbdown:latest .
# 验证镜像运行
docker run --rm bbdown:latest --help欢迎提交 Issue 与 Pull Request!提交前请确保:
- 本地执行
dotnet test确保所有测试用例均通过。 - 代码格式符合根目录
.editorconfig规范。 - 任何新增的 CLI 选项或功能改动请同步更新 docs/wiki/ 中的相关 Wiki 文档。
| 上一篇 | 目录导航 | 下一篇 |
|---|---|---|
| ⬅️ 内部架构与设计原理 | 📑 返回目录 | 常见问题与故障排查 ➡️ |
BBDown Wiki · 由 aliveranme/BBDown 维护 · 基于 MIT 协议开源
- 🏠 首页 (Home)
- 🚀 快速上手 (Getting Started)
- ⚙️ 全命令行参数详解 (CLI Reference)
- 🔑 账号登录与鉴权 (Authentication)
- 📝 配置文件与命名规则 (Configuration)
- 🛠️ 子命令使用指南 (Subcommands)
- 💬 弹幕与评论区抓取 (Danmaku & Comments)
- 📦 批量下载与自动化 (Batch & Automation)
- 🔓 Widevine DRM 原生解密 (DRM Decryption)
- 🌐 API 服务器与 Docker 部署 (API & Docker)
- 🏗️ 内部架构与设计原理 (Architecture)
- 💻 开发者指南与编译构建 (Developer Guide)
- ❓ 常见问题与故障排查 (FAQ)