# tabikaeru_cn **Repository Path**: _0/tabikaeru_cn ## Basic Information - **Project Name**: tabikaeru_cn - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: https://loadchange.github.io/tabikaeru_cn/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-14 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 旅行青蛙 基于 Hit-Point 日文原版 `jp.co.hit_point.tabikaeru` 的非官方中文维护版,参考 1.1.1 的旧译,补充新版文字、图片和字体,并禁用广告。目前经过适配的原版为 **1.9.1(1894)**。 [下载页面(Gitee APK 直链)](https://loadchange.github.io/tabikaeru_cn/) · [Gitee 发布记录](https://gitee.com/_0/tabikaeru_cn/releases) · [GitHub 备用下载](https://github.com/loadchange/tabikaeru_cn/releases/latest/download/travel-frog.apk) · [自动构建记录](https://github.com/loadchange/tabikaeru_cn/actions/workflows/release.yml) [GitHub 仓库](https://github.com/loadchange/tabikaeru_cn) · [Gitee 仓库](https://gitee.com/_0/tabikaeru_cn) 手机上的应用名是 **旅行青蛙**,包名为 `jp.co.hit_point.tabikaeru.cn`。可与日文原版、国内版同时安装。后续 Release 保持同一签名和递增 `versionCode`,覆盖安装会保留本应用存档。 ## 汉化和广告处理 - 577 条维护词条;当前识别到 565 种序列化文本、1,136 个字段,以及 16 处运行时替换。 - 101 张图片处理,3 个图集重新排布,3 个字体换为 Noto Sans CJK SC 子集。 - UnityFS 资源使用 32 MiB 字典的 LZMA 无损压缩,保留 ARM64、ARMv7 和全部游戏资源;构建时解压回读,逐项核对资源字节。APK 必须小于 Gitee 单附件 100 MB 上限才允许镜像。 - 禁用 AdMob、Pangle 的 Android 广告初始化、加载和展示接口,移除广告启动组件及广告标识权限。 - 在 ARM64、ARMv7 游戏代码中关闭广告请求、展示、重试和推广入口;隐藏推广图片界面。每次按 IL2CPP 方法名称和签名重新定位,不沿用旧版地址。 - 普通旅行、庭院、商店、背包和相册使用本地存档;基本玩法可离线使用。联网权限保留供公告等非广告功能使用。 - 不改变货币数量、付费权益或 Play Pass 状态。广告奖励不可用。独立包名、非官方签名下的 Google Play 购买等服务未作为可用能力承诺。 游戏内照片、纪念品原画上的装饰性日文,以及服务器公告和外部网页不属于离线资源汉化范围。SDK 的未使用类保留用于类型兼容,广告调用和启动入口已禁用;并非把所有 SDK 字节从 APK 中删除。 ## 自动更新与发布 [release.yml](.github/workflows/release.yml) 在以下情况下运行: | 触发条件 | 行为 | | --- | --- | | 每天 UTC 03:17(北京时间/新加坡时间 11:17) | 下载并核验原版 Latest;与最后成功 Release 比较,有新版或上次未发布的源码时构建 | | 推送到 `main` | 构建当前源码与最新原版,通过检查后发布 | | Actions 手动运行 | 同样检查、构建和发布;输入未变则跳过 | 定时任务由 GitHub 调度,可能延迟;长期没有仓库活动时 GitHub 也可能停用定时任务,恢复后可手动启用。原版使用 APKPure 的独立 APK 下载接口作为分发镜像,版本从 APK 清单读取,接受文件前必须核验 **Hit-Point 原始发布者 SHA-256 证书**。这代表镜像所提供的最新完整 APK,可能晚于 Google Play 分批推送。下载或签名检查失败时本轮失败,下次重试。 发布流水线是:工具准备 → 原版身份及防降级核验 → 兼容性检查 → 汉化与去广告 → 对齐和签名 → 最终 APK 回读验证 → 草稿 Release 上传 → 核对所有上传文件的 SHA-256 → 公开 Release。 - `project.json` 集中配置应用名、包名、证书和版本号策略。 - `upstream.lock.json` 提供可复现的已适配基线;定时任务另外读取最后成功 Release 的 `build-info.json`,无需机器人回写提交,不会产生发版循环。 - Release 标签为 `v<原版版本>-cn.r`,安装版本号为 `2000000 + run_number`。工作流重新运行保留同一个编号,已发布的相同输入不会重复发布;旧任务不能覆盖较新的版本。 - 不要删除并重建发版工作流的计数历史或调低 `version_code_base`。若要重置流水线,应先调整该基数,使新编号高于所有已发布版本。 - 所有生成目录都会从对应原版重新构建;不复用上一版本的汉化结果。 - 新增日文、图集变化、元数据/引擎升级、Android 组件变化或广告接口签名变化会阻止发布,并在 Actions 保存诊断报告。**自动化不会凭空翻译新增文本,也不会绕过兼容性检查发出未适配版本。** 维护者补译/更新适配后推送,即重新构建发布。 - 失败上传保留为草稿,重新运行可恢复。Release 附 APK、SHA-256、原版来源、源码提交、构建和验证报告。 - 每个新 Release 同时上传固定文件名 `travel-frog.apk` 及其校验文件,与带版本号的 APK 字节一致,并一起通过上传校验后公开。 - [gitee.yml](.github/workflows/gitee.yml) 在 GitHub 构建成功后同步源码、标签和最新 APK 附件。Gitee Release 先标记为预览版;全部附件匿名下载并通过 SHA-256 校验后才正式公开。中断可重试,不允许旧版本覆盖新版本。 - 初次镜像包含跨境上传和下载,工作流预留 60 分钟并输出传输进度。成功后记录每个附件不可变的 ID、大小和 SHA-256;之后检查同一版本时复用校验结果,附件 ID 或内容身份变化会重新下载核验。 - 镜像成功后,[pages.yml](.github/workflows/pages.yml) 读取已验证的 Gitee 附件,生成 APK 直链并部署下载页。页面不调用 API,不需要用户登录;Gitee 上传或验证失败时保留上次页面。 - CI 的 Gitee 元数据查询使用 `GITEE_TOKEN`,下载页使用官方公开附件地址,避开匿名 API 的查询限额。附件下载和 SHA-256 核验始终不带 Token,访客可以直接下载。 - Gitee 镜像作业单独使用 GitHub 托管的 macOS runner;Linux 构建作业只负责 APK 构建和 GitHub Release,便于独立维护跨境传输链路。 - Gitee 普通仓库附件总额限 1 GB,因此保留最近 3 个完整镜像,以及当前线上页面仍在使用的版本。清理前逐个核验 GitHub 备份,只删除本自动化上传的旧附件;源码、标签、发布说明及人工附件保留,完整历史下载保存在 GitHub。被新版本取代的未完成镜像也按同一规则归档。 GitHub Actions Secrets: | Secret | 内容 | | --- | --- | | `ANDROID_SIGNING_KEY_BASE64` | 现有 PKCS#12 签名文件的 Base64 | | `ANDROID_SIGNING_PASSWORD` | 该签名文件密码 | | `GITEE_TOKEN` | 对 `_0/tabikaeru_cn` 有源码推送、Release 和附件管理权限的 Gitee Token | CI 不会生成替代密钥。签名证书 SHA-256 固定为 `46f34d871f28be0474fe8ff0b70dd70adfd0963243a9e6ac02988a12ca5839f7`。密钥、密码及个人存档不得进入源码、缓存、日志或发布附件。 ## 本地构建 支持 **macOS arm64** 和 **Linux x86_64**。需要 Python 3.12、curl;Linux 另需 Java 21 和 .NET 8(CI 会准备)。macOS 的两项运行时由准备脚本按校验值下载。 ```sh python3.12 scripts/setup.py .venv/bin/python scripts/upstream.py .venv/bin/python scripts/build.py .venv/bin/python scripts/verify.py ``` `upstream.py` 默认下载锁定的基线;检查并使用最新版: ```sh .venv/bin/python scripts/upstream.py --latest .venv/bin/python scripts/build.py --upstream work/upstream.json .venv/bin/python scripts/verify.py ``` 工具来源与哈希在 [sources.lock.json](sources.lock.json),Python 固定依赖在 [requirements-lock.txt](requirements-lock.txt)。`setup.py --offline` 只使用已核验的本地工具和依赖。 本地构建需要在被 Git 忽略的 `private/` 恢复现有 `tabikaeru-cn.p12` 和 `signing-password.txt`(别名 `tabikaeru-cn`)。默认生成 `dist/tabikaeru-<原版版本>-cn.dev.apk`,安装编号为 2000000,仅用于开发;公开升级包使用 Actions 生成的递增版本。 ```sh adb install -r dist/tabikaeru-1.9.1-cn.dev.apk .venv/bin/python -m unittest discover -s tests -v ``` 不承诺不同机器输出 APK 的每个字节完全一致;Release 会提供对应文件的真实哈希。 ## 下载页面 `site/` 是无 JavaScript、无第三方请求的静态页面,只包含插画背景和安卓下载链接。使用两种比例的 WebP 背景适配电脑和手机,并保留键盘焦点和屏幕阅读器标签。 [pages.yml](.github/workflows/pages.yml) 在 Gitee 附件镜像成功后自动部署 GitHub Pages,也可手动运行。完整链路为:推送 `main` / 每日检查 → GitHub 构建并发布 → Gitee 镜像并验证 → 更新页面直链。首次启用仓库 Settings → Pages 时,选择 **GitHub Actions** 作为构建来源。 `site/index.html` 的模板链接指向 Gitee 发布记录;正式部署必须先运行 `python3 scripts/gitee.py render-site --directory dist/site`,再发布 `dist/site/`,才能得到直接下载最新已验证 APK 的链接。本地外观预览:`python3 -m http.server 4173 --directory site`。插画源文件及生成方式见 [artwork/pages/README.md](artwork/pages/README.md)。 Gitee 仓库同步保存 `site/` 的完整静态文件,并通过本 README 提供下载页入口。2026-09-14 核对时,Gitee 已登录仓库的服务菜单没有 Pages,仓库 Pages 地址返回 404,因此目前公开下载站由上面的 GitHub Pages 托管。 ## GitHub / Gitee 同步提交 GitHub 是构建和发版的主仓库,Gitee 同步保存代码和 APK。[gitee.yml](.github/workflows/gitee.yml) 自动同步 GitHub `main` 上的提交及发布标签,包括网页上的提交;不使用强制推送。当前工作目录也已配置 `gitee` 远程,并让 `origin` 同时向两个仓库推送。本机执行 `git push origin main` 或 `git push`,会依次推送 GitHub 和 Gitee;拉取仍从 GitHub 获取。 新克隆的工作目录需要重新配置,因为 Git 的远程设置不随提交分发: ```sh git remote add gitee git@gitee.com:_0/tabikaeru_cn.git git config --local --replace-all remote.origin.pushurl git@github.com:loadchange/tabikaeru_cn.git git config --local --add remote.origin.pushurl git@gitee.com:_0/tabikaeru_cn.git git config --local remote.pushDefault origin git push origin main ``` 两边的推送独立执行;其中一边失败时,处理错误后重试同一命令即可。保持快进提交,出现分歧先拉取检查。 如需手动补同步,可在本地运行: ```sh git fetch origin --tags git merge --ff-only origin/main git push origin main git push gitee --tags ``` 代码镜像或附件上传失败时,可重跑 Actions 的 `Mirror to Gitee`。本地使用 `GITEE_TOKEN` 环境变量(或被忽略的 `private/gitee-token.txt`),运行 `python3 scripts/gitee.py sync` 同步代码;已登录 `gh` 后运行 `python3 scripts/gitee.py publish-latest` 补传最新完整 Release。两边 APK 字节保持一致。 ## 维护入口 | 文件 | 用途 | | --- | --- | | [localization/zh-CN.json](localization/zh-CN.json) | 日文原文 → 中文译文;保留占位符和富文本标签 | | [localization/sprites.json](localization/sprites.json) | 图片标签文本、样式及旧图引用 | | [localization/reference-1.1.1.json](localization/reference-1.1.1.json) | 旧译与来源索引 | | `localization/artwork/reference-1.1.1/` | 74 张已核验的旧版参考 PNG;日常构建不依赖旧 APK | | [compatibility/](compatibility/) | 已审阅的引擎、运行时字串、广告类和方法签名;更新需重新审阅 | | [scripts/patch_assets.py](scripts/patch_assets.py)、[graphics.py](scripts/graphics.py) | 文字、字体及图片补丁 | | [scripts/ads.py](scripts/ads.py)、[native_ads.py](scripts/native_ads.py) | Android 与 IL2CPP 广告补丁及核验 | | [scripts/upstream.py](scripts/upstream.py)、[release.py](scripts/release.py) | 版本发现、防降级、幂等和完整发布 | | [scripts/gitee.py](scripts/gitee.py) | Gitee 镜像、附件验证、旧版归档和页面下载链接 | 新上游先运行最新版检测和构建,查看 `work/reports/compatibility.json` 与构建错误,补齐译文、图集和已变化的广告接口,再在设备上检查界面。不能仅更新兼容性哈希来消除失败;需确认新接口不会启动或展示广告。 验证保留 Unity 对象身份、非目标字段、占位符、字体字形及图集像素;DEX 回读只接受明确补丁及等价的默认字段编码;native 库除审阅的函数入口外逐字节保持原版。静态检查不能替代新版本的实机布局与长时间游玩检查。实机记录见 [docs/device-validation.md](docs/device-validation.md)。 国内版使用不同引擎、服务端进度和中国地区内容,不能直接复制存档。迁移调查见 [docs/migration-feasibility.md](docs/migration-feasibility.md)。任何个人迁移数据都只保存在忽略目录中,不随 Release 分发。 原游戏、旧汉化和字体归各自作者;来源见 [NOTICE.txt](NOTICE.txt)。字体许可随项目和 APK 保留。