Android构建流程——篇一

Android构建流程

    • 前言
    • apk 构建流程
    • 参考文献

前言

大家平时开发Android项目时一般都是点击AS run按钮,这样apk会自动安装到手机上,这整个过程到底发生来什么呢?

今天就来梳理下整个流程gradle做了什么,讲解前先来熟悉下apk整体构建流程

apk 构建流程

官方新图
Android构建流程——篇一_第1张图片
如图 1 所示,典型 Android 应用模块的构建流程通常按照以下步骤执行:

  1. 编译器将您的源代码转换成 DEX 文件(Dalvik 可执行文件,其中包括在 Android 设备上运行的字节码),并将其他所有内容转换成编译后的资源。
  2. APK 打包器将 DEX 文件和编译后的资源合并到一个 APK 中。不过,在将应用安装并部署到 Android 设备之前,必须先为 APK 签名。
  3. APK 打包器使用调试或发布密钥库为 APK 签名:
    • 如果您构建的是调试版应用(即专用于测试和分析的应用),则打包器会使用调试密钥库为应用签名。Android Studio 会自动使用调试密钥库配置新项目。
    • 如果您构建的是打算对外发布的发布版应用,则打包器会使用发布密钥库为应用签名。如需创建发布密钥库,请参阅在 Android Studio 中为应用签名。
  4. 在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,以减少其在设备上运行时所占用的内存。
    构建流程结束时,您将获得应用的调试版 APK 或发布版 APK,以用于部署、测试或发布给外部用户。

上面是官方新图,感觉没有旧图详细
Android构建流程——篇一_第2张图片
从上图可以看出APK打包流程主要分以下几个步骤

  1. aapt工具处理app res文件,生成R.java 、resources.arsc(资源映射关系表)、res文件
  2. aidl工具处理aidl文件,生成对应的java文件
  3. javac 对上述二个步骤中生成的java文件和项目中源代码文件进行编译,生成字节码文件(.class)
  4. dex工具接受步骤3中的.class文件、第三方库的.class文件处理生成dex文件
  5. apkbuilder工具将aapt生成的resources.arsc、res文件、dex文件一起打包生成apk
  6. 使用Jarsigner工具对apk进行签名
  7. 步骤6的产物进行zipalign操作(减少运行应用时消耗的 RAM 容量)

参考文献

  • https://developer.android.com/studio/build/index.html?hl=zh-cn#build-config
  • https://developer.android.com/studio/command-line/aapt2
  • https://developer.android.com/studio/command-line/zipalign.html

你可能感兴趣的:(android开发)