Android APK编译打包过程

参考网址: 浅谈Android编译打包流程

一、基本概念

1、apk本质是一个压缩包,把后缀名改成zip,就可以看到apk文件的所有内容。
2、为什么不直接使用zip,答案:系统规定的不允许
3、apk如何加载: 通过应用管理器这个程序,扫描所有的apk文件,把它们标记为可加载的程序,当安装apk时,把它进行解压处理
4、apk解压后包含的文件:

文件名备注
lib所有的so动态链接库,不会被压缩处理
assets资源文件,不会被压缩处理
res资源文件,二进制的xml文件和图片资源文件
Android manifest.xml二进制xml文件
class.dexjava代码通过处理得到的
META-INF签名文件夹
resources.arsc资源索引表

二、打包流程

流程名备注
AAPT编译/打包资源文件,生成R.java和resources.arsc和res资源文件
aidl把aidl生成java文件
java compile把java文件编译成.class文件
dex把.class文件转换成dex文件
apk building打包生成.apk文件
jar signer对apk进行签名
zipalign对apk做对齐处理

备注:

R.java定义了各个资源ID变量
resources.arsc是资源索引表
我们常用的findviewByid就是先在R.java中获取变量ID,然后在resources.arsc中查到对应的资源文件位置
assets和res/raw的资源会被原封不动的打包到apk中,不会被编译成二进制,其他资源文件会经过特殊处理,进行压缩,过滤等
assets和raw的区别: raw会在R.java中生成资源id,assets不会被映射到R.java,访问它需要使用assetManager
res/values会被编译到resources.arsc中
通过dx工具把java 字节码转换为 dalvik字节码,压缩常量池,消除冗余信息等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值