APK打包流程

APK打包流程

在上文我们介绍了如何使用Android Studio构建Apk,接下来我们探究一下apk的构建流程。

为什么需要学习APK打包的流程?

在插件化、热修复、多渠道打包技术中都需要我们理解APK打包的流程

APK文件构造

将Apk解压后可以看到下面这些文件:

image-20240327162021578

assets:可以包含任何需要的文件,开发者可以在运行是通过AssetManager API访问这些文件

lib:包含了应用的原生库(native libraries),这些库通常是用C或C++编写的。

META-INF:包含了关于应用签名的信息。

res:包含了应用的资源文件,如图片、XML布局、字符串定义等。

AndroidManifest:应用的清单文件,包含应用的名称、版本、权限、注册的Activity、服务等信息

classes.dex文件:包含应用的字节码,这些字节码能被Dalvik虚拟机或者ART运行,可能不只一个dex文件

resources.arsc:包含了应用的预编译资源、如字符串、颜色、样式等。

APK打包工具

在Android的SDK目录下可以找到build-tools文件,

其中有一系列的打包工具

image-20240327155320197

image-20240327155259782

APK打包流程

Apk打包流程

apk打包流程主要有以下几个步骤:

  1. 资源编译:所有的资源文件(如XML、图片、音频等)都会编译成二进制格式。通过aapt打包资源文件、生成R.javaresources.arscres文件(二进制非二进制文件如res/raw保持原样)
  2. 处理.aidl文件, aidl工具将.aidl文件生成对应的Java接口(aidl用于进程间通信)
  3. 代码编译:通过Java Compiler编译R.java、java接口文件、Java源文件,生成.class文件,通过dx/d8工具将.class文件处理生成classes.dex
  4. APK打包:编译后的资源文件、Dex文件、清单文件(AndroidManifest.xml)以及其他必要的文件(如证书文件)通过apkBuidler被打包成一个未签名的APK文件。
  5. APK对齐:未签名的APK文件被对齐优化(它确保所有未压缩的数据在APK文件中的偏移量都对齐到相应的字节边界),这可以使得APK文件在设备上运行时消耗更少的内容。
  6. APK签名:对齐后的APK被签名。签名可以保证APK文件的完整性和来源的可信度。
  7. 验证:最后,可以使用apksigner工具来验证APK文件的签名是否正确。

关注我,分享更多安卓开发知识👍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值