android APK打包过程学习笔记分享

1.先来张图压压惊
这里写图片描述


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字节整数倍。
    对齐之后可以减少运行时内存的使用。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值