写在前面:本文记录我为了回答「安卓上能不能一键装官方 FNF 的 V-Slice mod」所做的调研与实测结论。
结论先行:对普通玩家,第三方 App 目前做不到真正的一键安装;官方推荐的手动流程仍是最稳的路。 若你愿意折腾进阶方案,文末有备选方向。
我是在读这篇 V-Slice 入门与排错文章时产生这个想法的:
Modding FNF V-Slice: Setup, Mobile Workflow, and Troubleshooting
文章把官方移动端装 mod 的流程写得很清楚,核心步骤是:
- 打开官方 Friday Night Funkin'(Google Play,
me.funkin.fnf) - 进入 OPTIONS → OPEN DATA FOLDER
- 在系统文件界面里,把 mod 文件夹复制进游戏沙盒内的
mods/目录 - 重启游戏
同时强调了几条容易踩坑的规则:
- 必须是 V-Slice / Polymod mod(含
_polymod_meta.json),Psych Engine 等社区引擎 mod 不能直接套用 - 注意 api_version 与游戏版本匹配(文内核对过 Desktop v0.8.4、Android v0.8.5 hotfix)
- 避免 双层目录(
mods/MyMod/MyMod/...会导致游戏读不到) - 不要轻信非官方的「Mod APK」重打包
这些说明本身没问题,但对很多手机用户来说,实际操作仍然很麻烦:
- 要先找到正确的 mod 包、解压
- 要理解 V-Slice 目录结构
- 要在文件管理器里完成复制——而 Android 11+ 对
Android/data的限制 又让这一步对小白极不友好
于是我开始想:能不能做一个 Mod Loader,让玩家点一下就把 mod 装进 mods/?
我这里的「一键」指的是:
- 用户选择或下载一个 V-Slice mod(通常是
.zip) - App 自动完成:解压 → 校验格式 → 写入 FNF 的
mods/目录 - 打开游戏即可玩
不包含:Root、拆包改 APK、非官方整合包。
在一加 12 + 官方 FNF v0.8.5 上实测,mod 目录是:
/storage/emulated/0/Android/data/me.funkin.fnf/files/mods/
这是 FNF 自己的 app-specific 外部存储,由游戏在首次运行后创建。
网上不少教程仍写 Android/obb/me.funkin.fnf/mods/,但在我的设备上 obb 路径并不存在——以游戏自己创建的目录为准。
官方 OPEN DATA FOLDER 能打开,是因为游戏通过自带的 DocumentProvider 暴露了自己的数据目录(界面可能显示为 「FNF」 而不是包名),这和第三方 App 随便选一个文件夹不是一回事。
思路:让用户在系统文件选择器里选中 mods 目录,App 获得持久 URI 权限后写入。
结果:失败。
- 选择器没有跳到 FNF 目录,而是回到「全部文件」
- 在
Android/下只能看到media、obj等,看不到data/obb
这与 Google 官方文档 一致:Android 11+ 起,第三方 App 不能 通过 ACTION_OPEN_DOCUMENT_TREE 申请 Android/data、Android/obb 的访问权。
思路:像文件管理器一样申请 All files access,用文件路径直接写 mods/。
结果:失败。
- 系统设置里权限显示已开启(
allow) adb能看到mods/目录存在- 但 Mod Loader 进程访问时:
exists=true,read=false,write=false
Google 官方说明 写得很直白:即使获得 MANAGE_EXTERNAL_STORAGE,仍不能访问属于其他 App 的 Android/data/ 下目录。
这不是一加「单独搞特殊」,而是 Android 11+ 的通用策略(见 Storage updates in Android 11)。
思路:App 只负责下载、解压、校验,再引导用户走官方 OPEN DATA FOLDER 流程手动复制。
结果:能做,但很难叫「Mod Loader」。
和看教程 + ZArchiver 差别不大,只是多了格式校验和固定目录,没有解决最麻烦的那一步。
思路:用户通过无线调试启动 Shizuku Server(shell 权限),Mod Loader 在安装时执行 cp 到 mods/。
状态:理论可行,但不适合大众。
- 需要开发者选项、无线调试配对;重启后常要重新启动 Server
- Play 商店版 Shizuku 在一加 12 上可能显示不兼容,需从 GitHub Releases sideload
- 各机型差异大,需逐台验证;不能当作面向所有玩家的默认方案
更完整的草案见个人仓库:shizuku-mod-loader-design.md
不是因为没人想到,而是 Android 平台把路堵死了:
| 路径 | 第三方 App | 官方 FNF |
|---|---|---|
SAF 选 mods/ |
❌ 系统禁止 | — |
所有文件访问写 Android/data |
❌ 政策排除 | — |
| OPEN DATA FOLDER 内复制 | — | ✅ 官方设计 |
| 游戏内直接接收 zip 安装 | — |
社区里常见的 ZArchiver、Shizuku 等,本质都是 绕路,不是给普通玩家准备的零门槛方案。
FNF 维护者在 GitHub #5366 也讨论过:通过第三方文件管理器硬写 Android/data 可能导致 polymod_meta.json 读失败;正确方式仍是游戏内 Open Data Folder。
暂时没有真正的第三方一键安装。 请继续遵循 V-Slice 官方移动端流程:
简要复述:
- 安装并打开官方 FNF 至少一次
- OPTIONS → OPEN DATA FOLDER
- 把解压后的 mod 文件夹(根目录即有
_polymod_meta.json)复制进mods/ - 重启游戏
装前核对:
- mod 是 V-Slice / Polymod,不是 Psych Engine
_polymod_meta.json的 api_version 与游戏版本匹配- 没有多余嵌套文件夹
- Shizuku 按需安装(sideload,进阶)—— 有机会省略手动复制,但 Setup 成本高
- 向 FunkinCrew 提需求 / PR —— 在官方工程(FunkinCrew/Funkin)里做「从 zip / 外部 App 安装 mod」,这才是可持续的「一键」正路
开源游戏里已有 Android 相关实现可借鉴,例如 DataFolderProvider、PolymodHandler,以及 Options 里的 OPEN DATA FOLDER。
我把调研过程和 MVP 代码放在:
https://github.com/open4game/fnf-v-slice-mod-loader
含可行性报告(中文)与 Shizuku 方案设计,供同好参考。
| 问题 | 答案 |
|---|---|
| V-Slice 安卓装 mod 为什么麻烦? | mod 在 FNF 私有目录;系统不让第三方随便写 |
第三方 App 能一键写入 mods/ 吗? |
一般不能(SAF、所有文件访问均已实测失败) |
| 官方推荐做法? | OPEN DATA FOLDER 内复制(见上文 V-Slice 博文) |
| 有没有进阶 workaround? | Shizuku + shell(小众,不稳定,非 Play 向) |
| 长期最优解? | FNF 官方内置安装入口 |
-
V-Slice 装 mod 与排错(本文出发点)
https://friday-night-funkin.net/en/blog/fnf-v-slice/modding-troubleshooting/ -
Friday Night Funkin' 官方 mod 文档
https://github.com/FunkinCrew/Funkin/tree/main/docs -
Android:Manage all files(
MANAGE_EXTERNAL_STORAGE限制)
https://developer.android.com/training/data-storage/manage-all-files -
Android 11 存储变更
https://developer.android.com/about/versions/11/privacy/storage -
FNF Android mod 安装讨论
FunkinCrew/Funkin#5366 -
个人调研仓库
https://github.com/open4game/fnf-v-slice-mod-loader
最后更新:2026-07-06 · 实测设备:一加 12 · 游戏版本:FNF Android v0.8.5