源码编译教程

从零编译 oneAnime,含 Windows 搜索优化的完整解法

oneAnime 用 Flutter 开发,从源码编译需要 Flutter SDK 与对应平台的构建工具链。Windows 版有一个已知问题必须手动处理,否则搜索框的简繁转换会失效。

环境要求
Flutter 3.47+、Visual Studio 2019+、CMake macOS 编译还需 Xcode
Windows 必读
搜索简繁转换失效 需自行编译 opencc.dll 放入产物目录
依赖拉取
需配置国内镜像 中国大陆网络下直接拉取会失败
前提条件
官方未提供 iOS 签名流程 iOS workflow 已禁用,需自行配置证书

环境准备

官方明确说明:编译需要良好的网络环境

先装 Flutter SDK 并跑一遍体检,确认工具链完整:

工具版本要求用途
Flutter SDK3.47 或更高项目主框架,v1.4.7 已适配 Flutter 3.47
Visual Studio2019 或更高(含 C++ 桌面开发工作负载)编译 Windows 版,同时用于编译 opencc.dll
CMake3.x构建 opencc 动态库
XcodemacOS 编译 iOS / macOS 版需要Apple 平台构建工具链

验证环境:

flutter doctor检查各平台工具链是否就绪
flutter pub get拉取依赖
flutter pub upgrade升级到最新兼容版本
中国大陆网络环境必读。官方在 README 中特别说明:编译需要良好的网络环境,如果你位于中国大陆,可能需要设置恰当的镜像地址。直接 git clone 拉不动时,按下面配置镜像后再试。

配置国内镜像

拉不动依赖时先做这一步

Flutter 的包仓库和构建产物仓库在境内访问较慢,配置镜像可以显著改善克隆与构建速度。在终端(Windows 用 PowerShell)中设置环境变量:

系统命令
macOS / Linuxexport PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
Windows PowerShell$env:PUB_HOSTED_URL="https://pub.flutter-io.cn"
$env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
注意项目依赖了自定义的 media-kit 分支(github.com/Predidit/media-kit),它从 GitHub 拉取,不走 pub 镜像,所以 git clone 本身仍需要 GitHub 可访问。

核心:修复 Windows 搜索优化

这是自行编译 oneAnime 最常遇到的问题

oneAnime 的搜索优化功能,核心是把用户输入的简体关键词转换成繁体再匹配,因为 Anime1 站点的番剧标题以繁体为主。这个转换依赖 flutter_open_chinese_conventer 库。

问题在于这个库并不支持 Windows 平台。所以你自己编译出的 Windows 版本,搜索框会退化成只支持繁体匹配,输入简体就搜不到东西。官方的解决办法是:另外编译 opencc 项目的动态链接库来解决兼容问题,并把略微裁剪过的 opencc 实现单独开源。

第一步:克隆并编译 opencc.dll

  1. 克隆裁剪版 opencc 实现

    官方仓库:github.com/Predidit/open_chinese_convert_bridge

  2. 用 CMake 构建动态库

    需要 Visual Studio 2019 或更高版本并启用 C++ 桌面开发,以及已安装的 CMake。

  3. 取出 opencc.dll

    构建完成后,在输出目录中找到 opencc.dll,这就是搜索优化需要的动态链接库。

  4. 放进 oneAnime 编译产物目录

    开发环境:放到项目根目录下。
    生产环境:放到编译后的可执行文件所在目录,与 exe 放在一起。

  5. 验证搜索优化已生效

    启动应用 → 进入搜索页 → 输入简体关键词。如果系统能自动转换成繁体并匹配到结果,说明修复完成。

这一步做完,Windows 版编译产物就与官方 Release 基本一致了。官方发布的 Windows 安装包本身就包含了这个动态库,你自编译时需要自己补上这一环。

各平台编译命令

产物与官方 Release 格式一致

目标平台命令产物格式
调试运行flutter run -d windows—
Windows 发布flutter build windows --releaseZIP
Windows 正式版flutter build windows --release --dart-define=BUILD_MODE=releaseZIP
安卓版flutter build apk --releaseAPK
macOSflutter build macos --releaseDMG
Linuxflutter build linux --releaseAppImage / tar.gz

关于 iOS:项目的 iOS workflow 已在 2024 年 7 月被禁用,官方只提供未签名的 ipa 文件供自行签名。如果你自编译 iOS 版,需要自行配置签名证书与描述文件,这一步不在官方流程内。

编译时涉及的第三方项目

fork 二开时必须留意许可与署名要求

项目作用
AnimeOne项目使用了部分来自 AnimeOne 的代码,以处理与 Anime1 的交互
DandanPlayer使用 dandanplayer 开放 API 提供弹幕交互
Bangumi使用 Bangumi 开放 API 提供番剧元数据
media-kit跨平台媒体播放能力(项目使用自定义 fork)
avbuild使用树外补丁实现非标准视频流播放
hive持久化储存能力
Mi Sans内嵌字体,由 Xiaomi 开发和拥有版权
项目本身基于 GPL-3.0 授权。如果你把编译产物分发给其他人,需要同时以相同协议公开你的源码,并且 Mi Sans 字体的版权属于小米,fork 后一并继承。

不想自己编译?

官方提供五个平台的预编译安装包,全部免费

前往下载页