Skip to content

Instantly share code, notes, and snippets.

View zhangzhibin's full-sized avatar

Zhang Zhibin zhangzhibin

View GitHub Profile
@zhangzhibin
zhangzhibin / gist-如何一鍵安裝-v-slice-mod-zh-tw.md
Created July 6, 2026 07:51
Android 上一鍵安裝 FNF V-Slice mod 的可行性探索(繁體中文)

如何一鍵安裝 V-Slice Mod(Android 探索筆記)

結論先行: 對一般玩家而言,第三方 App 目前無法可靠地一鍵把 mod 裝進官方 FNF 手機版。最穩定的仍是 官方手動流程(OPEN DATA FOLDER)。進階變通方案存在,但不適合大眾。


為什麼會研究這個問題

我是在讀這篇 V-Slice 入門與排錯文章時產生這個想法的:

@zhangzhibin
zhangzhibin / gist-how-to-one-click-install-v-slice-mod.md
Created July 6, 2026 07:48
Exploring one-click V-Slice mod installation on Android

How to One-Click Install V-Slice Mods on Android (An Exploration)

TL;DR: For typical players, a third-party app cannot reliably one-click install mods into official FNF Mobile today. The official manual workflow (OPEN DATA FOLDER) remains the most stable path. Advanced workarounds exist but are not mass-market friendly.


Why I started looking into this

I was reading this V-Slice setup and troubleshooting guide:

@zhangzhibin
zhangzhibin / gist-如何一键安装v-slice-mod.md
Created July 6, 2026 07:47
Android 上一键安装 FNF V-Slice mod 的可行性探索总结

如何一键安装 V-Slice Mod(Android 探索笔记)

写在前面:本文记录我为了回答「安卓上能不能一键装官方 FNF 的 V-Slice mod」所做的调研与实测结论。
结论先行:对普通玩家,第三方 App 目前做不到真正的一键安装;官方推荐的手动流程仍是最稳的路。 若你愿意折腾进阶方案,文末有备选方向。


起因:官方流程对新手并不友好

我是在读这篇 V-Slice 入门与排错文章时产生这个想法的:

@zhangzhibin
zhangzhibin / markdown-helper.md
Last active November 28, 2024 02:37
Write a custom markdown block helper for Handlebars, more info contact https://freeapplegame.com

Steps:

  1. install marked
npm install marked
  1. create a helper
import { marked } from 'marked';
@zhangzhibin
zhangzhibin / install-tr-control-gitee-fixed.sh
Last active February 18, 2023 16:34
fixed install-tr-control script to overcome the installation error: cp: cannot stat '/tmp/tr-web-control/transmission-web-control-version/src/.': No such file or directory, refer to https://xmanyou.com/transmission-web-control-error-404-not-found/
#!/bin/bash
# 获取第一个参数
ARG1="$1"
ROOT_FOLDER=""
SCRIPT_NAME="$0"
SCRIPT_VERSION="1.2.3"
VERSION=""
WEB_FOLDER=""
ORG_INDEX_FILE="index.original.html"
INDEX_FILE="index.html"
@zhangzhibin
zhangzhibin / loadJsAsync.ts
Last active September 24, 2021 04:46
Dynamically load a js script and set parameters
// JavaScript 根据需要动态加载脚本并设置参数
// refer to https://xmanyou.com/javascript-dynamically-load-script-and-set-parameters/
async function loadJsAsync(src:string, async:boolean=false, options?:any) {
return new Promise<void>((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.async = async;
if(options) {
for(const key in options) {
// script[key] = options[key];
@zhangzhibin
zhangzhibin / waitUntil.ts
Created September 24, 2021 01:31
javascript/typescript wait until condition meet
// TypeScript/JavaScript 异步等待方法的实现
// refer to https://xmanyou.com/javascript-wait-until-condition-meet-or-timeout/
function waitUntil(condition:()=>boolean, timeout?:number, interval?:number) {
if (timeout === void 0) { timeout = 0; } // if not set, wait forever
if (interval === void 0) { interval = 50; } // default interval = 50ms
let waitHandler;
let timeoutHandler;
return new Promise<void>(function (resolve, reject) {
var waitFn = function () {
if (condition()) {
@zhangzhibin
zhangzhibin / fbig-shortcut.ts
Created July 16, 2021 08:14
create shortcut in Facebook Instant Game, visit https://xmanyou.com for more.
function tryCreateShortcutAsync(){
if(!FBInstant){
console.info("FBInstant Not Available");
return;
}
console.info("Try Create shortcut");
FBInstant.canCreateShortcutAsync()
.then(function(canCreateShortcut) {
@zhangzhibin
zhangzhibin / build.gradle
Last active July 16, 2021 06:46
set better name for output file in android studio with build.gradle https://xmanyou.com/android-studio-build-file-with-better-name/
defaultConfig {
applicationId "com.xmanyou.my.game"
minSdkVersion 21
targetSdkVersion 30
versionCode 28
versionName "1.2.5"
def gitCommit = "git rev-parse --short HEAD".execute().text.trim()
archivesBaseName = "${defaultConfig.applicationId}-${defaultConfig.versionName}v${defaultConfig.versionCode}-${gitCommit}"
println 'outputFileName: after = ' + archivesBaseName
@zhangzhibin
zhangzhibin / IronsourceHelper.ts
Last active July 27, 2021 02:06
laya + ironsource android sdk helper, contact me at https://xmanyou.com
module SdkHelper{
export class IronSourceHelper{
public static ironsource:Laya.IPlatformClass;
public static init(){
if(!this.ironsource){
this.ironsource = Laya.PlatformClass.createClass("sdkhelper.IronSourceHelper");
}
let js1 = `window["IronSourceHelper"].onInterstitialReadyChange(%s)`;