〖全民汉化〗Android软件汉化教程之图文第五课————Apktool汉化通用教程
本帖最后由 OPkyd 于 2013-11-27 11:32 编辑第五课:软件汉化————Apktool汉化通用教程
本篇教程以简单的小软件PreHome为例,软件很小,利于大家学习。
首先我们要知道汉化软件的步骤,然后学会使用apktool工具。工具可以到第四课下载。
里面包含了apktool全部工具,我们将其解压,最好为汉化建立一个专用文件夹,这样可以养成好习惯,利于学习汉化。而且文件夹东西太多会很乱。
- 自从有了APKTool后,Android的软件汉化就迎来了一次革命。
通过APKTool,不仅可以对软件进行汉化,还可以精简软件语言、去除广告(后面会讲到)。相较于传统的强制汉化方法更有灵活性。
* APKTool汉化优点如下:
- 反编译软件安装包,直接修改语言包或添加语言包,大大减少软件汉化后出问题的几率
- 可精简无用的语言
- 可用来去除广告
软件汉化步骤:
1.反编译apk,反编译成Note++等工具能够读取的文本形式。
2.翻译,使用Note++等工具进行文本翻译。
3.回编译apk,回编译成完整的apk安装包。
4.签名与Zipalign对齐处理。工具都在第四课。
apktool使用方法:
将PreHome.apk拖动到工作目录,然后拖动到完全反编译.bat,此目录就会生成同名文件夹。进入文件夹,你会发现与原apk结构不同了。对,因为我们进行了完全反编译,就相当于将arsc与dex文件进行解包,现在才可以用Note++等工具汉化。前面的课程已经说了去哪里找汉化语言,这里不再重复,我们进入PreHome.1.0.2\res文件夹,通常情况下会有多个values、values-xx文件夹,这些就是语言存放的目录了,xx代表了国家代码,因为Android系统可以根据国家代码来读取当前国家的语言包,所以如果有values-zh(中文)、values-zh-rCN(简体中文)或values-zh-rTW(繁体中文),手机系统会优先读取咱们的国语,如果没有的时候就只读取values文件夹的语言。由此我们可以用apktool进行强制汉化或嵌入式汉化。
强制汉化:直接翻译values文件夹下的语言文件。
嵌入式汉化:新建values-zh、values-zh-rCN或values-zh-rTW,将values文件夹下的语言文件复制到此处,然后翻译这里的语言文件。
同时我们也可以使用apktool进行语言精简操作。即删除values、values-zh、values-zh-rCN或values-zh-rTW以外的语言文件夹,不过这样有时候回编译会报错,解决方法请参照后续课程。
我平时喜欢精简的软件、精简的ROM,所以我几乎都是使用强制汉化。那就跟着我开始汉化吧。进入PreHome.1.0.2\res\values,通常情况下,我们要汉的文本是arrays.xml与strings.xml,这里没有arrays.xml,我们就不用管。用Note++打开strings.xml,如下图:
我们要汉化黑色部分的英文,翻译完以后记得保存。这里要说明几点:只能汉连续的语句或大写单词,有下划线连接起来的不可以翻译。也有特殊情况,就需要你自己总结了。以下是我翻译完的strings.xml:
汉化软件需要测试,因为你不知道有没有漏汉。现在我们回编译apk,双击打开强制编译.bat会弹出新窗口,将文件夹PreHome拖动到新窗口,回车,等待完成,如图即为回编译成功。
同时工作目录下会生成新PreHome.1.0.2_out.apk,将其拖动到signapk.bat进行签名,等待完成。同时工作目录又会生成名为done的新文件夹,这里面就是签名成功的新apk。进入此目录进行安装,在手机上打开软件看看效果吧。
这时候你就会发现原来还有漏网之鱼。你不知道这些鱼在哪,就要用Note++进行搜索了。搜索也有技巧:搜索目录选择反编译文件夹,匹配大小写,搜索无果时选择搜索语句中的单词等等。如图:
单词Setting的搜索结果不在xml文件里,在xxx.smali里了,那怎么办呢?没事,虽然有些不同但是也很简单,需要我提供的转码工具。因为smali里面是不支持直接翻译成汉字,需要把汉字转换成u码替换原英文单词。打开u码转码工具上面输入单词Setting对应的中文汉字,单击下面的转换即可得到u码 \u8BBE\u7F6E ,如图:
然后将\u8BBE\u7F6E替换原来的Settings,记得要保存。
现在你可以再次回编译测试看看有没有成功。如果你操作无误,就必定成功。这里不再演示了。Smali文件里的汉化也有几点需要注意:汉字必须转码,只能翻译搜索到或在软件中出现的结果,不可多汉,只能汉const-string 后面双引号中间的部分,双引号不可丢!
最后还有Zipalign对齐化处理,使用方法与签名类似,详情可以参考工具压缩包里面的说明。
Android软件Apktool汉化通用教程到此结束,希望可以帮到你。* APKTool的汉化流程大致就这样,还是那句话,熟能生巧,多多练习。
U码转码工具:http://pan.baidu.com/s/1sxA6G
PS:关于framework.apk,还有些事没说,现在补上。framework.apk是安卓框架,apktool需要根据framework.apk才能对软件进行反编译,有些软件需要设置了framework.apk路径以后才能进行反编译。因为我对cd命令也不熟,所以就不说怎么设置其他路径了。去ROM里面提取个framework.apk然后改名为1.apk放置到C:\Users\Administrator\apktool\framework下,再尝试进行反编译吧。framework.apk最好提取新版固件,因为是向下兼容,比如说4.1版固件framework就可以反编译和回编译4.1及以下系统支持的apk,但无法反编译和回编译4.2系统支持的apk.如果在你的工作目录没有生成相应的文件夹,请全盘搜索。
传送门:
第一课:http://www.52pojie.cn/thread-225285-1-1.html
第二课:http://www.52pojie.cn/thread-225295-1-1.html
第三课:http://www.52pojie.cn/thread-225298-1-1.html
第四课:http://www.52pojie.cn/thread-225309-1-1.html
第五课:http://www.52pojie.cn/thread-225314-1-1.html
第六课:http://www.52pojie.cn/thread-225319-1-1.html
第七课:http://www.52pojie.cn/thread-225323-1-1.html
第八课:http://www.52pojie.cn/thread-225327-1-1.html
第九课:http://www.52pojie.cn/thread-225364-1-1.html
第十课:http://www.52pojie.cn/thread-225368-1-1.html
~相信自己,汉化简单致死!~
反编译出来的文件夹是空的,什么原因? 牛,今天的评分给你啦{:301_993:} 先收藏好先,一次消化不了那么多。{:301_993:} 先收藏 慢慢学习 牛,必须支持。 支持了,评分支持给了 慢慢学习,楼主大牛 楼主大神可以做一个动画的形式吗?我看的不是很懂, rainprince 发表于 2013-12-10 10:35 static/image/common/back.gif
楼主大神可以做一个动画的形式吗?我看的不是很懂,
楼主大神辛苦了,你的教程我看了,很好呢,等电脑内部东西换过之后,就开始认真学习去做,有问题找楼主,没问题吧,嘻嘻~~
首先,我要想楼主提一下改进的方法:
1.smali中汉字无需转换为java的unicode码,直接用apktool编译即可(1.4.3、1.5.0测试成功)
2.漏网之鱼可以直接用UltraEdit搜索“const-string”搜索字符串,开头为大写的基本都可以汉化(但原先我汉化过一个带上报错误报告功能的软件,然后里面就有一堆log,这个是给开发者看的所以不能不能汉化)
最后我衷心的赞一下楼主~
页:
[1]
2