关于android apk打包流程的详解

Android 开发者对于apk再熟悉不过了,但是对于apk是如何生成的,它的打包流程是什么可能还不是很了解。
当然无论是早期Ant或者是目前主流的gradle其实原理以及大致步骤都是一样的。先看下官网的流程图:



关于android apk打包流程的详解_第1张图片


主要包括两个过程:

1,编译过程,编译的内容包括本工程的文件以及依赖的各种库文件,编译的输出包括dex文件和              编译后的资源文件。

2,打包过程。配合Keystore对第一步的输出进行签名对齐,生成最终的apk文件。

上图的具体步骤如下:

1,Java编译器对工程本身的java代码进行编译,这些java代码有三个来源:app的源代码,由资源文件生成的R文件(aapt工具),以及有aidl文件生成的java接口文件(aidl工具)。产出为.class文件。

2,.class文件和依赖的三方库文件通过dex工具生成Delvik虚拟机可执行的.dex文件,可能有一个或多个,包含了所有的class信息,包括项目自身的class和依赖的class。产出为.dex文件。

3,apkbuilder工具将.dex文件和编译后的资源文件生成未经签名对齐的apk文件。这里编译后的资源文件包括两部分,一是由aapt编译产生的编译后的资源文件,二是依赖的三方库里的资源文件。产出为未经签名的.apk文件。

4,分别由Jarsigner和zipalign对apk文件进行签名和对齐,生成最终的apk文件。

总结为:编译-->DEX-->打包-->签名和对齐

这篇文章对打包有更加细致的解读:

http://blog.csdn.net/jason0539/article/details/44917745

你可能感兴趣的:(关于android apk打包流程的详解)