浅淡安卓应用的汉化
aide吧
全部回复
仅看楼主
level 12
0_666 楼主
好的应用都出自高人之手,有许多优先作品都是英文的,对国人而言,汉化很有必要而并非多此一举。
2017年12月25日 12点12分 1
level 12
0_666 楼主
下面我来说说汉化方面的知识,高手可以略过,还是以例子来说明问题。
2017年12月25日 12点12分 2
level 10
🌝顶一下
2017年12月25日 12点12分 3
level 12
0_666 楼主
打开aide建一个本地工程,在 java 文件、 Xml 文件中分别写入 Hello From Java 和 Hello From Xml 两个字符串,这样在 smali 、 xml 和 so库中都有这个字符串,下面我们来汉化这些字符串。
2017年12月25日 12点12分 4
level 12
0_666 楼主
为了写这个汉化的例子,我特意上了电脑制作的,其实在手机上完全可以做到。
2017年12月25日 12点12分 5
level 12
0_666 楼主
首先用 apktool 反编译要汉化的 apk 包。
第一步先汉化 string.xml 里面的字符串。
2017年12月25日 12点12分 6
level 12
0_666 楼主
把 string.xml 文件中,在 >×××××< 两个尖括号里面的英文字符串,改为对应的中文,其余的都不需要修改,这样程序运行后就会显示自己改上去的中文了。
2017年12月25日 12点12分 7
level 12
0_666 楼主
上面是汉化 string.xml里面的英文,这是指普通的 apk ,而对于多语言的程序,这个文件是不能直接改的,必须要在 values-zh-cn 目录里修改,如果没有这个文件夹就创建一个,然后复制一份 string.xml 到这里面来汉化。
2017年12月25日 12点12分 8
level 12
0_666 楼主
没汉化前的图片和只汉汉代 xml 部分的对比。
2017年12月25日 13点12分 9
level 12
0_666 楼主
接着汉化 smali 部分的字符串,smali 是 java 的反编译代码,是在MainActivity.java 中写进去的字符串,打开 smali 目录,用 920 文本编辑器搜索需要汉化的字符串,替换成对应含义的中文。
说明:有些编译器不支持中文,还要把中文进行转码,网上随便下载一个中文与 unicode 互相转换的软件,把中文转换成 unicode 码后,再去汉化即可。
2017年12月25日 13点12分 10
level 12
0_666 楼主
smali 部分汉化的重点就是难找字符串,要掌握搜索方法,一般的字符串赋值语句是:const - string ”xxxxxx“,只要汉化引号内的字符串就行,搜索时以 const - string 为关键字,多数字符串都能定位出来。
2017年12月25日 14点12分 11
这样一个个找太麻烦,有更简单的方法
2017年12月26日 05点12分
level 12
0_666 楼主
下面来对 so 库中的字符串进行汉化,so库是由C/C++语言写的代码,编译后就是二进制的机器语言,机器语言是不会被反编译成高级语言的,顶多逆向成汇编语句,不过这里不是研究破解,完全不用去理会它的意思,只要能找到需要汉化的字符串就行了。
2017年12月25日 14点12分 12
level 12
0_666 楼主
下面来对 so 库中的字符串进行汉化,so库是由C/C++语言写的代码,编译后就是二进制的机器语言,机器语言是不会被反编译成高级语言的,顶多逆向成汇编语句,不过这里不是研究破解,完全不用去理会它的意思,只要能找到需要汉化的字符串就行了。
2017年12月25日 14点12分 13
level 12
0_666 楼主
电脑端用 IDA PRO打开 so 文件,同样是进行搜索要汉化的字符串,本例中搜索 Hello From JNI,搜索完成后就会发现有许多地方都有这个字符串,仔细辨认只有一处的字符串是在汇编代码中,其余的都是在注释中,注释中的就不理它了,只修改代码中的这个字符串。
2017年12月25日 14点12分 14
level 12
0_666 楼主
这里定位在地址 00002330处的字符串就是 Hello From JNI。
2017年12月25日 14点12分 16
1 2 尾页