编译打包流程图
输入部分
- 资源文件,res目录的各种资源如图片动画等等
- AIDL接口文件 - 代码源文件
- 第三方资源包,分为两类:a.java类包(JAR\AAR),b.非Java类包(.so)
具体步骤
- aapt工具编译res资源文件,把大部分xml文件编译成二进制文件(图片文件除外),同时生成R.Java文件和resources.arsc文件,里面保存了资源的ID和在APK中的路径。
- 如果项目中有使用AIDL,那么就会把.aidl文件编译成.java文件。
- 将所有.java文件(包括R文件和AIDL生成的.java文件),通过javac工具生成class文件。
- 将生成的.class文件和第三方库的.class文件通过dx工具生成classes.dex文件(如果有分包,那么可能有多个)。
- 第1步中的资源文件、dex文件和第三方的非java资源包(.so),通过apkbuilder工具生成未签名的apk包。
- 签名,jarsigner工具,如果是debug模式用默认签名,release模式用开发者的签名。
- 对齐,通过zipalign工具对apk中的未压缩资源(图片、视频)进行“对齐操作”,让资源按4字节的边界进行对齐,使得资源访问速度更快。
参考链接
https://www.cnblogs.com/ldq2016/p/10308559.html
https://www.imooc.com/article/76100