今儿个就唠唠安卓汉化路上那些坑。手痒痒想整点小众国外App用用,结果满屏洋文看得脑壳疼。寻思着自己动手丰衣足食,抄家伙就开干!工具嘛就下了个MT管理器,反编译打包啥的一键搞定,感觉稳得很。
第一步当然是扒安装包。顺手在个大论坛找了个所谓最新版。好家伙,下载、解压、拆包一气呵成。打开反编译出来的文件,瞅见个“res/values”文件夹,里面全是英文的“*”,乐得我一拍大腿——就你了!掏出在线翻译框框一顿怼,把几千行鸟语全换成汉字,打包签名一条龙服务,心满意足点了安装。

小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
然后?翻车现场来了!
安装包死活装不上,提示“签名不一致”。挠头琢磨半天,一拍脑袋:淦!忘记原包签名验证了。这玩意不处理,哪怕汉化得再漂亮也是废品一个。
不甘心,换了个带绕过签名的版本重来。这回装是装上了,一打开直接闪退,弹个“Resources$NotFoundException”。这啥玩意儿?翻回代码一看,好家伙,翻译时手滑把几个“$”开头的系统变量名改了!人家系统认不得这些乱码字符,当场表演原地去世。

第三次学乖了,只敢改纯英文句子。眼瞅着快完工时,MT管理器突然弹个红框:“编码UTF-16 LE错误”。懵逼两分钟才明白,这APK特立独行用了冷门编码。随便存盘汉字直接变火星文,逼得我调成“UTF-8 with BOM”才消停。
等终于编译成功,兴冲冲点开App…界面上汉字全挤成乱码方块了!血压瞬间飙升。查半天才发现原版字体根本撑不住汉字库,强行塞进去的字集体翻白眼。火速从隔壁App里薅了个方正字体扔进“assets/fonts”文件夹才摆平。

以为大功告成测试,结果点开某个功能模块瞬间崩溃。翻日志看到“native crash”差点掀桌——大意了没留意动态注册的本地方法名!汉化时手欠改了个Java方法名,底层C++代码找不到对应函数当场罢工。
结结实实踩完这五个雷,总结出血泪教训:
- 动手前先查签名验证:别学我闷头就干,先看看manifest里有没v2v3签名坑
- 别动带美元符号的变量:看见$attr/$id这种绕道走,改错一行全家升天
- 编码格式要门儿清:打开*先看头文件,UTF-16直接开溜
- 字体缺失提前准备:没自带中文字体的APP,自己塞个.ttf文件保平安
- 手贱改名要三思:动Java代码前先搜JNI_OnLoad,改错名字C++能跟你拼命
折腾三天,手机里这个特工监控软件总算能说中国话了。过程跟排雷似的,走错一步就得重来。各位要是也想汉化小众App,前面这五条拿烟头烫手上,保准少走两斤弯路!



