今天跟大家聊聊我最近搞的一个挺有意思的实践:重建安卓汉化。这事儿折腾起来比我想象的要麻烦,但也挺有成就感的。
起因:
事情是这样的,前段时间我淘到一个老安卓游戏,特别喜欢,但是全英文的,玩起来有点费劲。就想着能不能自己汉化一下,顺便也回顾一下以前学的一些安卓逆向的知识。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
准备工作:

得把游戏apk文件搞到手。这个简单,网上随便一搜就有了。然后就是准备工具,主要用到这几个:
- Apktool:这个是反编译和回编译apk的利器,必须有。
- MT管理器:这个用来解压apk,查看里面的文件结构,也挺方便的。
- 文本编辑器:推荐用Notepad++,或者其他的,能方便查找替换文本的就行。
开始干活:
1. 反编译APK
先把apktool装然后用命令行反编译apk:
apktool d *
执行完这个命令,会在当前目录下生成一个和apk同名的文件夹,里面就是反编译后的文件。
2. 查找文本
用MT管理器打开反编译后的文件夹,开始找文本。一般来说,文本都藏在`res/values`目录下的`*`文件里。有些游戏会把文本放到代码里,那就得看smali代码了,这个比较麻烦,先不管它。
打开`*`,里面全是键值对,像这样:
<string name="hello">Hello World!</string>
把里面的英文改成中文就行了。比如说,把`Hello World!`改成`你世界!`。
3. 翻译
这一步是最费时间的,要把所有的英文文本都翻译成中文。如果是小游戏,文本不多,还能忍受。要是大游戏,文本量巨大,翻译起来简直要命。我这回汉化的这个游戏,文本量还算适中,花了两天才搞定。
4. 回编译APK
文本翻译完后,保存`*`,然后用apktool回编译apk:
apktool b xxx
这里的`xxx`是反编译后的文件夹名。执行完这个命令,会在`xxx/dist`目录下生成一个新的apk文件,这就是回编译后的apk。
5. 签名
回编译后的apk还不能直接安装,需要签名。可以用apksigner或者jarsigner来签名。
我用的是apksigner,这个工具在Android SDK的`build-tools`目录下。签名命令如下:
apksigner sign --ks * --ks-pass pass:123456 --out xxx_* *
这里的`*`是你的签名文件,`123456`是密码,`*`是回编译后的apk,`xxx_*`是签名后的apk。
6. 安装测试
把签名后的apk安装到手机上,看看汉化效果。如果一切顺利,游戏里的英文就都变成中文了。如果发现有错误,或者有漏掉的文本,那就回到第二步,重新查找翻译。
遇到的坑:
这回汉化也遇到了不少坑,主要有这么几个:
- 乱码问题:有些游戏的文本是UTF-8编码,有些是其他的编码,如果编码不对,就会出现乱码。解决办法是把`*`的编码改成UTF-8。
- 字符串格式化问题:有些字符串里有占位符,比如`%s`、`%d`之类的,翻译的时候要小心,不要把占位符搞错了。
- 特殊字符问题:有些文本里有特殊字符,比如`&`、`<`、`>`之类的,要转义一下,不然会报错。
这回重建安卓汉化,让我对安卓逆向有了更深的了解。虽然过程有点繁琐,但是看到自己汉化的游戏能正常运行,还是很有成就感的。以后有机会,还会继续折腾其他的安卓游戏。



