APK 打包流程

前言:

将apk文件修改后缀名为.zip后解压
APK 打包流程_第1张图片
app解压

classes.dex 是.dex文件所有java编译的class文件都在这里。
resources.arsc是resources resources文件。
AndroidManifest.xml是AndroidManifest.xml文件。
res是uncompiled resources,即所有的资源文件。
META-INF是签名文件夹。

META-INF其中有三个文件:

MANIFEST.MF文件
版本号以及每一个文件的哈希值(BASE64)。包括资源文件。这个是对每个文件的整体进行SHA1(hash)。

CERT.SF文件
这里是对Manifest.MF文件的每个项的三行再做一次SHA1。而

CERT.RSA
这个文件保存了签名和公钥证书。

具体打包过程

1.aapt来打包res资源文件
会生成R.java、resources.arsc和res文件,除了raw目录下的资源,其他都是编译成二进制

--raw。这类资源以任意格式的文件保存在res/raw目录下,它们和assets类资源一样,都是原装不动地打包在apk文件中的,不过它们会被赋予资源ID,这样我们就可以在程序中通过ID来访问它们。

resources.arsc这个文件记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID以及所配置的维度信息。我们可以将这个resources.arsc文件想象成是一个资源索引表,这个资源索引表在给定资源ID和设备配置信息的情况下,能够在应用程序的资源目录中快速地找到最匹配的资源。

2.aidl生成对应的Java接口文件

3.java编译生成class文件

4.通过dex命令,将.class文件和第三方库中的.class文件处理生成优化后的classes.dex

5.将classes.dex、resources.arsc等所有资源打包生成apk

6.apk签名

7.Zipalign进行apk对齐(优化apk)

你可能感兴趣的:(APK 打包流程)