今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子
你可能有疑问,为什么要那么麻烦,从系统来拿,还要反编译,如果我们有网络的时候,当然可以直接去Android的源码那里下载啦(Android源码下载方法),但如果我们没有网络呢,那么我们就可以通过这样来研究Android自带的apk啦
首先,我们讲一下怎样获取那个apk,其实很简单的,作为一个Android的开发人员,肯定会用过模拟器的啦,我们获取apk就是通过模拟器来获取的
我们先打开一个模拟器。然后去到ddms里面去,我们就可以看到
有设置的apk啦,有打电话的apk啦,有照相的apk啦,所以大家如果没有网络的话,就可以在这里拿到系统的apk,然后反编译,就可以研究一下系统是怎样写的啦
系统自带的apk都在里面啦,那么我们的短信的apk在那里呢
短信的apk就是一个叫Mms的apk,大家可以找到它,然后把它导出来
接下来,我们还需要三个工具,分别是
apktool 它可以拿到apk里面的资源文件,我们要下载两个文件,分别是apktool1.5.2.tar还有apktool-install-windows-r05-ibot.tar
dex2jar 它可以把apk里面的dex文件转换成jar文件,下载地址
jd-gui 它可以把jar文件或class文件反编译成java文件,下载地址
好啦,我们把三个工具下载好
然后解压出来
然后呢,我们把apktool1.5.2里面的那个jar文件复制到apktool-install-windows-r05-ibot这个目录下面
然后呢把那个之前导出的短信的apk也拷贝到这个目录下面,然后在dos下面进入到这个目录,然后输入命令apktool d Mms.apk
我们就可以看到,这个目录有一个叫Mms的目录了,这个就是Mms.apk这个apk里面的资源啦
接下来,我们就要用winrar这些压缩软件来打开那个Mms.apk啦,其实apk的压缩方式和jar的压缩方式是一样的,和rar的压缩方式也是一样的
我们要把classes.dex这个文件拷贝出来,然后放到dex2jar这个目录下面,然后在dos下进入到这个目录,然后运行命令,dex2jar classes.dex
就这样,我们就拿到了一个jar文件啦,现在我们就 把那个jar文件拷贝出来,然后放到jd-gui这个目录下面
然后就双击那个jd-gui.exe
然后就File-->OpenFile
然后就打开刚刚那个jar就可以啦
就这样子,我们就可以看到源码啦,资源文件在apktool那里,把它也拿下来就可以的啦