Android编译打包流程

Android编译打包流程


Android的工程代码中间都经历了什么变成了最后能在手机上运行的APK? 这个过程我们称之为编译打包

官方介绍的大概流程是:编译—>dex—>打包—>签名和对齐,那这些流程具体都做了什么呢?下面我们来研究一下

我们的工程中都有哪些资源:res(res目录下的layout drawable等) 、 JavaResource(.java文件)、 AIDL 、asset 、三方库 、AndroidManifest.xml
下面我们看下编译打包阶段对每一种资源的处理:

  1. res资源是通过 Android资源打包工具aapt生成 :res文件(layout color等变成二进制文件 图片和raw的保持原样)、R.java 和 resource.arsc。resource.arsc这个文件记录了应用程序所有的资源目录信息,包括每个资源的名称 类型 值 id 及所配置(手机配置)的位置信息,可以把它想象成一个索引表,给定id和配置可以通过它快速的找到最匹配的资源。
  2. AIDL,Android接口定义语言会生成对应的java接口文件,不懂的可以自行搜索AIDL学习。
  3. JavaResource(R.java aidl生成的.java 原来的.java文件)会经过java编译工具 javac生成Java虚拟机能识别的.class文件
  4. 三方库.class文件 和 步骤3 生成的.class文件 经过dex工具生成,生成多个.dex文件(多个是要看有没有分包),dex是Davik VM能识别的文件。.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统,dex工具的主要工作是将Java字节码转成成Dalvik字节码、压缩常量池、消除冗余信息等
  5. asset、Manifest 和 dex 经过apkBuilder生成,未签名的apk文件
  6. apk文件通过JarSigner签名变成Sign.apk
  7. Signapk通过ziplign进行对齐生成最后的APK,ziplign的主要工作是将apk包进行对齐处理,使apk包中的所有资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问Apk文件时的速度会更快

下面是完整的流程图
在这里插入图片描述
参考文档:
https://www.jianshu.com/p/019c735050e0
https://www.cnblogs.com/xunbu7/p/7345912.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值