一、 android软件安装包解析
android软件安装包为apk文件,apk是android package的缩写。
apk文件实际是一个zip压缩包,可以通过解压工具解开。
下面我们以android手机通话录音软件record mycall的汉化做为例子讲解。
用winrar解压apk文件:
apk中文件夹及文件说明如下:
META-INF文件夹:内含签名文件,保证apk包的完整性和系统的安全性;
res文件夹:内含资源文件,图片、图标等,通常有以下目录结构:drawable(图片所在文件夹)、drawable-hdpi(高分辨率图片所在文件夹)、layout(界面布局XML文件所在目录)、layout-hdpi(高分辨率界面布局XML文档所在目录)、menu(一些菜单文件所在目录)、raw(存放帮助类文档或其他资源的文件夹,如help.html,clock.zip)、xml(其它一些xml文件所在目录)等。
AndroidManifest.xml:程序的主要XML文件,描述了程序的名字、版本、权限、引用的库文件等信息。
classes.dex:程序的主要代码文件,是java源码编译后生成的java字节码文件。
resources.arsc:编译后的二进制资源文件,是主要的资源文件。
汉化的主要文件有(依据汉化的秩序排列):resources.arsc、*.xml、classes.dex。下面依次讲解。
二、汉化resources.arsc
如果用16进制代码工具汉化,非常的繁麻烦,且易出问题。为方便起见,此处使用“汉化狂人”这款软件。此软件的运行需要安装微软的framework NET2 2以上。
运行“汉化狂人”,打开resources.arsc。
除了“res/”这个开头的不用汉化外,对于其它,就要根据软件中能看到的单词和语句进行汉化了。一般汉化到attr行往后的就不用汉化了。
汉化完成后,保存替换原来压缩包中的arsc文件。
三、XML文件汉化
依然使用“汉化狂人”软件来汉化。
在res目录中有许多的xml文件,根据文件名称,一般可以知道xml文件作用,再根据实际情况进行打开汉化。
四、classes.dex文件汉化
通过对resources.arsc和xml文件进行汉化后,软件中剩余的有英文的地方,一般都在classes.dex文件中了。
要对classes.dex进行汉化,首要要进行反编译,也就是解包。这里使用工具Xtemp,注意这个工具需要java虚拟机的支持。
在XP操作系统中,把classes.dex文件拷贝到c:/android/xtemp目录中,把classes.dex拖到undex.bat上就可以解包了,解包完成,在Xtemp目录下看到一个新生成的classes文件夹,这就是反编译后的解包的文件所存放的目录。
打开classes文件夹的下级目录,有许多.smali后缀的文件,都是反编译后的文件,可用记事本打开。但要从如此多的smali文件中找到需要修改的内容,这里用notpad++文本编辑软件,它支持批量搜索文件夹内所有的文件内容。
这里要注意的是,通过搜索出来的结果可能有许多地方,但要注意的是,只有“const-string”后面的才是需要汉化的内容。也可以通过搜索“const-string”来查找要汉化的内容,但要注意的是,const-string后面的不一定是要汉化的。
汉化完成后,把classes文件夹拖到redex.bat上,在同目录下生成一个out.dex文件,将其重命名为classes.dex替换原文件即可。
注意:如果在汉化的过程中,汉化了不该汉化的地方,打包进可能失败。
五、打包签名
用winrar打开原版的apk文件,把汉化后的arsc、xml和dex文件按原目录结构替换到压缩包内,然后,删除META-INF文件夹内的CERT.RSA和CERT.SF两个文件。保存。
将保存后的apk文件用APKSign或auto-sign等软件进