这事儿说起来也是邪门。我手里有一台退役好久的旧手机,里头一直存着一个十几年前的老游戏APP,功能挺牛,但就是死活没有中文。官方早就不更新了,我发邮件催了八百遍,客服永远就是机器回复,把人晾在那儿。老子越想越不爽,就琢定自己动手把这APP给汉化了,管它是不是正经路子。
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.me
开始动手:把包拆了
第一步肯定是要把安装包弄出来。我先是把手机连上电脑,用那个能把APP导出来的软件扒拉了一遍,弄到了原始的APK文件。拿到文件之后,我可不是直接就能改的。这玩意儿里面全是代码和资源文件,像一锅浆糊。我就上网开始找,看别人是怎么拆安卓包的。
找来找去,找到了一个叫“拆包神器”的工具(反正就是那个能把APK打散的东西)。把它丢进去一跑,好家伙,弹出来一堆文件夹。我盯着那堆XML文件、SMALI代码看了半天,楞是没看明白到底哪个文件管文字。我就知道这趟浑水不好趟。
掉坑里:资源在哪里?
我琢磨着,文字肯定在资源文件里头。普通应用都是在`res/values`里找字符串。但这老应用,作者肯定搞了点小动作,把文字资源给藏起来了。我翻遍了所有的文件夹,只看到一堆乱七八糟的十六进制文件。网上说,有些应用会把重要的资源文件用特殊的办法打包,外人根本动不了,得先解密。
我当时差点就想拉倒了,觉得这活儿不是我能干的。但又觉得不甘心。又找了一圈教程,发现要修改这种被藏起来的字符串,不能光看XML,得去动底层的代码,也就是那些SMALI文件。SMALI那东西,看着头大,全是寄存器和跳转,比汇编还绕人,但这是唯一出路了。
硬啃代码:挖出字符串
我没办法,只能硬着头皮去啃。我打开了那个巨大的SMALI文件夹,挨个文件搜`const-string`这种指令。这就像大海捞针。我得先找到显示界面那个代码文件,然后顺着逻辑一步步摸过去,看到哪儿出现了英文字符串,就把它复制出来,做个记录。
我那几天白天上班,晚上就跟这堆代码较劲。眼睛都快看瞎了。我把所有能找到的字符串,不管长短,全都甩到了一个表格里,然后开始一个一个翻译。翻译倒不难,难的是上下文,有些短语只有在运行起来才知道它到底表达个啥意思,翻译错了就成了笑话。
等我把表格翻完,再把对应的SMALI文件里的英文字符串替换成中文之后,就得重新打包。别说,替换是个体力活,确保位置和格式不能错,错了代码就得崩。
的难关:签名和安装
重新打包工具倒是简单,一键搞定。但安卓系统很烦,它不认你随便改动过的包,除非你给它重新“签名”。不然它就觉得你是个山寨流氓软件,不让你装。
签名这个流程,把我彻底搞崩溃了。我得自己生成密钥,用特定的工具去给这个新的APK盖章。密钥生成步骤就贼多,而且只要一步不对,安装到手机上就直接报错,说“应用未安装”。我来来回回试了七八次,换了三四个签名工具,终于蒙对了一个步骤,成功把签名搞定了。
- 第一遍安装:闪退,啥也没看到。
- 第二遍安装:能打开,但文字错位,挤成一坨。
- 第三遍安装:调整了编码方式,完美运行,文字全都是中文了。
那晚我看着手机里这个用了十几年、第一次显示中文的老应用,心里那种满足感,真的,比我写成功一个大项目都强烈。我成功把一个快死了的APP给救活了,这种成就感太给劲了。这事儿我以后肯定不干第二次了,太磨人了。但也值了,真值了。
