当时拍脑门决定汉化这个安卓工具,以为顶多两周搞定,没想到硬生生折腾了俩月。要不是摸出门道,差点把笔记本给砸了。
第一步就栽进坑里
直接解压apk看到*文件乐坏了,心想字符串肯定都在这儿堆着。反手扔进AXML编辑器,结果满屏资源ID看得眼冒金星。更绝的是菜单按钮的”Save”死活搜不到,急得我半夜三点在客厅转圈圈。后来把apk扔进Jadx反编译才看到真相——这破软件居然把文字全写成代码里的字符串,跟藏私房钱似的塞在java文件缝里。
笨办法硬刚三周
当时心一横:不就是三百多个文件吗?撸起袖子手动替换呗!结果刚改完二十个文件,重新打包安装直接闪退。反编译一比对差点吐血:
- 漏改了某个Fragment里的setText
- 把%s占位符当普通汉字给翻译了
- 手抖把true写成”真的”
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
手机架在床头自动测试,凌晨四点突然弹窗显示”你成功地卸载了”,气得我把枕头砸墙上——那是我翻译的卸载确认按钮!
神器救场发现玄机
第三周在Github翻到个脚本小子写的批量替换工具。这玩意儿虽然长得丑,但能自动过滤特殊字符和占位符。结果你们猜怎么着?跑完脚本安装报错,日志显示资源引用冲突。原来软件里三十多个”back”按键,有二十个调用*_button,剩下十几个直接写死成”back”!
布局文件埋着地雷
熬到第40天才发现大坑:所有对话框文字全藏在layout的xml里。用文本编辑器批量替换时,不小心把@id/btn_confirm也翻译成”确认按钮”,编译直接炸成烟花。更绝的是发现某个Activity里藏着彩蛋:
if(getIntent().getStringExtra("secret").equals("Boom")) {
showDialog("炸你");
要没看见这段,上架当天用户点个按钮就能收获惊喜。
血泪换来的五点干货
- 别信*!先反编译看java代码,我们遇到的软件只有15%字符串在资源文件
- 像超市进货那样检查占位符,%s、%d漏一个就崩溃(把”还剩%d天”译成”还剩d天”被测试笑半年)
- 改*时先把@符号用[]框起来,避免把ID当文字翻译
- 替换前备份原始编码,有次把UTF-8的文件存成GBK,所有问号方块排队跳广场舞
- 测试时带台老人机,4.4系统跑出来的乱码能让你怀疑人生
看到中文界面那刻,比当年儿子开口叫爸还激动。这哪是汉化,分明是跟开发者在代码里捉迷藏。现在听见”反编译”仨字还手抖——都是让那六十天给磨的!