最近接手了个安卓应用汉化项目,原本以为就是改改字符串的事儿,结果踩的坑比我家门口修路的坑还多!气得我连夜折腾,总算把关键问题都摸透了。今天就唠唠实战中遇到的五大坑,顺便分享我的踩坑记录。
一上来就栽在资源文件上
打开APK文件把*拽出来,直接用记事本改中文,打包安装后界面直接乱码!后来用AXML编辑器打开才发现,这玩意儿对编码格式贼敏感。必须用UTF-8带BOM头保存,重新打包后总算正常显示汉字了。顺手把汉化资源分包存放,主包留英文,测试包放中文,切换语言再也不怕崩了。
动态加载的坑差点让我砸键盘
汉化完安装包正嘚瑟,突然发现设置页的"关于我们"栏目还是英文。查了半天发现开发者把文案写在.so库里,这老六操作!赶紧掏出IDA反编译动态库,在.data段翻到字符串改成中文,重新编译时又报内存溢出。把中文字符转成Unicode编码序列(比如"\u4E2D\u6587")才塞进去。
字体渲染的幺蛾子最闹心
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
换中文后界面频繁闪退,logcat疯狂报"typeface not found"。原来有些厂商深度定制系统,把思源黑体删得干干净净!干脆把字体文件塞进assets文件夹,在Application里加段代码动态加载。测试时发现Android 4.4以下版本还不支持,又得判断系统版本做兼容处理。
字符串拼接搞崩心态
改到用户协议页面时,"已阅读%d条款"这种动态拼接的句子全乱套。中文语序变成"条款%d已阅读",直接把语料库里的占位符用[]包起来标注顺序。搜索出98处拼接点重新调整顺序,改到第53处时手抖写错变量名,debug半小时才发现——建议改这种地方时边改边备注!
权限问题让模拟器变砖
深夜赶工时adb install总提示INSTALL_FAILED_VERIFICATION_FAILURE,原来测试机开了Google保护机制。关掉验证还不行,发现新版本Android禁止直接安装修改过的debug包。用adb install -t -r --abi armeabi-v7a强塞进去,测试机弹出警告时手抖点错,差点把正在跑的自动化脚本清了!
核心教训就五条:
- 资源文件改编码比改内容更重要
- 动态加载库里的文字得玩转Hex编辑
- 带字体文件比指望系统靠谱
- 处理拼接语句要像排雷先标位置
- 测试机永远保持开发者模式
搞到凌晨三点半终于完工,发现中文"确定"按钮被截断是因为没调整布局文件宽度... 这波操作下来,头发少了十三根,咖啡喝了五杯,但下次再遇到汉化项目,我绝对能少走三小时弯路!