1.先来张图压压惊
android APK打包过程学习笔记分享


aapt->aidl -> javac-> dx(dex)-> apkbuilder-> jarsigner-> zipalign

  • aapt:Android资源打包工具( …\Android\sdk\build-tools\25.0.0\aapt.exe)。
    打包资源文件,生产R.java文件,在这个过程中,项目中的AndroidManifest.xml文件和布局文件XML都会编译,然后生成相应的R.java,另外AndroidManifest.xml会被aapt编译成二进制。存放在APP的res目录下的资源,该类资源在APP打包前大多会被编译,变成二进制文件,并会为每个该类文件赋予一个resource id。对于该类资源的访问,应用层代码则是通过resource id进行访问的。Android应用在编译过程中aapt工具会对资源文件进行编译,并生成一个resource.arsc文件,
    resource.arsc文件相当于一个文件索引表,记录了很多跟资源相关的信息。
  • aidl :Android接口描述语言转化为.java文件的工具(…\Android\sdk\build-tools\25.0.0\aidl.exe)
    aidl工具解析接口定义文件,然后生成相应的java接口,供程序调用。
    如果项目中没有使用到aidl文件,那么这个过程可以跳过。
  • javac:编译项目源代码,生成.class文件
    项目中所有的java文件,包括R.java文件和**.**aidl文件,都会被java编译器(Java Compiler)编译成.class文件。
    生成的class文件位于工程中的bin/classes目录下。
  • dx(dex):通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex。因为Android虚拟机只能执行dex文件!
  • apkbuilder:生成apk包
    将classes.dex、resources.arsc、res文件夹(res/raw资源被原装不动地打包进APK之外,其它的资源都会被编译或者处理)、 Other Resources(assets文件夹)、AndroidManifest.xml打包成apk文件。
  • jarsigner:对apk进行签名,可以进行Debug和Release 签名
  • zipalign:release mode 下使用 aipalign进行align,即对签名后的apk进行对齐处理。
    在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,位于android-sdk/tools目录下。
    对齐的主要过程是:
    将Apk包中的所有资源文件距离文件起始位置偏移4字节整数倍。
    对齐之后可以减少运行时内存的使用。

学习笔记会有一些别人写的内直接复制过来了,感觉好偷懒,哈哈,一个集美貌与才华与一身的傲娇程序媛。

相关文章:

  • 2022-12-23
  • 2021-04-03
  • 2021-07-27
  • 2021-04-10
  • 2021-05-16
  • 2021-05-26
  • 2021-06-04
猜你喜欢
  • 2021-06-01
  • 2022-01-04
  • 2022-01-13
  • 2021-10-18
  • 2021-04-22
  • 2022-12-23
  • 2021-12-10
相关资源
相似解决方案