APK软件教程
(转载请注明来自藕粉www.AllphoneSmwenzi,谢谢)

  随着Android手机种类的不断丰富,各种应用软件也开始遍地开花,Android用起来也越来越爽了……不过有很多软件都是老外编的,虽然英文界面 能用,但是毕竟不如咱们中文看着舒服,特别是一些功能相对比较复杂的软件,中文界面还是很有必要的。因此,本人综合网上多位前辈大侠的教程,加上自己的一 点心得,对如何APK软件,进行简要说明。由于我也是个新手,很多地方也许会不完善甚至存在错误,请各位兄弟不吝赐教。

  一、概述
  目前,网上常用的APK方法有三种:
  一是使用Hex Workshop,这种方法操作繁琐、费时费力,而且经常出现搜不到想要修改的字符的情况;
  二是使用浪子大侠的Android ResEdit(目前最新版本AndroidResEdit v1.5),这个软件
使用简单直观,但是对不在资源文件中的词条无能为力,只能用于简单的;
  第三种就是我在这里要向大家推荐的APKTOOL,他的原理是把APK进行反编译,生成程序的源代码和图片、XML配置、语言资源等文件。我们只需要对有关图片和语言资源等文件进行修改,再编译打包成APK并签名,就可以得到版的APK软件了。

  二、搭建环境
  由于APKTOOL工具是用Java编制的,因此需要电脑中安装了JRE或者JDKJAVA工具,用JRE即可)。
  下载地址:
本帖隐藏的内容需要回复才可以浏览
ftp://o1:o1@222.223.83.143/


  接下来就是我们要用到的关键工具——APKTOOL。为便于操作,自己编写了一个批处理工
具,集成了最新的apktool-v1.3.1和签名工具,可以省去自己输入指令的麻烦,实现解包、打包、签名自动处理。
  下载地址:
本帖隐藏的内容需要回复才可以浏览
ftp://o1:o1@222.223.83.143/hanhua/APKTool.rar


  还有一个辅助工具Notepad++,这是一个功能强大的文本编辑软件,可以在指定文件夹中搜索字符串,不在资源文件中的词条时,用这个可以极大减少工作量。
  下载地址:
本帖隐藏的内容需要回复才可以浏览
ftp://o1:o1@222.223.83.143/hanhua/npp.5.6.



  安装的步骤很简单了,下载上面三个文件,安装JRENotepad++,将APKTool压缩包解压到任意位置,就OK了。
  另外,为了调试方便,推荐安装Android相应版本的SDK(或OMS),并建立虚拟机运行环境。当然用手机调试也可以,但是没那么方便而且容易发生不可预料的问题。关于虚拟机环境搭建请参考其他资料
下面进入正题……

  三、解包软件
  将你需要的APK文件,放到APKTOOL文件夹下面。
  注意:APK文件名中,不得包含汉字和空格,否则在执行过程中会出错,没办法,老外的工具不支持汉字,批处理不支持空格。

下载 (62.49 KB)
2010-7-21 11:28


  双击运行APK工具包.BAT”,首先出现欢迎界面,按任意键继续。

下载 (34.36 KB)
2010-7-21 11:29


  接下来显示操作选项,在这里我们要执行解包操作,选【1】,批处理会自动识别APK文件并开始解包,在这里我用FlipSilent(一个翻转静音工具)作为示例。

下载 (35.44 KB)
2010-7-21 11:28

下载 (64.29 KB)
2010-7-21 11:29


  完成后,会自动打开【Doing】文件夹,解包出来的资源存储在这里,原始的APK文件则被备份到【Backup】文件夹中。

下载 (45.9 KB)
2010-7-21 11:29


  打开解包的资源文件,里面有两个文件夹:Res存储的各种资源文件;Smail:存储的是反编译的程序代码,还有两个文件就不用管了。至此解包操作完成。

下载 (48.61 KB)
2010-7-21 11:29


  四、初步
  的第一步,是res文件夹里面的程序界面资源。一般来说,这个文件夹里面会包含以下文件夹:
  Drawable:程序调用的图标以及各种图片;
  layout-land:竖版界面xml描述文件;
  layout-port:横版界面xml描述文件;
  menu:菜单布局xml描述文件;
  values:字符串资源定义,我们要的绝大部分工作就在这里面;
  xml:其他不再详细分类的布局xml描述文件。
  根据软件的不同,文件夹可能会多些也可能会少些,具体内容大家打开一看就大概能知道是什么了。这里FlipSilent软件相对比较简单,所以只有三个文件夹,如下图:

下载 (41.95 KB)
2010-7-20 15:41


  在values文件夹下的文件:

下载 (47.89 KB)
2010-7-20 15:41


  一般来说,需要处理是ll这两个文件。如何判断哪些是需要我们翻译的词条呢?有三种方法,综合起来一般就差不离了:
  第一个当然是在使用软件中界面出现的词条,这个可以用手机仔细查看,当然有一部分可能很少出现的提示会有遗漏;
  第二个凡是一对tag里面的,一般情况下就是需要翻译的英文字符串。格式一般为:<item>*******</item> ,或<string name="****">****</string>
  第三个是以大写字母开头的词条,一般都是需要的。
  注意:这三条要综合起来运用,特别是在比较大型的软件中,情况会比较复杂,需要自己不断摸索。
  在解包FlipSilent软件中,没有l文件,因此我们的对象就是l了。用记事本打开l文件,内容如下:

下载 (91.07 KB)
2010-7-20 15:41


  对比一下FlipSilent软件运行界面,一切都就都明白了……

下载 (62.04 KB)
2010-7-20 15:41


android软件  接下来的工作,就是考验各位的英语水准了……

下载 (76.24 KB)
2010-7-20 15:41


  上面就是我翻译的结果了,水平不行,大家见笑……
  修改完毕了,保存退出。
五、打包签名
  改完了l,下面就是打包看看效果了……双击运行【APK工具.BAT】,这次要选【2】。

下载 (60.03 KB)
2010-7-21 11:42


  如果出现的是上面的信息,那么恭喜你,过关了……
  如果有多余的信息,那么说明你修改了不该修改的词条,好好吧,这个就没办法一概而论了。
  在弹出的资源管理器窗口里面,你就可以看到后的软件了。现在试验一下吧。

下载 (46.74 KB)
2010-7-21 11:42


  注意:试验之前,要删除安装的原版软件,否则会安装失败的。

下载 (63.21 KB)
2010-7-20 15:54


  基本就搞定了……等等,怎么那个About按钮还是英文啊,对于追求完美的人,这是绝对不允许的。
  可是在语言资源文件里面,就是不到这个词啊。接着就是下一节了……

  六、深度
  先解释一下为什么还有一些词条没有的原因。
  一般而言,一个编写规范的Android程序,会把所有字符串资源都分离出来,放在valuesl文件中,values目录中 存放的是默认语言字符串资源(一般为英文)。APK程序在处理字符串资源时会先判断语言环境,然后自己调用对应语言的。可是,有的程序员会不自觉地将部分 文字内容写到程序代码里面,因此就出现了在资源文件中不到的词条了。
  对这部分词条的修改,相对就比较复杂一些了,幸好我们有神兵利器:Notepad++
  打开Notepad++软件,选择菜单中的搜索“在文件中查,查目标中输入要查的字符串,这里为About”,在目录中,选择解包后的中的资源文件夹中的smali”文件夹,一定要勾选包含子目录选项。

下载 (69.63 KB)
2010-7-20 15:54


  选定后,点击全部查按钮,NotePad++会将这个文件夹中所有包含About”字符的地方给你列出来。

下载 (78.73 KB)
2010-7-20 15:54


  这里一共到了6个,很明显前面的几个开头字符都是小写,不符合我们的要求,那么必然就是最后一个了,双击最后一行直接定位,修改为关于软件,然后保存……
  注意:
  1.进行这部分修改的时候,不要在修改内容里面包含空格,否则极有可能在重新编译打包的时候出错;
  2.在示例中需要修改的词条很简单,也很好,但是实际操作中,可能会比这个复杂很多,尤其是可能搜索出很多一样的结果,究竟哪些能改,在这里的只有一个大致的判断方法,那就是只能修改const-string v* ***  引号中的字符。
  3.在同时出现多个重复的关键字时,请谨慎修改,有些可能是定义函数的, 具体参考le/p/smali/s ... dalvik-docs/opcodes
  4.修改词条时,记得首先把文本编码变更为UTF-8格式,保存时的文本编码要重新设置为ANSI格式,具体操作在菜单栏的格式中。
  5.打包前确定classes 文件夹下没有其他无用文件,如notepad++的备份文件(为避免这种情况,请确认在菜单栏设置“首选项“备份与自动完成中,禁用自动备份功能)。
  现在再打包签名,安装试验看看效果。

下载 (36.18 KB)
2010-7-20 15:55


  已经改过了吧,现在就可以收工了……
七、修改图标
  软件的内容完成了,应该说就搞定了,不过,软件的图标往往会与手机的主题风格不一致,不够美观,甚至有的软件作者主要精力都在编程序上面,用的就是标准的小绿人,看不出来软件的功能。因此,对图标的美化也是有必要的。接下来我们对图标开刀。
  还是在解包后的资源中,这次我们的目标是res\Drawable下面的图片。原始图片是这样的: