IT之家学院:安卓的APK安装包里都有些什么?

  • 时间:
  • 浏览:1
  • 来源:幸运快3_快3大小_幸运快3大小

应用任务管理器是安卓系统重要的组成主次,大伙儿里能 通过很多最好的方法在安卓系统上安装应用任务管理器,就像Windows系统的appx和塞班系统的sis一样,安卓系统的应用任务管理器都不 其专属的安装包格式——apk。

apk的全称是AndroidPackage,翻译成中文可是我“安卓安装包”。既然apk是“包”,那可是我明底下包着很多东西,这就帮我很好奇了,底下到底许多你你这些啊?

apk随便说说可是我一个 压缩文件,把它的文件扩展名改成zip格式并且里能 直接解压,今天,IT之家就拆开一个 安卓应用的安装包,带大伙儿看看底下到底都不 些你你这些。

大伙儿今天开刀的小白鼠是微软最近上架的待办事项应用——Microsoft To-Do。

▲是因为apk是个压缩文件,很多直接把它的扩展名改为zip即可。

将安装包解压后,大伙儿里能 都看底下的许多文件夹和文件:

应用任务管理器所有的代码、资源和配置文件都不 底下,大伙儿来一个 一个 看。

一、/assets

通常你你这些文件夹里存放的是许多静态文件,比如说明文档是因为字体文件,大伙儿以Microsoft To-Do的安装包为例,它的/assets目录下有个名为fonts的子目录,打开它,大伙儿里能 都看一个 ttf格式的字体文件。

当然了,不类事型应用的安装包,它/assets底下中含的资源也是不同的,比如许多浏览器应用的/assets目录下有很多html格式的文件,你你这些文件用旗鱼浏览器里能 直接打开:

二、/META-INF

通常你你这些文件夹里存放的是安装包的签名证书和安装包中所有文件哈希值的计算结果。

应用任务管理器的安装包在打包的并且,每个文件都不 经过校验计算,计算结果就存倒进/META-INF里,

大伙儿里能 直接使用文本编辑器来打开后缀名为MF和SF的记录你你这些文件校验计算结果的文件:

在大伙儿安装一个 应用的并且,系统会首先根据/META-INF里的文件校验结果来核实安装包中文件的正确性和删改性,目的是确保安全,处理用户安放进遭受过病毒感染的是因为被恶意篡改过的应用任务管理器。

你你这些文件夹下的RSA格式的文件是开发者对该应用任务管理器进行签名的签名证书文件,玩过塞班系统的同学应该对你你这些词何必 陌生,这也是为了保证应用任务管理器和系统的安全,签名文件都不 纯文本格式,不过当大伙儿用文本编辑器打开它时,里能 在乱码中零散地都看Microsoft Corporation字样。

三、/res

res是resource的缩写,底下存放的是应用任务管理器的资源文件,比如图片素材和布局文件,你你这些文件夹下有很多子目录,

其中,以anim开头的文件夹,通常底下存放的是应用任务管理器的动画效果资源;

以color开头的文件夹,通常底下存放的是应用任务管理器的各种颜色值;

以drawable开头的文件夹,通常底下存放的是应用任务管理器的图片或图形资源;

许多以drawable开头的文件夹在结尾会跟着诸如hdpi、xhdpi从前表示解析度的字符,目的是适配不同分辨率的屏幕。

大伙儿来进入一个 以drawable开头的文件夹,里能 都看底下有png和webp格式的图片,其中,webp格式的图片里能 用旗鱼浏览器打开:

以layout开头的文件夹,通常底下存放的是应用任务管理器的界面布局文件;

以mipmap开头的文件夹,Microsoft To-Do在底下存放了应用图标。

四、/AndroidManifest.xml

AndroidManifest.xml是一个 单独的文件,底下中含很多信息,比如应用任务管理器的包名、数据权限、接口权限、版本信息、安装参数等等,另外,它还里能 声明应用任务管理器的每一个 组件及其属性,声明应用任务管理器所申请的权限、任务管理器,声明显示模式等等,AndroidMainfest.xml底下中含的信息很多了,单独为它开一篇文章都不 为过。这是一个 非常重要的文件,它的名称是固定的,只能随意修改。

五、/classes.dex

这是可在安卓的Dalvik虚拟机中直接运行的字节码,是由JAVA的源代码经过比较复杂的编译形成的,和传统的.class文件相比,dex文件的运行波特率更高。

六、/lib

随便说说Microsoft To-Do的安装包中不中含你你这些文件夹,不过它在许多安卓应用任务管理器安装包中的出镜率还是挺高的,通常你你这些文件夹中会存放许多应用任务管理器依赖的库,一般以.so结尾。

人们是因为会问了,你带大伙儿把apk拆开了,从前底下的东西有好多都看不了啊,打开并且是乱码,有你你这些用啊?何必 着急,请接着往下看。

七、安卓应用的反编译

是的,安卓应用安装包里的很多文件中的内容大伙儿是只能直接都看的,比如Microsoft To-Do应用,它底下的xml文件和dex文件用文本编辑器打开并且显示的是乱码,是因为你想愉快地都看你你这些文件的真身,那就需用对它的安装包进行反编译。

要对安卓应用进行反编译,大伙儿需用做一下准备:

环境准备:

安装JAVA:官网地址

要怎样判断你的JAVA不是安装成功了呢?很简单,打开命令提示符,输入命令:

java

回车,是因为显示如下:

那可是我明JAVA安装成功了。

工具准备:

apktool:下载地址

dex2jar:下载地址

jd-gui:下载地址

在并且结束了了并且大伙儿先来语录你你这些个 工具是干啥的

apktool的作用是把apk中你你这些直接打开并且显示为乱码的xml文件翻译成明文;

dex2jar的作用是将classes.dex转化为.jar文件;

jd-gui的作用是查看.jar文件中的源代码。

大伙儿并且结束了了吧

首先,大伙儿新建一个 文件夹(任何位置都里能 ,小编把文件夹建在了桌面上),并且把大伙儿下载好的一个 工具扔进去;

解压那一个 zip格式的压缩包到当前文件夹;

接着把帮我处理的apk文件扔到你你这些文件夹中的某个地方,小编的做法是在你你这些文件夹里再建了一个 名为apk的文件夹,把apk文件扔到了apk文件夹里:

准备工作至此完成,大伙儿并且结束了了翻译xml。

打开命令提示符,cd进你并且新建的存放着那一个 工具的目录,以小编的电脑为例,则是输入命令:

cd C:\Users\Lenovo\Desktop\apktools

接着,输入命令:

java -jar apktool_2.0.1.jar d -f [apk文件所在位置.apk] -o MMTS

并且回车。

以小编的为例,则是输入:

java -jar apktool_2.0.1.jar d -f C:\Users\Lenovo\Desktop\apktools\apk\todo.apk -o MMTS

是因为一切顺利语录,将显示如下:

这时,你来到你那一个 工具所在的文件夹,并且你都看底下新增了一个 文件夹,名为MMTS,打开它,你就会都看你不让的东西:

大伙儿来尝试打开一个 xml文件:

很好,这次终于都不 乱码了。

接着大伙儿来反编译应用任务管理器的java源代码

大伙儿来到存放那一个 工具的文件夹,打开底下的dex2jar-2.0文件夹,把apk包中的classes.dex扔进去。

打开命令提示符,cd进dex2jar-2.0所在目录;

输入命令:

d2j-dex2jar classes.dex

回车。

是因为一切顺利语录,将显示如下:

这时,大伙儿回到dex2jar-2.0文件夹,里能 都看一个 新生成的名为classes-dex2jar.jar的文件,这可是我大伙儿需用的文件。

大伙儿来到存放那一个 工具的文件夹,打开底下的jd-gui-windows-1.4.0文件夹,双击jd-gui.exe来运行jd-gui。

依次点击File-Open file,选着 大伙儿并且得到的classes-dex2jar.jar,打开它,你就能都看应用任务管理器的JAVA源代码了。

需用注意的是,许多应用,它的class是被混淆过的(比如Microsoft To-Do,如下图):

底下的类文件名称和最好的方法名称都采取了a、b、c…从前的命名最好的方法。

从前做为了处理反编译,不过就算从前,大伙儿通过反编译得到的源代码也都不 只能看。

好的,今天大伙儿分析了安卓应用任务管理器安装包的形态和底下的文件和文件夹的作用,甚至还通过反编译都看了源代码,是因为你是安卓应用开发的初学者,想拆开一个 apk安装包来研究和参考,没人希望这篇文章里能 对你有所帮助。