原文地址
https://mp.weixin.qq.com/s/_orW4HFDYgYSQFrT04Beog
经典:
典型 Android 应用的构建流程如图所示,主要分为以下几步:
编译器将您的源代码转换成 DEX 文件(Dalvik 可执行文件,其中包括在 Android 设备上运行的字节码),并将其他所有内容转换成编译后的资源。
打包器将 DEX 文件和编译后的资源组合成 APK 或 AAB(具体取决于所选的 build 目标)。
打包器使用调试或发布密钥库为 APK 或 AAB 签名。
在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,以减少其在设备上运行时所占用的内存
--
重点
但是我觉得还可以更加简化(面试向)
用什么 -> 把什么 -> 打成什么
aidl-> .aidl -> .classes
aapt -> .jpg -> .R + compiled .jpg
java compiler -> .java -> .classes
dex -> .classes -> .dex
apkbuilder -> .dex -> .apk
jarsigner/apksigner -> .apk -> 签名的.apk
zipalign -> 签名的apk -> 对齐的签名的apk
然后一般会对工具在每个阶段做了什么进行询问。
比如dex这个阶段,有个R8的变化,这个R8相比之前有啥区别/好处
两种签名工具对 zipalign对齐的时机有什么要求?签名有v1,v2,v3,进步在哪里
这篇文章我觉得最好的地方就是把 gradle过程都打出来,重点步骤也标注出来了。(因为现在要关注打包的耗时情况,并进行优化,其实就是缓存策略,from cache )
给原作者点赞