课堂7 项目的打包apk与apk的反编译
· APK是Android Package的缩写,即Android安装包,APK是类似Symbian Sis或Sisx的文件格式,通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
· 生成APK最懒惰的方法(开发模式下用):
只要你运行过Android项目,到工作目录的bin文件夹下就能找到与项目同名的apk文件,这种apk默认是已经使用debug用户签名的。(可以直接拷出来用)
这种方法的坏处—— 打开DDMS,File Exeplorer(模拟器底层的linux文件系统目录),找到data目录,在里面再有一个data目录,里面就是我们安装的所有应用的文件目录结构,里面的项目名称由我们写代码时候工作目录的AndroidManifests.xml里的 Package属性来定义的;如果下一个项目名称也是用这个的话,就会把原来这个覆盖掉。所以一般这个方法在开发模式时这样用。因此我们需要签名。
1.签名的意义:为了保证每个应用程序开发商合法ID,防止部分开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。
2.签名的步骤:
a.创建key
b.使用步骤a中产生的key对apk签名
具体—— IDE中,Android项目右键,Android Tools,Export Signed Application Package…
· apk文件其实是一个压缩文件,我们可以解压缩看看其内部的文件结构(右键直接解压)
但是发现没有src,gen文件,其实所有的class文件都归并到了classes.dex文件中。而资源的索引文件R.java则在resources.arsc中。
反编译apk(两个工具)
· dex2jar
http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
如果是zip文件,解压后,把目标dex文件放到此文件夹中,通过CMD命令进入工具的目录
如
E:>cd 工具目录 ,
执行
dex2jar.bat classes.dex
就会生成classes.dex.dex2jar.jar这样一个jar包,这个jar包就可以使用jd-gui.exe打开。
· JD-GUI
windows版:
http://laichao.googlecode.com/files/jdgui.zip