写在前面:
从Recovery模式本地化文本显示我们了解到,recovery是支持恢复出厂设置(正在清楚...)和安装升级包(正在安装系统更新...)本地化文本显示的,除了这两种recovery同样支持“无命令。”和“出错了!”两种文本实现本地化显示,如下:
图1:
图2:
图3:
图4:
而且通过对前一篇博文的描述我们明白这四种文本本地化显示是通过图片合成的方式将各种语言的相关文本合成在同一张图片中,一般来说这四张图片是平台默认提供的,我们并不对其进行定制,但是谷歌提供给我们的四种文本中并不是支持所有语言,即便是支持了所有语言,但是如果有需要要求我们对这四种文本进行修改的时候我们该如何实现呢?
在Android
5.x OTA Update官方文档(八、图说Recovery UI)一文中我们提到,Google在源码的development/tools/目录下为我们提供了recovery_110工具来帮助我们对这些可实现本地化的图片进行修改和定制。
当我们拿到源码之后该如何使用该工具呢?
第一步:编译并生成APP,然后将生成的APP安装在我们需要支持本地化的产品中,这样合成的图片是完全匹配设备中主系统所支持的所有语言的。
第二步:点击“Go”按钮。
第三步:当合成操作完成之后,使用adb pull /data/data/com.android.recovery_l10n/files/text-out.png将设备中合成的图片导出。
第四步:使用“pngcrush -c 0 text-out.png output.png"命令对png图片进行处理(linux环境下,需要安装pngcrush工具),因为读取经pngcrush图片处理的png图片比普通的png图片快很多。
第五步:然后重命名output.png为我们需要的文件名,并放置到bootable/recovery/res/images/目录下。
这样在重新编译recoveryimage就可以生效了。
那么如果我们想要修改某种语言环境下的字符串可以直接在recovery_l10n目录下的res目录下修改对应目录的资源即可,这里举个例子。
例如在简体中文环境下,我们将”正在清除...“修改为”正在清除中..."该如何操作呢?
首先我们需要找到对应国家代码的资源,这里是values-zh-rCN/strings.xml,如下:
<?xml version="1.0" encoding="UTF-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="recovery_installing" msgid="7864047928003865598">"正在安装系统更新…"</string> <string name="recovery_erasing" msgid="4612809744968710197">"正在清除…"</string> <string name="recovery_no_command" msgid="1915703879031023455">"无命令。"</string> <string name="recovery_error" msgid="4550265746256727080">"出错了!"</string> </resources>
将上面的"正在清除..."直接修改为“正在清除中..."即可。当然我们如果想添加新的支持的语言,也只是重新创建一个资源目录,格式为res/values-国家代码。
我这里将已经编译好的工具与源码与大家分享,如果大家相对工具进行修改,可以自己尝试一下!