一、apk的打包流程
1、打包资源文件Application Recourse,生成R.java文件
aapt来打包res资源文件,生成R.java、recources.arsc和res文件
- R.java:我们在编写代码的时候会用到的,里面有静态内部类,资源等。
- recources.arsc: 编译之后的二进制文件,记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID/以及所配置的维度信息,这是一个资源索引表,在给定资源ID和设备配置信息的情况下,能够快速找到资源。
- res:存放的是经过编译之后的资源文件,其中的每一个资源都会生成资源ID
2、处理aidl文件,生成相应的JAVA文件
aidl:安卓接口描述语言,它是安卓提供的用于进程间通讯的机制
,位于android-sdk/platform-tools目录下,aidl工具解析接口定义文件然后生成相应的java代码接口供程序调用。如果项目没用到aidl则跳过这一步。
3、编译项目源代码,生成class文件
java compiler阶段,项目中所有的java代码,包括R.java和第二步生成java代码接口文件都会被java编译器javac编译成.class文件,生成的class文件位于工程中的bin/classes目录下
4、转换所有的class文件,生成classes.dex文件
dex阶段,通过dx工具,将.class文件和第三方库中的.class文件处理生成classes.dex文件,该工具位于android-sdk/platform-tools目录下,dx工具的主要工作是将java字节码转成Dalvik字节码
。
5、打包生成apk文件
apkbuilder阶段,通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和class.dex一起打包生成apk,打包工具apkbuilder位于android-sdk/tools目录下
6、对apk文件进行签名
jarsigner阶段,通过jarsigner工具,对上面的apk进行debug或release签名
7、对签名后的apk文件进行对齐处理
通过zipalign工具,将签名后的apk进行对齐处理,工具位于android-sdk/tools目录下。对齐的主要过程是将apk包中所有的资源文件距离文件其实便宜为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快,对齐的作用就是减少运行时内存的使用。
二、apk的安装、卸载流程
安装流程:
1、在data中的app路径下,以包名创建一个文件夹,并把apk文件放入进去,并产生了一个lib文件夹,放置了加载app所用的so文件
2、在data/data下,以包名为文件夹,把程序所用的资源文件放在其中,在这其中也是有相应的so文件的,如果我们不想加载so文件,那这个文件夹中的so文件也需要进行删除
3、在data/dalvik-cache把相应架构的dex文件写入其中
4、在data/system/package.xml把我们整个app进行声明,包括源码路径
卸载流程:
删除过程与上述过程相同
三、虚拟机
3.1 java虚拟机
基于栈架构,自己实现了与硬件交互的系统,执行的是.java编译之后的.class文件
3.2 dalvik虚拟机(jit机制)
android5.0以下系统的手机使用的dalvik虚拟机,执行的是dalvik字节码
,dalvik可执行文件体积更小,基于寄存器架构。我们知道apk在打包的时候会将.java代码编译成.class文件,但是dalvik虚拟机只会执行.dex文件,这个时候dx会将.class文件转换成dalvik虚拟机执行的.dex文件。dalvik虚拟机在程序启动的时候会先将.dex文件转换成快速运行的机器码,又因为65535这个问题,导致我们在应用冷启动的时候有一个合包的过程,最后导致一个结果就是我们的app启动慢,这就是dalvik虚拟机的特性
。注意,dexopt对.dex文件进行优化成为.odex文件,dalvik虚拟机加载执行的为.odex文件
。
3.3 art虚拟机(aot机制)
android5.0及以上的系统使用的是art虚拟机
, art虚拟机兼容dalvik虚拟机的特性,但是art有一个很好的特性AOT,这个特性就是我们在安装apk的时候就将dex直接处理成可直接供art虚拟机使用的机器码
,art虚拟机将.dex文件转换成可直接运行的.oat文件,art虚拟机天生支持多dex,所以不会又一个合包的过程,所以art虚拟机会很大的提升app的冷启动速度
。注意:dex2oat将.dex文件转化为.oat文件,art虚拟机执行的是.oat文件
。
xposed hook的是java代码,所以xposed 87版本不支持5.0以及以上系统,89版本的支持5.0-7.1
四、android killer的安装及配置
- 下载链接:http://pan.baidu.com/s/1dFzYtA5 密码:2gep