AndroidStudio assembleRelease
- 预编译如果主module依赖其他module也会进程编译
- 打包资源文件
- 处理配置清单文件和资源文件
- 编译源码编译成字节码
- 依赖的library生成aar文件,application生成apk
应用生成的过程
资源通过aapt生成R.java。
输入
(1)Resource文件(即工程res中的文件)
(2)Assets文件(即工程assets中的文件)
(3)AndroidMainfest.xml文件
(4)Android基础类库(Android.jar文件)
输出
(1)R.java文件(在model工程的build/generated目录)
(2)打包好的资源aidl文件,通过aidl生成aidl.java
输入
(1)aidl文件
(2)framework.aidl文件
输出
(1)可用于进程通信的C/S端java代码,位于build/generated/source/aidl通过java compiler编译R.java、java接口、java源文件生成class文件
输入
(1)源码文件(包括第1步的R.java和第2步AIDL生成的.java文件)
(2)库文件(.jar文件)
输出
(1)对应的.class文件(对于gradle编译,在build/intermediates/classes里,看到输出的class文件)通过dex命令将.class文件和第三方库的.class文件打包生成dex文件
输入
(1)第3步生成的.class文件(包括AIDL、R.java、源代码生成的.class文件)
(2)库文件(.jar文件)
输出
(1)对应的.dex文件通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件、classes.dex打包生成apk文件
输入
(1)第1步打包后的资源文件(包含resources.arcs的.ap_文件,包括本地和第三方库里的)
(2)第4步打包后的.dex文件
(3)其他资源:libs文件(包括:jni开发生成的.so文件,如果涉及C/C++开发的话)
输出
(1)未签名的.apk文件通过jarsigner工具对生成的apk进行签名
输入
(1)未签名的.apk文件
输出
(1)签名的.apk文件通过zipalign工具,将签名后的apk进行对齐
输入
(1)签名的.apk文件
输出
(1)对齐后的.apk文件
其他文章
Apk文件结构
参考:
https://blog.csdn.net/chenliguan/article/details/80727826