开发者参与
补丁层完全开源,CI 可复现构建。欢迎从 issue 定位一路做到 PR。
仓库
MagirecoCN-Revival-Project/magirecocn-legacy-client
这不是从零写的客户端:基础 APK(io.kamihama.totentanz)反编译成 apktool 工程入库,CI 可重新构建;我们的改动集中在补丁层:
patch/src/main/java/io/kamihama/magianative/ ← Java 补丁,唯一事实来源
magia-native/src/MagiaLegacy.cpp ← native hook(i18n/字体/启动链)
smali*/ ← 引擎本体(基本不动)
tools/ ← 测试套件与构建前置检查本地验证
提交前至少跑过这些(CI 会复验):
bash
bash tools/check-native-syntax.sh # native 语法预检(桩头文件,无需 NDK)
python3 tools/check-native-string-layout.py # 双 ABI string 布局合同
python3 tools/check-engine-i18n-prefix.py # i18n 前缀规则合同
python3 tools/check-base-urls.py # 热更地址一致性
python3 tools/check-debug-flag-boundary.py # 调试开关边界协作流程(主干开发)
- 所有人直接提
main;分支只有hotfix/*(修红灯)与surgery/*(核心层大手术)两类例外,寿命以小时/天计,归档打 tag 后即删。 - 一个逻辑改动一个 commit,Commit message 用 Conventional Commits (
feat(hook):/fix(inject):),正文说明改动理由,并带一行文档: …声明文档影响(commit-msg 钩子强制)。 - 开工前读 CONTRIBUTING.md, 并在 ACTIVE.md 登记你在动哪片(10 秒成本,消灭对撞)。
- CI 守门:push 复验 → 全量回归 → 通过自动打
last-green锚点; 红灯期间只允许修复主线的提交。 - 半成品功能用调试开关目录隔离,代码进 main、功能默认关。
翻译贡献
- 引擎硬编码串(弹窗、战斗台词、下载/网络错误): 改
magireco-cn-patch的madomagi/engine_i18n.tsv,随 JS 热更包下发,不用重出 APK。 - 前端(WebView 一半):同仓库
i18n/下四张 TSV 对照表。 - 判一句日文该归哪一层:i18n/README.md 有判据,别猜。
提 PR 前
- issue 里先说清楚要做什么,避免撞车(或看 ACTIVE.md)。
- 改动路径决定验证级别:动了核心 hook / 注入时序 / WebView 桥的, 需要实机测试记录。
- 一个 PR 只做一件事。