网络流传的比较全的图,部分细节可能有差异
Android APK 的编译流程我们可以划分为2个部分:
1.是资源的编译
2.是代码的编译
其中so库是通过NDK编译生成.so文件后直接打进apk的中
资源编译部分,首先apk资源包含哪些内容呢
1.工程中res目录下的所有文件
2.assets目录下的文件
3.andoird清单文件 AndroidManifest.xml
这些资源都是通过aapt工具编译的,最终变编译成一个资源包
代码编译部分包含
1.java源码文件
2.已编译好的java 类库及jar包
3.已编译好的带android资源的类库 即 aar包
4.R类
R类是由资源资源编译时aapt生成的
其中java源文件需要先通过 javac工具编译成 class文件,
然后class文件和所有的jar包、包括aar包中的class文件 通过dx和d8编译器被编译成de文件
编译好的aar文件最后通过zip命令被加入到第一步通过aapt编译生成的资源压缩包中
最后,详细的资源编译和代码编译的内容可以参考后续相关的文章