我的“隐修”装备,必须自己动手汉化
我最近真是被工作搞得心神不宁,一天到晚手机响个不停,脑子里跟浆糊一样。我就想找点偏门的工具,能让我强制安静下来,把每天那些瞎忙活的时间都给挤出来。结果给我挖出来一个国外小众的App,名字叫什么“城市隐修”,功能特别对我的胃口,就是用来追踪心流状态和强迫番茄工作法的,简直是现代人的精神鸦片。但一看界面,全是日文和英文混着来,用起来别扭得要命。你让我盯着一堆看不懂的假名进入“隐修”状态?这不是折磨人吗?
我一开始想走捷径,直接找汉化版,结果网上全是骗子链接,下下来不是病毒就是广告,根本没法用。官方压根就没打算出中文,社区里也没人能提供一个像样的版本。行,既然没人做,那我就自己动手,丰衣足食。这个活儿,表面看是翻译App,实际上是给自己挖了个巨大的坑。
挖出原版:从反编译开始的挣扎
我费了老大劲才从一个犄角旮旯的外国论坛上,用我那三脚猫的日语加谷歌翻译,把原版的APK包给扒拉下来。拿到文件后,第一个坎就是反编译。我第一时间祭出了老伙计APKTool,对着电脑屏幕就是一顿操作。以前我也搞过一些简单的安卓逆向,觉得这应该小菜一碟。
结果第一次跑,啪,报错了。显示是什么资源文件格式不对,工具无法识别这个APK的特殊结构。我当时心想,这不对,这App的作者估计是故意的,不想让人随便改。我把日志文件翻来覆去看了三遍,才发现问题出在它那个特殊的资源打包机制上,用了个很偏门的压缩方式。
- 我尝试了好几种不同版本的APKTool,全都不行。
- 我钻进了几个技术群里求助,发现大家都被这个App折腾过。
- 是靠一个群友丢给我一个他自己修改过的、定制版的APKTool,才勉强把这个大包给拆开了。
拆开后,文件列表那叫一个眼花缭乱,各种Smali代码、二进制文件、加密图片,简直一团糟。我深吸一口气,知道硬仗在后面。
泥地里找字:与编码和Smali的搏斗
我一头钻进去,开始地毯式搜索那些需要翻译的字符串。正常App的文本都会老老实实地放在标准的里面,对?但这玩意儿偏不!它把大部分核心文本都散落在Smali代码和一些奇怪的自定义二进制文件里。我只能像个考古学家一样,一个个文件打开,对比,确认,用关键词去定位那些英文和日文短句。
最惨的是,有些核心的界面文本和提示信息,被作者用一个自制的加密方法包住了,你根本看不到原始文本是什么。我试了几个常用的解密脚本,全军覆没。我没办法,只能用最笨、最危险的方法:在Smali代码里,直接替换那些被硬编码的字符串。这个操作,稍微错一个字节,或者换行符不对,整个App就得崩溃。
我翻译完大概三万多字的文本,眼睛都快瞎了。这段时间,我每天都对着编辑器,感觉自己就是个纯粹的体力劳动者,而不是什么技术博主。文本终于搞定了,然后就是重新打包。这又是一个巨大的坑。
- 第一次打包,成功了,结果安装上去直接闪退。
- 第二次打包,没闪退,但是界面上的中文文字全变成了乱码方块,显示编码不对。
- 第三次、第四次……我反复折腾了快一周,终于摸索出了门道:重新打包的时候,必须在特定的配置文件里,手动添加对中文UTF-8编码的特殊支持,并且调整清单文件里的一些权限定义,不然系统不认这个“私人订制”的版本。
实现“隐修”:工具的控制权
等到我搞定签名工具,把新的APK文件签上自己的密钥(不然手机不让安装),装到手机上,那舒坦劲儿,简直了。整个过程,简直比我上一个项目里被甲方来回折磨还累。但当我第一次点开那个全中文界面的“城市隐修”App,看着它引导我进入专注状态,心里那种满足感是无法用语言形容的。
我不仅是汉化了一个App,我是掌握了自己工具的控制权。把那些碍眼、添堵、阻止我进入专注状态的外语界面,都给驯服了。我的“都市隐修”装备已经完美到位。实践记录就是这样,你得自己动手,把那些不符合心意的工具,按照自己的需求,修理一遍。