# Ruffle：用 Rust 重新实现的 Adobe Flash Player

> 用 Rust 重新实现 Adobe Flash Player，使从 ActionScript 1/2（AVM1）到 ActionScript 3（AVM2）的 SWF 内容能在原生桌面播放器中运行，或通过 WebAssembly 以自托管脚本或浏览器扩展的形式在浏览器中运行。其贡献指南称，行为依据对 Flash Player 输出的观察或 Adobe 开源的 avmplus 等许可兼容来源确定，并禁止反编译 Flash Player、Flash Professional 或 Animate。回归测试运行贡献者自制的 SWF，将其 trace 输出（以及可选的渲染图像）与官方调试版 Flash Player 的记录进行比较。

- 类型：案例
- 目标：游戏 · 网站
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-10-20
- 原始资源：<https://github.com/ruffle-rs/ruffle>
- 一手来源：<https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/ruffle-flash-player-case/>
- 记录 JSON：<https://awesomerea.org/resources/ruffle-flash-player-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/ruffle-flash-player-case/index.md)

## 使用条件与局限

- **前提条件：**使用者需自行提供 SWF 文件或嵌入它们的网页。发布资源包括 Linux（x86_64、i686 和 aarch64）、macOS 通用版和 Windows（x86 与 x86_64）桌面构建、自托管网页包和浏览器扩展包，以及可复现的源码归档；README 还提到 Firefox 和 Chrome 扩展、Flathub、npm，以及独立的 Android 项目。
- **前提条件：**构建需要最新稳定版 Rust（工作区使用 2024 edition），并需在 PATH 中提供 Java 以编译 ActionScript 3 内置类；Linux 构建需要 ALSA、udev、fontconfig、FreeType 和 OpenSSL 开发包。网页构建还需要 wasm32-unknown-unknown 目标、Node.js 与 npm 7+、wasm-bindgen-cli 0.2.127 以及 Binaryen。附带的 scanner 和 exporter 工具可批量解析 SWF 并生成 PNG 截图。
- **范围：**README 称 Ruffle 对 ActionScript 1、2、3 的支持已相当不错，但远未完成。审阅时，网站的兼容性页面报告 AVM1 语言支持 99%、API 82%，AVM2 语言支持 90%、API 82%，并承认 AVM1 内容存在一些图形不准确之处。审阅时的版本为 v0.7.1，发布于 2026-10-07，说明称除修复扩展发布问题外与 v0.7.0 相同；夜间构建仍在持续，所审阅的 master 分支提交比该版本多 73 个提交。
- **测试证据：**贡献者被要求将每个测试 SWF 与其源文件一同提交，预期的 trace 输出和截图来自运行调试版 Flash Player 的结果；已知失败可在测试的 test.toml 中标注。这些测试检验 Ruffle 在自制测试文件上的行为。
- **许可：**采用 MIT 或 Apache-2.0 双许可（GitHub 显示为 NOASSERTION）；LICENSE.md 列出第三方依赖的许可证，仓库还附带来自 Flex SDK 的 asc.jar，用于编译其 ActionScript 类。SWF 内容保留各自权利。

## 一手来源

1. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/README.md>
2. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/CONTRIBUTING.md#L30-L36>
3. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/CONTRIBUTING.md#L167-L196>
4. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/tests/README.md>
5. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/web/README.md#L33-L82>
6. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/core/src/avm2/globals/README.md#L111-L127>
7. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/Cargo.toml>
8. <https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/LICENSE.md>
9. <https://github.com/ruffle-rs/ruffle/releases/tag/v0.7.1>
10. <https://ruffle.rs/compatibility>

## 同分区更多条目：网站

- [Littlebird.ai 静态首页重建](https://awesomerea.org/zh/resources/littlebird-static-rebuild-case/index.md) · 案例
- [Sheypoor MCP：从浏览器流量还原分类信息网站接口](https://awesomerea.org/zh/resources/sheypoor-mcp-case/index.md) · 案例
- [ZCode-Android：重建 ZCode 远程控制客户端](https://awesomerea.org/zh/resources/zcode-android-case/index.md) · 案例
- [Power BI API Scraper：解析公开报表查询格式](https://awesomerea.org/zh/resources/power-bi-report-query-case/index.md) · 案例
- [webcrack](https://awesomerea.org/zh/resources/webcrack/index.md) · 工具
- [humanify JavaScript 标识符重命名工具](https://awesomerea.org/zh/resources/humanify/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
