首页 游戏问答 正文

超人安卓汉化

从想玩到动手:为啥非要自己汉化这个超人应用?

就是有点轴。前段时间发现了个老游戏,玩法特别对我胃口,但是它只有外文版,在安卓上跑的。英文对我来说还凑合,但这个应用里头有些专业术语,看来看去总觉得隔了一层纱。玩游戏嘛就是要图个痛快,每次都要猜文本的意思,那叫一个费劲。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.me

我琢磨着,这不就是几千行文本的事儿吗?与其指望别人做,不如自己撸起袖子干。当时我跟群里朋友夸下海口,说周末就能把这个“超人安卓”应用的语言包换过来,结果他们都不信。越是没人信,我这股劲儿就越大。当时我就拍板了:非要把它拿下,搞一个纯中文版出来,证明这事儿没那么玄乎。

工具准备:把盖子掀开看看里面藏了啥

要汉化,得把那个安装包(APK)搞到手。我费了点劲,总算是把应用原版弄下来了。接下来的工作,就是搭环境。

我主要用了三件套:

  • APKTool:用来对付安装包的分解和重构,这玩意儿是主力。
  • JADX:主要是用来瞅瞅那堆让人头疼的DEX文件里到底写了什么逻辑,虽然主要改文本,但有时候文本是硬编码在代码里的,不看代码不行。
  • Notepad++:纯粹就是文本编辑器,用来做大量的翻译替换工作。

环境搭好后,我立马了下去,用APKTool把原版应用包彻底拆散。文件夹哗一下蹦出来一大堆,全是smali代码和资源文件。第一次看这些文件堆,我真是有点抓耳挠腮,但很快就冷静下来,知道我的目标就俩地方:一个是资源文件(就是那些XML和ARSC),另一个就是那些藏着硬编码文本的smali代码。

资源定位:翻箱倒柜找文本

我知道大多数文本都会老老实实地待在文件里,拆包之后,APKTool会把这些资源文件转换成XML格式,方便我们修改。

我1向了res/values目录。一进去,果然找到了一堆文件。我打开一看,几千条英文文本赤裸裸地摆在我面前。这活儿虽然枯燥,但是清晰。

第一步,我先把这些看得见的文本全都复制出来,丢进我的翻译工具里初翻一遍。然后我挨个儿检查,把机翻不靠谱的地方手动修正过来。这一步耗时最久,我盯着屏幕,足足干了一个通宵,眼珠子都快瞪出来了。

但是,事情没那么简单。我发现有些重要的系统提示和按钮上的文字,在里根本找不到!这就是那些老外开发最爱搞的把戏——硬编码。

硬编码攻坚战:追查失踪的文本

文本藏在smali代码里,那就得把smali文件挨个儿一遍。

启动了JADX,开始对DEX文件进行反编译。我没指望能看懂所有Java代码,我只需要根据关键词(比如应用里常用的英文短语)去搜索。一旦定位到代码段,我就会找到对应的smali文件。

Smali代码看起来很像汇编,但只要找到那些用引号括起来的字符串,那就是我要找的文本。我小心翼翼地在smali文件里把英文文本换成了中文。这里有个巨大的坑:中文占的字节更多,如果你不注意编码格式或者长度,重新打包后应用立马就闪退给你看。

我当时就栽了两个跟头,第一次编译,应用安装上去秒退。我花了两个小时才排查出来,原来是我替换的一句中文太长,直接把代码指令给挤爆了。我只好把那句话简化,保证长度和原来的英文文本差不多。这真是在螺蛳壳里做道场。

回封装和收尾:签个名,大功告成

文本全部替换代码也确认没有超长或者乱码的问题后,就到了激动人心的时刻:重新打包。

我用APKTool的重建功能,轰隆一下,把所有零散的文件又塞回了一个新的APK包里。工具提示成功,我心里松了口气,但这还不是结束,安卓系统可不认一个没签名的安装包。

我马上拿出签名工具,给这个新出炉的中文版应用打上了我的“烙印”,也就是数字签名。签名一打完,我就迫不及待地把它传到了我的安卓手机上,点击安装。

安装过程顺利,我心跳加速地点开了图标。

  • 出现的欢迎界面,中文!
  • 然后是菜单栏,中文!
  • 进入游戏/应用界面,所有之前看不懂的专业术语,现在都变成了流畅的中文描述!

那一刻,我感觉自己真的像那个“超人”一样,完成了一个不可能完成的任务。群里那些不信的朋友看到我发出来的截图,一个个都跑过来问我要安装包。我只是淡淡地说了一句:“搞定了,下次有挑战继续找我。” 这感觉,比玩游戏通关还爽。

整个过程虽然费劲,但自己动手丰衣足食,成就感是实打实的。这个实践记录,也算是给所有想自己动手解决问题的朋友,打个气!