一.编译阶段(resources文件)

1.每个module中的内容可以分为两部分: resources 资源文件 (包括:XML 动画 DW图片 音视频) Java /Kotlin 源代码()

2.APPT工具负责变异这些资源文件,所有资源文件都会编译处理,XML和DR图片外其都会被编译成二进制文件

assets和raw目录下的文件并不会被编译,会直接打包到Apk到压缩包中.

编译后的文件主要包含:resources.arsc文件(资源索引表) R.Java文件(定义资源ID 常量)

resources文件是一个MAP映射表,MAP的key是R.java的资源ID,value是对应资源所在的路径.

二.编译阶段(源码部分)

源码会通过javac编译为.class字节码文件,.class文件会和库文件中的.class一同被dx工具优化为.dex文件

如果有分包,会生成多个.dex文件 如果包含 .aidl文件,这些文件会被编译成 .java文件

三.打包阶段

1.使用APK Builder 将编译后的resource和.dex文件一起打包到apk中

实际上还有其他资源(androidManifest.xml 和.so文件)

2.apk创建好之后,需要共jarsigner进行签名

签名之后会生成META_INF文件,保存签名相关的文件

CERT.SF :生成每个文件相对的密钥

MACIFEST.MF :数字签名信息

XXX.SF :JAR文件的签名文件

XXX.DSA :输出文件的签名和公钥匙

3.使用Zipalign对APK为压缩的资源进行对齐操作(4字节边界对齐)

目的就是JAVA思想中的加快资源的访问速度 ,不用遍历 直接读取4*N

[完整的apk解压后的内容展示]

androidManifest.xml
assets
class.dex class2.dex META_INF res resources.arsc

四.PMS安装过程(拷贝安装包 装载代码)

->点击app安装包(预设的Activity)

->弹出安装界面 (Packageinstalleractivit)

->接着显示安装APK信息(PackageinstallerSession-PMS)

->安装成功后会发一个ACTION_PACKAGE_ADDED,手机桌面应用收到广播

->安装成功,就会把APK启动ICON显示在桌面!

发表评论

后才能评论