Android build过程

AndroidStudio assembleRelease

  1. 预编译如果主module依赖其他module也会进程编译
  2. 打包资源文件
  3. 处理配置清单文件和资源文件
  4. 编译源码编译成字节码
  5. 依赖的library生成aar文件,application生成apk

应用生成的过程

编译过程 .png
  1. 资源通过aapt生成R.java。
    输入
    (1)Resource文件(即工程res中的文件)
    (2)Assets文件(即工程assets中的文件)
    (3)AndroidMainfest.xml文件
    (4)Android基础类库(Android.jar文件)
    输出
    (1)R.java文件(在model工程的build/generated目录)
    (2)打包好的资源

  2. aidl文件,通过aidl生成aidl.java
    输入
    (1)aidl文件
    (2)framework.aidl文件
    输出
    (1)可用于进程通信的C/S端java代码,位于build/generated/source/aidl

  3. 通过java compiler编译R.java、java接口、java源文件生成class文件
    输入
    (1)源码文件(包括第1步的R.java和第2步AIDL生成的.java文件)
    (2)库文件(.jar文件)
    输出
    (1)对应的.class文件(对于gradle编译,在build/intermediates/classes里,看到输出的class文件)

  4. 通过dex命令将.class文件和第三方库的.class文件打包生成dex文件
    输入
    (1)第3步生成的.class文件(包括AIDL、R.java、源代码生成的.class文件)
    (2)库文件(.jar文件)
    输出
    (1)对应的.dex文件

  5. 通过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文件

  6. 通过jarsigner工具对生成的apk进行签名
    输入
    (1)未签名的.apk文件
    输出
    (1)签名的.apk文件

  7. 通过zipalign工具,将签名后的apk进行对齐
    输入
    (1)签名的.apk文件
    输出
    (1)对齐后的.apk文件

其他文章
Apk文件结构

参考:
https://blog.csdn.net/chenliguan/article/details/80727826

你可能感兴趣的:(Android build过程)