Android 编译到运行APK过程总结

本文详细总结了Android APK的编译过程,包括XML资源编译为R.java,Java文件转为.class,再由.dex工具生成.dex文件。在Davlik模式下,dex文件经过优化变为文件;而在Art模式下,生成文件。接着,dex文件与其他资源打包成apk,并进行签名和优化。APK包内容包括编译后的AndroidManifest.xml、assets、classes.dex、lib目录、META-INF和res目录。最后,阐述了APK运行时.dex文件如何加载到虚拟机执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

APK编译过程

这里写图片描述

  1. Android通过AAPT工具将.xml资源文件编译成R.java的二进制文件,除了assets、raw目录下的文件;
  2. 将java文件编译成.class文件;
  3. 通过dex工具将.class文件转换成.dex文件
  4. 优化dex文件 : Davlik模式下使用 dexopt工具将.dex文件优化得到.odex文件 ; Art模式下使用dexoat工具将.dex文件优化得到.oat文件;
  5. apkbuilder会将.dex文件和未被编译的文件编译成apk;
  6. apkSinger对apk签名;
  7. zipalign对签名后的apk进行优化

APK包内容

这里写图片描述

Android 安装的apk文件实际上是以.zip结尾的压缩文件,解压后的文件内容如上图所示

  • AndroidManifest.xml对应源代码中的AndroidManifest.xml, 但这里是编译过的,文件内容已经不同了;

  • assets对应源代码的assets目录, 是直接复制过来的;

  • classes.dex(classes2.dex、classes3.dex等等)是包含所有Java文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值