不提了,这事儿纯属闲得蛋疼自己给自己找麻烦。
大家知道,就喜欢折腾点别人不爱干的事。前段时间迷上了一个国外的安卓工具叫Sigma,功能是真强大,但就是全英文,有些专业点的名词看着头大,查字典都嫌累。我就寻思,干脆自己给它整个汉化版本出来,反正技术宅嘛不能白叫。
第一步:把原文件“抓”下来
我立马着手干。第一件要做的事情,就是把这个Sigma的APK安装包“抓”下来。我先是从官网找到了最新的版本,然后把它拷到了电脑上。这是基础,文件都没有,谈何汉化?
我用了一个叫“Apktool”的工具。这玩意儿就像个拆解专家,能把安卓的安装包(APK)给彻底拆散了,变成一堆咱们能看得懂(至少是机器能看得懂)的文件,主要是资源文件和Smali代码。
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
- 抓包: 确认是最新、最纯净的那个APK文件。
- 拆解: 命令行敲下去,等着它把文件一个个吐出来。
拆完一看,我当时就傻眼了。我本来以为,它会像普通的安卓应用那样,在`res/values`里面有个`*`文件,我只需要在这个XML文件里,把英文后面对应写上中文,齐活!
结果?根本没有!或者说,那个文件里头只有稀稀拉拉几句,根本不是App里头那些密密麻麻的文字。我心里咯噔一下,知道这事儿没那么简单了。
第二步:硬着头皮“刨”Smali
没有`*`,那文字肯定就是写死在代码里了。安卓的代码编译后,不是Java,而是Smali,一种看着跟汇编差不多的东西。我硬着头皮,开始在那个Smali文件夹里头“刨”土。
这过程有多痛苦?可以这么说,就像是在一堆乱码里找你女朋友的电话号码,还不能找错一个数字。我一个文件夹一个文件夹地翻,一个文件一个文件地看。我的策略很简单粗暴:
- 定位关键英文: 在手机上打开App,看到哪个英文词出现频率高,或者功能名称最重要,我就记下来。比如“Connect”、“Start Task”、“Setting”这些。
- 搜索替换: 用强大的代码编辑器,直接全局搜索我定位的那些英文词。
找到了!那些英文词果然被藏在Smali代码的`.const-string`后面。比如,它原本是:
`.const-string v0, “Connection Failed”`
我得把它改成:
`.const-string v0, “连接失败”`
这个过程是纯体力活,一点技术含量都没有,就是耗时间、耗精力。而且你不能瞎改,你得确保你改的中文,别比原来的英文长太多,不然APP界面可能会排版错乱,文字被截断。
我每天下班回去,不玩游戏不看剧,就对着这堆Smali文件,一个词一个词地抠。有时候抠半天,发现改完一编译,字体大小或者布局不对,还得回去重新调整中文措辞,缩短长度。
第三步:打包、签名与无尽的闪退
我自认为把主要的几百个关键字符串都改完了,心里美滋滋的。下一步就是“封包”,把这个改动过的App重新打包成一个新的APK文件。
打包过程倒是不难,Apktool几秒钟搞定。但打包完,你不能直接装到手机上,手机会不认,因为它没有“签名”。于是我用了一个叫`jarsigner`的工具,给自己这个汉化版App签了个名,相当于盖了个私人章,让手机相信它是一个“合法”的软件。
然后就是最激动人心的时刻了,把这个自制的汉化包传到手机上,点击安装。
第一次:安装成功,点开,App欢迎画面刚出来,“嘭”的一下,闪退了。我心里一万头草泥马奔腾而过。回头检查Smali,可能是哪个地方的字符串编码没处理或者哪个关键代码被我手贱动了。
第二次:我小心翼翼地回滚了几个可疑的修改,重新打包签名,安装。这回App总算能进去了,但一点击设置按钮,又闪退了。我继续排查,发现是“Setting”那个字符串,它不只是显示文字,可能还是一个方法的调用名,被我改了中文,它找不到了。
来来回回,一共折腾了七八次,每次都是:修改 -> 打包 -> 签名 -> 安装 -> 闪退/部分功能失效 -> 回滚修改,这流程走得我眼睛都快花了。那段时间我茶饭不思,就想着怎么把这个App给彻底降服。
最终:成了!可以愉快分享了!
在第九次尝试的时候,我吸取教训,把那些明显关联代码逻辑的词,都保留了英文,只改了那些单纯显示给用户看的文字。这下,终于,汉化版的Sigma稳稳地跑起来了。
看着那个原本全是英文的界面,现在舒舒服服地显示着“连接成功”、“开始任务”、“高级设置”等中文,那种成就感,真不是拿钱能买到的。这个过程,让我对安卓App的底层结构,有了更深的理解,也算是意外的收获。
虽然整个过程磕磕绊绊,但总算是把这个汉化包彻底弄出来了,现在我可以给圈子里那些不会英文的朋友分享了。折腾完这一趟,别的我不敢说,起码现在我对着Smali代码,也能看懂个七七八八,知道它背后的运行逻辑了。值了!

