Android软件汉化/精简/去广告/优化
教程
人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程
* 引用、转载请注明出处:XDA智能手机论坛-bbs.xda.cn-iKira!$
* 汉化其实不难,难的是持之以恒,祝各位机友学有所得。
准备工作
下载上面的附件“Android汉化工具.zip”,解压。5\
安装Java环境(Java_6 Update 31.exe);
2、安装Microsoft .NET Framework(Microsoft .NET Framework_2.0.exe);&
以上两个必须要安装,否则很多汉化工具会无法使用、各种报错(如汉化狂人、apktool、smali等),切记!!
在电脑上安装都很简单的,其它的就不过多阐述了。
apk包文件结构
*** 汉化前先了解下apk安装包的结构。***+ j* J
apk安装包其实就是一个Zip压缩文件,所以可以用WinRAR、WinZip之类的压缩软件来打开,建议大家将apk这个扩展名关联到压缩软件,双击默认以WinRAR打开。
关联方法:
打开WinRAR——选项——设置,如图:
2、切换到设置窗口的“综合”标签,在“用户自定义压缩文件扩展名”下面填上apk,然后点确定。
这里以固件管家(ROM Manager)的apk安装包为例讲解目录结构,如图:
文件目录结构
Assets
com-
META-INF
-CERT.RSA*
-CERT.SF: r
-MANIFEST.MF
res,
-drawable
-drawable-hdpi
-drawable-ldpi
-drawable-mdpi
-drawable-xhdpi0 _! g% \, ?8 S( } |, L
-layout
-menu3
-xml0
AndroidManifest.xml
classes.dex
resources.arsc8 J " I8 ?/ L2 r' H1 B! {6 _
* assets目录:通常存放的是一些附加文件,例如txt、html等说明文档、字体文件、附加图片等(游戏apk安装包有些差别。某些软件该目录下的一些文本文件需要汉化);
* com目录:通常也是存放一些附加组件,例如PayPal等(这个目录一般不会有要汉化的内容,不要管它);
* META-INF目录:里面存放的就是签名后的证书;
* res目录:存放的大部分是一些图片资源和界面的布局文件。drawable和drawable-**目录存放的是各种不同分辨率的图片资源。layout、menu、xml目录存放的是软件界面的布局文件,包括菜单、窗口、主界面和设置界面等。
* AndroidManifest.xml文件:记录了软件的版本号、所需要的权限、引用的库文件、类等信息。极少数情况下,某些软件的软件名称、个别设置选项等文字内容在该文件中。
* classes.dex文件:这是Java源码经过编译后的文件,有些软件的选项和说明内容的文字会在这个文件里,需要对其解包后进行汉化。
* resources.arsc文件:这个是经过编译后的资源文件,存储着各国语言,大部分需要汉的内容就在这里。
PS1:某些软件的选项按钮是通过调用图片实现的,图片上的文字就需要Photoshop之类的图片编辑软件来修改,这些图片资源一般都在drawable和drawable-**目录里。
PS2:某些软件apk安装包会有个res\raw目录,这里通常存放的是一些说明文件,如txt、html、hml等
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
文件,这些文件里的文字内容用Notepad++ Portable(帖子附件里有)之类的文本编辑器就可以修改(Windows自带的记事本也可以,不过不推荐用这个)。
签名
方法一
下载帖子附件“Android汉化工具.zip”,解压。推荐将解压出来的“sign”文件夹复制到D盘根目录(后面的教程统一以复制到D盘根目录为前提进行讲解)。
2、例如要签名的apk包名为“1.apk”。先将“1.apk”文件复制到d:\sign目录里。
下面有两个方式:
* 用鼠标将“1.apk”拖到“Sign.bat”批处理文件上面自动签名,签好的文件会保存在同一个目录里(“1.apk.apk”文件)。
* 另外,也可以手动在CMD命令行窗口中输入命令来签名:/
打开命令行窗口,进入d:\sign目录:
开始菜单——运行,输入cmd,在弹出的CMD窗口中输入
d: 回车
cs sign 回车* R$ g7 X/ S/ u( m
如图:+ x$
再输入:
java -jar signapk.jar testkey.x509.pem testkey.pk8 1.apk 1-signed.apk
如图:
签完名输出的文件“1-signed.apk”传到手机或者用同步软件即可安装。. N
方法二/
* 用这个方式签名最为简单,傻瓜式操作。
下载附件“Android 汉化工具.zip”,解压。打开解压出来的AndroidResEdit(系统需要安装
NET Framework,没安装的机友请自行百度搜索下载安装)。
2、如图,打开工具栏中的“签名”,即可在签名窗口中选择文件进行签名,操作很简单。:
注:签名之前最好先将META-INF目录下的证书文件全部删除,以免重新签名后可能出现不能安装的问题。
准备工作和基本须知讲完了,下一楼层开始讲如何使用apktool嵌入汉化。
apktool嵌入汉化
N) O4 v1 N3 q. M4 C( t5 R0 j/ z
之所以把apktool放到前面来讲,主要还是因为用apktool来汉化会更加快而直观。用AndroidResEdit或汉化狂人的方法放到后面讲,算是做一个补充,现在已经很少人用了。
apktool汉化的优点已经众所周知,可以精简语言、汉化更彻底、反编译后可以调整布局文件、相比直接修改resources.arsc文件的方法,用apktool修改出的apk出问题的几率会更少。1 l3 b9 A" e# s9 [: \" N Y
网上已经有很多apktool的衍生工具,有的甚至集成了签名、反编译、编译、优化等各种一键功能。不过个人不推荐初次接触汉化的人用这些工具。每一步都自己动手,即使中间某些环节出现了问题,也更加好找原因。
这里给出apktool的主页:http://code.google.com/p/android-apktool,想要长期做汉化的机友可以经常留意下,及时更新版本。
开始汉化前,请先安装Java环境。必须要安装,apktool、汉化狂人、AndroidResEdit、baksmali都需要Java环境,否则不能使用,切记!
安装文件在帖子开头的工具包里有。
下面回归正题,开始讲解apktool汉化。
一、嵌入中文; \7 k& S$ O. a4 f% H. O0 o) ]
以汉化多键开关(SwitchPro)为例。用apktool嵌入汉化其实很简单,就三个步骤:反编译——翻译+修改——重新打包(其中翻译这一步就是要嵌入中文的翻译)。& {7 {$ F. R) ^0 ^" |; l& i
* 下载附件“Android汉化工具.zip”,解压。把apktool文件夹复制到D盘根目录。- R6 y$ l) L9 K$ {! k; D# [% m- D
* 将需要反编译的apk包复制到apktool文件夹里(D:\apktool),将其重命名为1.apk(名称随自己定,1.apk只是为了方便讲解)。
* 开始菜单——运行,输入cmd,打开CMD命令行窗口。8 t3 h7 ~7 V& U( p& w# Q/ M, v' }5 m
* 在CMD命令行窗口中用cd命令进入d:\apktool
进入D:\apktool后再输入命令7 [! ~% Z" f/ F B% Q; ?
apktool d 1.apk 1
如图:
注释:d是反编译命令“decode”。中间的1.apk不解释了,你们懂。最后的“1”是反编译后的文件的存储目录,即D:\apktool\15
* 进入D:\apktool\1\res目录,如下图:
各个目录的作用在帖子开头已经解释过,这里不重复了。语言文件strings.xml就在values文件夹里(某些软件还会有attrs.xml、plurals.xml这两个语言文件)。attrs.xml里一般是一些选项的文字内容,例如打开一个设置选项后,弹出一个列表供你选择,列表中的选项的文字就在attrs.xml里,其余的文字内容基本都在strings.xml里。" O/
若要嵌入简体中文的话,我们要在D:\apktool\1\res这个目录新建一个文件夹“values-zh-rCN”,看文件夹后缀就知道,zh-rCN表示中国内地。要嵌入繁体中文的话,要在D:\apktool\1\res这个目录新建一个文件夹“values-zh-rTW”。 然后再将上面讲到的values文件夹里的语言文件复制到values-zh-rCN和values-zh-rTW里,将里面的英文翻译成简体中文和繁体中文就可以了。
因为现在要汉化的SwitchPro只有strings.xml文件,所以我们需要将strings.xml分别复制到values-zh-rCN和values-zh-rTW里就行了,如图:
* 到这一步,就可以开始翻译了,打开附件“Android汉化工具.zip”中的Notepad++Portable,用Notepad++Portable打开D:\apktool\1\res\values-zh-rCN和D:\apktool\1\res\values-zh-rTW中的strings.xml文件,如图:$
我们只需要将
”这一行即可。: G; o! a ~9 z1 r& K b( j( b
目前Android常用的广告供应商有两家,一家是Google,一家是Admob,不过Admob已经被Google收购,所以基本就是同一家供应商,但两者的SDK还是独立的。
一般常见的广告源如下:
Admob:& t! n7 B1 }+ V: N# Q; A
http://r.admob.com/ad_source.php
http://mm.admob.com
http://api.admob.com
Google:) s) R9 R1 F# _" v0 G- N: q
http://pagead2.googlesyndication.com/pagead/afma_load_ads.js
常见的广告布局代码如下:
Admob:
. }9 O+ W% |, d' ?+ T, k. U6 `/ t4 P
Google:
* T+ u4 \2 J j& ^0 v# K) k) [- D, L
8 j/ Q" l% e5 R: v7 o
PS:上面的广告源和布局代码只是个范例,实际去广告时还是需要自己
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
经验来查找广告源和布局代码。例如一些软件在主界面显示广告,那么广告的布局代码通常会在res\layout\main***.xml之类的布局文件里,仔细找找,或者活用Notepad++Portable来搜索。
4 J. O' `+ _ U( n: e3 A
去除apk广告的必要工作:用apktool反编译apk包,方法上面已经讲过,这里不重复了;提取apk包中的classes.dex,用baksmali+smali工具解包,方法上面也讲过,这里也不重复了。% p1 \) Q1 j# E! T. ?* s" @
--------------------------------------------------------------------------------------------
, }: Q: a# s# }
前戏完了,下面开始讲解:6 u# f! \4 F$ G( U' p. i
一、先去除广告源0 ?; t7 X4 C: E' H- S
一般广告源都在D:\baksmali+smali\classes\com\google\ads目录下的文件里,因此我们可以使用Notepad++Portable来搜索,同时按Shift+Ctrl+F键调出搜索窗口,输入搜索内容http://(因为广告源都是链接,所以搜索http://开头),将搜索目录定位到D:\baksmali+smali\classes,再点击全部查找,如图:
如上图,这几处都是广告源:
D:\baksmali+smali\classes\com\google\ads\AdView.smali 里的 “http://schemas.android.com/apk/lib/com.google.ads”! p1 U0 @! m' f) o& S
D:\baksmali+smali\classes\com\google\ads\InstallReceiver.smali 里的 “http://a.admob.com/f0?”8 e. p( t9 F/ e2 `7 H' i
D:\baksmali+smali\classes\k.smali 里的 “http://www.gstatic.com/afma/sdk-core-v40.js”. @0 N5 S$ }1 T/ j
找到广告源后就好办了,将这些地址修改成如“http://0.0.0.0”或“http://192.168.1.1”就可以让软件无法下载广告数据。
广告源修改完成,可以重新打包回clesses.dex文件,方法上面有讲到,这里不重复了。4 R1 |0 e2 y. ^7 c$ o0 Z5 U
二、修改布局文件,隐藏广告区域
一开始就说了要用apktool反编译apk包了,这里不重复了。
打开Notepad++Portable,同时按Shift+Ctrl+F键调出搜索窗口,输入搜索内容“id/ad”、“AdView”或者“GoogleAdView”,要是搜索不到的话,可以把软件装上,看看广告在软件的哪个位置,例如在主界面的话,一般会在res\layout目录下主界面布局文件里,具体看看文件名就知道了。" w* j7 x, P3 @" d5 ^2 Q
这里我们以搜索“id/ad”为例,如图:
双击下方的搜索结果即可打开相应的文件,如图上图,我们搜索到的广告布局代码是:
4 [; I+ D* X- {) {$ g- F6 W
这里定义了广告的宽度和最大高度,我们只需要将 android:layout_width="fill_parent" 、android:layout_height="70.0px" 和 android:layout_height="70.0px" 改成 android:layout_width="0.0dip" 、android:layout_height="0.0dip" 和 android:maxHeight="0.0dip" 就行了。另外,也可以直接在中间加入 android:visibility="gone"(定义广告的可见性,gone表示不显示):. x3 t: }$ X, H. x
$ G0 ?, {7 s: t. l* J
% O' Y" 6 ]4 Q) ]& s) g( z9 ?: f/ k
将所有搜索到的布局代码定义的宽度和高度修改后,就可以用apktool重新编译打包了,然后将刚刚重新打包的classes.dex文件拖回到重新编译打包好的apk包中,签名后即可安装。
zipalign对齐优化& y+ j8 U8 w3 K% @, m
, o+ N3 s- U0 v5 W8 q# @7 W
zipalign优化是汉化、去广告等所有要修改的事完成并签完名后才需要做的步骤,目的是提高执行效率。5 u# w7 |% D9 Q# i& f6 k- f4 K
9 L7 P0 U4 n3 s
方法如下: 下载附件“Android汉化工具”,解压。将里面的zipalign文件夹复制到D盘根目录;: }. s2 A5 {3 T3 `' z( X
* 将需要优化的apk包复制到zipalign文件夹(D:\zipalign),将apk包重命名为1.apk(方便讲解);& O# x, V z5 H, n
* 打开CMD命令行窗口,进入D:\zipalign,输入命令 zipalign -v 4 1.apk 1-zipalign.apk,如图:7
优化后的文件1-zipalign.apk会存储在同一个目录中,可以直接安装。
汉化狂人/AndroidResEdit汉化
用“汉化狂人”或“AndroidResEdit”汉化很简单。两个软件都是出自同一个作者之手(汉化浪子),界面功能都差不多,因此这里以“汉化狂人”为例讲解,AndroidResEidt就不说了,操作都差不多的。+ ~( W6 z7 Z% G9 t6 R
直接进入正题。
该方法汉化分三个部分
汉化resources.arsc文件:" `) u, i3 o) W$ V- G0 s
提取apk包里的resources.arsc文件,打开汉化狂人 -> 文件 -> 打开文件,打开提取出来的resources.arsc文件,如图:
文件载入后所有可以汉的文字内容都会在列表中出现,如下图:* l0 M3 Y1 `-
如上图,双击要汉的部分,在弹出的窗口中输入中文后再点确定即可。
所有内容全部汉完后,打开文件 -> 保存汉化文件,保存汉化好的resources.arsc文件,然后再将汉完的resources.arsc文件拖回apk包里。如图:
PS:一些有下划线、中间没有空格、路径之类的内容不用汉,这些不是语言内容,多汉了软件会出问题。 4 ]5 [) t; w, w
2、汉化AndroidManifest.xml文件、res\layout目录下的xml布局文件、xml目录下的布局文件:: q1 }/ j$ m$ i% J
在汉完resources.arsc文件后,可以先将resources.arsc文件拖回apk包里重新签名然后安装到手机,看看还有哪些文字没有汉化,若有的话,一般都会在AndroidManifest.xml文件、res\layout目录下的xml布局文件、xml目录下的布局文件里面,这些文件都可以用“汉化狂人”和“AndroidResEdit”打开,可以汉的资源也会在列表中显示,汉化方法和resources.arsc文件一样,汉完后保存,然后替换apk包里原来的xml文件即可。& Y) L4 w; i- V' w
3、汉化classes.dex文件:* z/ S1 |- {/ t
若上面两步汉完后仍有文字未汉,那么基本上就在classes.dex文件里,汉化方法前面已经讲到,这里不重复了。
4 S8 |/ I$ N0 _1 d( l/ i
所有文件都汉化后,全部拖入apk包中替换原来的文件,然后在重新签名即可安装。