今儿个捣鼓个有意思的活儿——把《视灵2》这游戏给它整成中文的安卓版。纯属兴趣,记录一下折腾过程,给大伙儿当个乐子看。
第一步:找原版&拆包
先得找到原版安装包。安卓上这游戏挺老的了,翻了好几个犄角旮旯的资源站才扒拉出来一个看着干净的APK。下载到手,直接丢进某反编译工具(你们懂的,就是那类“瑞士军刀”)里,拆它!整个过程倒是顺溜,没报错。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
第二步:翻箱倒柜找字
拆开一看,里面东西真叫一个乱,跟开了杂货铺似的。关键要找“字儿”放哪儿。经验告诉我,一般文本要么放 里头,要么在 smali代码 里硬编码。我先去资源文件夹翻 res/values 这片地儿,一堆xml文件,挨个点开瞅。
好家伙,大部分都是些界面布局的描述,真正的游戏对话、菜单文字,毛都没见着!那就剩一条路了:硬着头皮啃 smali 代码去。
第三步:代码深海捞针
打开 smali 文件夹,密密麻麻全是 .smali 文件,瞅得我眼都花了。只能用工具里的搜索功能大海捞针。重点搜英文关键词,像 "Options"、"Start Game"、"Exit" 这类游戏里肯定会出现的词儿。一点点翻,终于在一个看着像负责UI的文件里,发现这么一行:
const-string v0, "Options"
没错!就是它!这就相当于程序直接把“Options”这个英文单词写死在代码里了。汉化目标明确:找到所有类似的玩意儿,把引号里的英文换成中文。
第四步:开整替换大法
- 工具搜刮: 用工具在整个 smali 文件夹里搜所有包含
const-string
指令的地方,特别是后面跟着英文双引号的内容。 - 人工智障: 搜索能出来一堆结果,得自己人肉筛选哪些是游戏实际显示的文本。有些是给程序员看的调试信息,这种不能动!一个文件一个文件看,看见像菜单文字、对话文本的,就记下来准备替换。
- 动手替换: 确认是游戏文本后,直接把引号里的英文改成中文。比如
const-string v0, "Options"
改成const-string v0, "设置"
。这步最繁琐也最费眼神儿,生怕改错了地方导致游戏崩溃。
有些地方换行符(\n
)啥的还得保留,不能瞎删。遇到长文本,还得分行改,麻烦死了。
第五步:打包&踩坑
感觉改得差不多了(心里有点虚),用工具把修改过的这一大堆smali文件和资源重新打包成APK。签名! 这一步不能省,不然系统不让装。
激动人心(并伴随着紧张)的时刻到了:安装到手机! 手指头都有点抖。安装完,深吸一口气,点开...
第六步:测试&回炉
开场动画过去,主界面出来了!瞄一眼菜单...
- “开始游戏” ✅ (完美!)
- “载入” ✅ (没毛病)
- “设置” ✅ (Nice!)
- “退出” ✅ (稳了!)
心里刚松口气,点开设置菜单直接傻眼! 有几个选项按钮还是空白或者乱码!急死我了。赶紧把安装包拉出来重新反编译,打开设置相关的 smali 文件仔细看。
好嘛漏网之鱼抓到了!原来有些文本不是单独一行 const-string
,而是和其它代码挤在一块的变量名里,搜字符串的时候没搜到!只能手动再翻一遍,找到几处这种隐藏的英文,一个个改成中文。改完再打包签名安装...
再进设置菜单...成了!选项都显示中文了!悬着的心终于落回肚子里。
一点啰嗦
这活儿整体算下来,难度不大但巨耗时间,关键就在“耐心”俩字。拆包打包流程自动化了,但真正的翻译替换工作,基本是纯靠人眼和人脑一个个找、一个个改。工具再好也避免不了手动筛选和调试崩溃的麻烦,尤其像我这种半吊子,对 smali 语法也就懂个皮毛。
汉化测试完了就删掉了,毕竟版权摆在那里。纯属技术折腾,记录一下自己踩过的坑。最大的感受?以后再碰见这种需要硬啃smali代码的汉化,我得好好掂量掂量了,忒费神!