手把手教你ROM和APK汉化_精简_去广告

教程主要分三个部分:(没有Linux,JAVA基础均可以作到)
1强制汉化教程,是Android软件比较早的汉化方法,方法是用汉化工具在原语言(英文、或软件原带的其它语言)的基础上将单词和语句强制修改为中文。
2APKTool汉化、精简,美化教程,方法是用APKTool工具将软件反编译解包,直接用文本编辑工具修改语言包、精简语言包或自行添加中文语言包。
3去广告教程。

汉化工具,编辑工具等,下面我都会提供附件(资源来自Network)
AndroidResEditarsc/xml汉化、签名工具)
汉化狂人(arsc/xml汉化工具)
Notepad++ Portabledex汉化、文本编辑工具)
APKTool(反编译/编译工具
smali/ baksmalidex解包/打包工具)
undex(dex解包/打包工具)
android-sdk_r10-windows(Androidde 模拟器)以及本次编辑的Word文档

先从基本认识如下构架开始:
1、先了解下apk安装包的文件结构
我用WinRAR随便打开了个APKapk安装包文件目录以下图:



APK文件目录解析:(概括如下常见的,重要的会用本身的理解去解释)

- META-INF-----------------------------签名文件
- res--------------------------------------资源文件,(图标美化能够从这着手)
- anim
- color
- drawable---------------整个APK图标所在文件夹
- drawable-hdpi---------高分辨
- drawable-land---------中分辨
- drawable-land-hdpi---低分辨
- drawable-mdpi
- drawable-port
- drawable-port-hdpi
- layout-------------------(界面布局xml文件所在文件夹,界面美化可从这里着手)
- layout-land
- layout-port
- menu----------------------(一些菜单文件所在目录)
- raw------------------------(存放帮助类文档或其余资源的文件夹,如help.htmlclock.zip)
- xml---------------------(其余一些xml文件所在目录)

- AndroidManifest.xml------------是每一个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,这里面基本是没有要汉化的,可是极个别软件的软件名,或是个别单词会存在于这个主XML中!

- classes.dex-----------------------是java源码编译后生成的java字节码文件,通俗点就是整个软件的代码文件

- resources.arsc-------------------是编译后的二进制资源文件,是主要的资源文件,汉化时首先要看这个文件,最早汉化的也是这个文件!

解析下:
- 多数状况都要汉化的是resources.arscclasses.dexres文件夹里的***.xml文件。

- META-INF文件夹里面存放的是证书文件,软件修改后须要将里面的证书文件删除(***.RSA***.SF***.MF三个文件)再从新签名,不然软件没法安装。

- res文件夹里存放的大部分是软件所需的资源及布局文件(drawable存放资源、layoutxml存放布局文件***.xml),部分须要汉化的单词、语句会在这些***.xml文件里。美化源头基本上基于这里

另外,一些须要汉化的***.png图片文件、***.html文件、***.txt文件可能会在assets文件夹或res/raw文件夹内。图片文件须要用Photoshop修改,htmltxt文件能够直接用Notepad++ Portable文本编辑工具修改(不建议用系统自带的记事本,这东西杀伤无数...)。

2、打包/解包
apk安装包其实就是zip格式的压缩包,只是文件扩展名改为了apk而已,因此能够直接用解/压缩软件WinRAR打开,若你的系统没有关联apk文件,请先安装WinRAR,打开WinRAR——选项——设置——综合,在用户自定义压缩文件扩展名处填上apk,点肯定保存便可。以后就能够直接双击以WinRAR打开apk安装包文件。
汉化软件的时候,不须要把整个apk安装包解包,对于须要汉化的文件,如resources.arscclasses.dex等文件,直接用鼠标拖出来,汉完后再拖进apk安装包后从新签名就好了(签名问题下面会讲到)。

3、签名
Android的软件也须要签名,下载个签名工具就能够签名了。这里讲到的签名,是针对软件安装包被修改过的状况(如汉化须要修改安装包内的文件,原来的签名文件就不能用了,因此要从新签名软件才能正常安装。),正常状况下不须要签名。如今Android可用的签名工具不少,想方便点的话能够用汉化浪子出品的AndroidResEdit,这个软件自带签名包(工具在帖子附件有提供)。签名方法很简单,删除原证书文件后(META-INF 文件夹内的***.RSA***.SF***.MF三个文件),打开AndroidResEdit——签名——签名apk文件,选择须要签名的apk安装包后点击当即签名便可。

4、安装Java
这个是最基本的,,汉化相关的软件都须要用到Java,必需要安装,不然汉化过程当中出现各类奇奇怪怪的问题不要问我。
(电脑买来处基本都有吧,若是没有自行安装个)安装地址:http://www.java.com/zh_CN


1、 强制汉化

- 强制汉化是Android软件比较早的汉化方法,主要是用汉化工具在原语言(英文、或软件原带的其它语言)的基础上将单词和语句强制修改为中文。好处是操做方便,通俗易懂,上手快,汉化速度比较快,比较适合刚接触汉化的人。缺点就是汉化的文字长度受字符限制,中文文字字符量不能超过原文的字符量(对翻译用词的准确性有必定影响),强制汉成中文后软件运行可能会不稳定(不过这种状况也比较少)。

- 一般须要汉化的文件有resources.arscclasses.dex***.xml这三种类型的文件,其它类型的文件稍后单独列出来说解。

1、下面以软件“LauncherPro”为例,讲解resources.arsc的汉化过程:
① 用WinRAR打开LauncherProapk安装包,将resources.arsc文件拖出来,用汉化狂人打开

注:resources.arsc用汉化狂人、AndroidResEdit均可以汉化(二者均为汉化浪子出品),不过汉化狂人有搜索功能,支持保存字典,比起AndroidResEdit来要方便不少,建议用汉化狂人汉化。另外,汉化狂人在完成汉化保存好文件后,再次修改文件时字符量会限制为当前的中文字符量,例如把Save这个单词汉化成了保存,把resources.arsc文件保存后,想要将保存修改成另存为是不行的,这时字符量已经限制为了2个字符。这时就能够用AndroidResEdit来修改,不过字符量限制仍然为原英文单词Save4个字符限制。

② 打开resources.arsc文件后,能够经过搜索栏搜索要汉化的单词、语句。双击要汉化的单词、语句便可在弹出的对话框中填写中文,完成后点击“OK”便可。
如图 :




须要注意的事项:
- 有路径的不须要汉,如 图:


- 相似单词间没有空格、单词间有_等没有实际语义的不用汉 ,如图:


相似不用汉的部分很容易就能辨认出来,这个须要积累一段时间,对这些节点有必定的了解后,很天然地就能判断出来。

③将全部须要汉化的单词、语句汉化完成后,点击文件——保存汉化文件 便可,如图:



对于常常更新的软件,为了节省每次汉化的时间,在第一汉化后,咱们能够利用汉化狂人保存字典,打开汉化——字典汉化—— 导出字典,如图:


等软件更新后,再汉化时,直接打开汉化——字典汉化——导入字典,导入以前保存的字典便可,汉化狂人会自动帮你汉化,若软件有更新新的选项,新的单词、语句则须要本身动手查找,整体来讲节省了至关多的时间。

- 完成resources.arsc的汉化并保存后,能够先把resources.arsc放一边了,下面进行***.xml文件汉化。


2***.xml文件汉化
- ***.xml文件汉化其实和resources.arsc文件汉化方法同样,这里不作过多阐述,详见上面的resources.arsc文件汉化过程讲解。下面说明一些要注意的地方。

Tips
① ***.xml文件基本都在res目录里(RES上面异界解析过了,这里略过·)
- res
- anim
- color
- drawable
- drawable-hdpi
- drawable-land
- drawable-land-hdpi
- drawable-mdpi
- drawable-port
- drawable-port-hdpi
- layout
- layout-land
- layout-port
- xml

为了方便汉化,能够把res整个文件夹从apk安装包中解压出来,再逐个打开res文件夹里的***.xml文件,查找须要汉化的单词,语句。

② 大多数状况下,须要汉化的单词、语句都在res\layout以及res\xml目录中的***.xml文件里。

③ 完成汉化保存***.xml文件后,将整个res文件夹拖回apk安装包中便可。



3classes.dex文件汉化
* 完成resources.arsc文件和***.xml文件的汉化后,能够先将这些文件拖回apk安装包中,签名,传到手机安装,看看还有没有单词和语句漏汉,如有的话,且在resources.arsc文件和***.xml文件中找不到,那么这些单词和语句基本就在classes.dex文件里,此时须要对classes.dex进行汉化。

- 汉化classes.dex文件,首先须要将classes.dex文件解包,这时须要用到解包工具smali/ baksmali(帖子附件有提供),下载解包工具附件,解压,里面分别有WinXPWin7对应的版本,按本身使用的系统选择。解压后,将Xtemp文件夹复制到D盘根目录。

- 准备好解包工具后,将classes.dex文件从apk安装包里拖出来,放到刚刚的Xtemp文件夹内,如果WinXP用户,用鼠标将classes.dex文件拖到undex.bat文件上,会弹出CMD命令窗口自动解包classes.dex文件,完成会提醒按任意键关闭窗口;如果Win7用户,双击dex.bat文件,按提示操做便可。解包成功后,Xtemp文件夹内会多出classes文件夹。

- 要对解包出的classes文件夹里的文件进行汉化的话,须要用到文本编辑工具Notepad++ Portable(帖子附件有提供),下载附件,解压,运行Notepad++ Portable文件夹内的Notepad++ Portable.exe,打开Notepad++ Portable.exe程序。(若软件打开后为英文,打开——Settings——Preferences,在Loclization处选择中文便可。)

* 下面开始讲解classes.dex文件的汉化:
① 先肯定须要汉化的单词,以LauncherPro为例,软件中有“Please wait ...”classes.dex文件中。在Notepad++ Portable中按Ctrl+Shift+F键调出文件查找窗口,在查找目标处输入要搜索的“Please wait ...”,将目录定位至Xtemp文件夹的classes目录(就是刚刚解包出来的classes文件夹),点击 所有查找,如 图:


搜索结果:




② 双击搜索结果中的黄颜色区域,便可跳转至该单词、语 句的字段,进行修改,如图:


- 修改完成后, 点击保存图标保存,如图:




* 以此类推,全部须要汉化的单词、语句均可以经过文件查找搜索到。汉化完成并保存后,就能够从新打包classes.dex文件了。

③ 从新打包classes.dex文件。如果WinXP用户,右键Xtemp文件夹内的redex.bat文件,选择打开,以后会弹出CM D命令窗口自动从新打包,如图:


完成后按任意键退出窗口便可,此时Xtemp文件夹内多出了out.dex文件,这是从新打包后的classes.dex文件,将其文件名重命名为classes.dex,再拖进apk安装内,签名后就能够安装了。
Tips
- 若对软件的汉化熟悉后,用文件查找搜索要汉的单词、语句时,能够直接输入“const-string”,由于基本上这些单词、语句都在c onst-string后面,如图:



- 对于刚刚接触汉化的人,dex汉化这部分最好先在汉完arscxml文件后,把软件装上去查找没有汉完的单词、语句,而后再到dex里查找汉化,软件上没有的单词,就不要多汉,否则出问题了很难查找,dex从新打包后,那些中文是搜不出来的,因此很难修改。切记,宁肯少汉,也不要多汉,即便少汉了,往后还能够补汉上去。
* 传统的汉化方法大体就这样,难度并不大,万事都是熟能生巧。

4、其它文件类型汉化
- 除了resources.arsc***.xmlclasses.dex这三中常见的文件类型须要汉化外,有些软件还有另一些文件须要汉化,例如txthtmlpng等文件。

* 下面对这类文件的汉化做下讲解
① txt汉化,txt之类的文本文件能够直接用Notepad++ Portable打开,难度不大,将里面的内容修改为中文后保存便可。这类文件大部分用做显示关于信息、帮助信息等,因此基本上都是一些整句句子。另外,若保存后在手机上这些内容显示乱码的话,能够尝试将文件格式更改成UTF-8格式(在Notepad++ Portable中打开格式——转为UTF-8编码格式)。

②html文件的汉化也和txt文件相似,能够用Notepad++ Portable汉化,完成后保存便可,须要注意的格式问题也和txt文件同样。另外要注意的是这类文件里面有代码,熟悉汉化后对这些代码自会有相应的了解,例如<p style="color:red" align="center">,表示这段代码后的文字内容以红色、居中显示。

③ png图片文件一般都是用Photoshop来修改的,部分软件是经过调用图片来达到显示选项的目的,而单词又在图片上,因此须要通Photoshop将图片上的单词修改为中文,保存后再拖回apk安装包中替换原文件便可。这个只须要Photoshop上的一些最基本的操做,难度并不大,就不做过多阐述了。


2、 APKTool汉化,精简

- 自从有了APKTool后,Android的软件汉化就迎来了一次**。
经过APKTool,不只能够对软件进行汉化,还能够精简软件语言、去除广告(后面会讲到)。相较于传统的强制汉化方法更有灵活性。

* APKTool汉化有点以下:
- 反编译软件安装包,直接修改语言包或添加语言包,大大减小软件汉化后出问题的概率
- 可精简无用的语言
- 可用来去除广告


1、下面讲解下APKTool汉化的基本知识

* 解包/打包
- 先下载APKtool工具包(帖子附件有提供),解压,将APKTool v1.3.2文件夹放至D盘根目录。
- 将须要反编译的apk安装包放至APKTool v1.3.2文件夹内(以LauncherPro为例,文件名为LauncherPro.apk
- 打开CMD命令行窗口(开始——运行,输入cmd,确认),如图:



- 在命令窗口中输入命令,定位至AP KTool v1.3.2文件夹,如图:


- 输入命令反编译apk 安装包,如图(红色方框部分为反编译命令):


* 命令说明:apktool d LauncherPro.apk launcherpro
- apktool d为反编译命令,其中d表明decode
- LauncherPro.apk为被反编译的apk安装包的文件名(能够本身定义)
- launcherpro为存放反编译后的文件的文件夹(能够本身定义)




2、下面开始讲解APKTool的汉化方法:

① 添加、汉化语言包
- 反编译完成后,进入launcherpro文件夹(在D:\APKTool v1.3.2路径下)
多数状况咱们只须要修改launcherpro\res目录下的文件

- res文件夹中,咱们能够看到有不少values-***的文件夹,这就是语言包。

- values是英文语言包,values-zh是中国地区语言包(包含港澳台及内地),values-zh-rCN是中文简体语言包(只包含内地),values-zh-rTW是中文繁体语言包(港澳台)。除此之外,其它地区的语言包都是精简的对象,能够不过多了解。

- values文件夹里,一般有arrays.xmlstrings.xml等语言文件,要汉化这些文件,能够用N otepad++ Portable打开,如图:


- 咱们只须要将>*****</string>间的*****内容改为中文就好了。

* 若要汉的软件没有中文语言包,能够本身在res目录下新建values-zh-rCNvalues-zh-rTW文件夹,再把values文件夹内的原arrays.xmlstrings.xml语言文件复制到values-zh-rCNvalues-zh-rTW文件夹,然偶将语言文件内的单词、语句修改为中文并保存便可。

② 汉化解析
- 了解清楚语言包的问题后,你们也就会明白,APKTool的操做步骤其实也很简单,反编译——修改或添加语言包——从新打包而已,但费时的就是在修改、添加语言包这一块,比传统的汉化方法要更费时间,但所带来的好处是传统汉化方法没法相比的。

- 另外,除了res文件夹内有语言包须要汉化外,在res文件夹内的layoutxml文件夹内也会有文件须要汉化,一样是用Notepad++ Portable打开,这些文件里面都是代码语句,须要经过搜索功能找到须要汉化的单词来汉化,因此这里建议你们先把原版的软件装上去,再对照单词,边搜索,边汉化。

③ 从新编译打包
- Notepad++ Portable修改、添加好语言包后,就能够从新编译打包了。
- 方法如图下:
在刚才的命令窗口输入以下命令,如图:


* 命令说明:apktool b launcherpro
- apktool b为从新编译命令
- launcherpro为须要编译的目录(就是存放刚刚反编译后的文件的文件夹,名称能够自定义)

- 从新编译完成后,launcherpro文件夹内会新增一个dist文件夹,里面的LauncherPro.apk文件就是从新编译好的apk安装包,签名后便可安装。

* APKTool的汉化流程大体就这样,仍是那句话,熟能生巧,多多练习。下面是其它说明。


3、其它
- 精简语言,这个很简单,只须要将res目录内非valuesvalues-zh-rCNvalues-zh-rTW的其它values-***语言包文件夹删除便可。


4、注意事项
- 部分状况下,在精简语言后,从新编译打包时,命令窗口会提示public******错误,这是因为values语言包文件夹下的public.xml文件给非valuesvalues-zh-rCNvalues-zh-rTW的其它values-***语言包文件里的语言文件定义了字段,但这些语言包都被精简了,定义不了,因此会出错。解决方法有两个:
* 一是按照命令窗口中的提示(有提示public.xml文件的具体哪一行的值没有定义),到相应的语言包里找到那行未定义的代码,复制到values-zh-rCNvalues-zh-rTW语言包文件夹内的strings.xml语言文件中。

* 二是按照命令窗口中的提示(有提示public.xml文件的具体哪一行的值没有定义),直接到values语言包文件夹下的public.xml文件中删除没有定义的那几行代码。





3、去广告


- 先了解下软件的广告原理
一个软件若要显示广告,须要先导入SDK,并在AndroidManifest.xml中注册。
res\layout目录内的xml文件就包含有广告界面的配置代码,修改这些代码就能够去除广告界面。
另外还要屏蔽广告下载源,否则只是单单不显示广告界面而已,软件还会下载广告所需的数据,耗费流量。
目前Android的广告供应商有两个,一个是Admob,一个是Google Ads,前者已被后者收购,但二者SDK依然独立。

- 广告代码
Admob的广告代码为:
<com.admob.android.ads.AdView
android:id=”@+id/ad”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />


Google Ads的广告代码为:
<com.google.ads.GoogleAdView
android:id=”@+id/adview”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />

- 广告下载源
Admob的广告下载源:
http://r.admob.com/ad_source.php
http://mm.admob.com
http://api.admob.com

Google Ads的广告下载源:
http://pagead2.googlesyndication.com/pagead/afma_load_ads.js

* 去广告步骤:
1、去除广告下载源
- 解包classes.dex(方法上面已讲过),用Notepad++ Portable搜索广告下载源地址(若不知道软件用的是哪 个供应商的广告的话,最好两家的下载源都搜索下),如图:


- 搜索结果以下:


- 将广告下载源地址修改为无效 的地址(例如0.0.0.0192.168.1.1等),如图:


- 完成后保存,从新打包classes.dex,拖回apk安装包替换原文件

2、去除广告界面
① 将刚刚已经替换了classes.dex文件的apk安装包用APKTool反编译。

② 用Notepad++ Portable搜索广告代码(上面已列出)
- 如图,将搜索路径定位到res文件夹(就是反编译后的res文件夹),代码只搜索开头就好了,如:com.admob.android.ads.AdView com.googl e.ads.GoogleAdView
如图:


- 搜索结果:




③ 双击黄颜色区域,修改下图上方的代码
android:layout_width="fill_parent" 修改成 android:layout_width="0.0dip"
android:layout_height="wrap_conten t" 修改成 android:layout_height="0.0dip"


修改后:





- 将全部搜索到的代码按照上面修改,完成后保存,用APKTool从新编译打包,可签,安装便可。


* 再做下解释:
android:layout_width="fill_parent" 修改成 android:layout_width="0.0dip"
android:layout_height="wrap_content" 修改成 android:layout_height="0.0dip"
之因此这么修改,是由于要让广告窗口不显示,android:layout_width定义的是广告窗口的宽度,android:layout_height定义的是广告窗口的高度,0.0dip表明0像素,将二者后面的值修改成0.0dip,那么高和宽都是显示0像素,等于不显示,达到了去广告窗口界面的目的。
php

转载于:https://www.cnblogs.com/webu/archive/2013/03/26/2982540.htmlhtml