App 的编译和打包流程

源代码 2024-9-28 11:06:15 88 0 来自 中国
APK 的编译打包流程

打包所必要工具:



包罗aapt.exe aapt2.exe  aidl.exe dx.bat等工具
1.打包资源文件

AAPT,全称Android Asset Packaging Tool,以是这个构建工具就是用来打包资源文件的。
资源文件包罗:图片,res目次下的xml文件,AndroidManifest.xml文件;
处置惩罚资源文件紧张包罗两步:
1、编译:将资源文件编译为二进制格式。
把全部的Android资源文件举行剖析,天生扩展名为.flat的二进制文件。比如是png图片,那么就会被压缩处置惩罚,接纳.png.flat的扩展名。
2、链接:合并全部已编译的文件并打包到一个软件包中。
首先,这一步会天生辅助文件,比如R.java(R文件),R文件大家应该都比力熟悉,就是一个资源索引文件,我们平时引用也都是通过R.的方式引用资源id。
末了,会将R文件和之前的二进制文件举行打包,打包到一个APK压缩包(没有dex文件、没有署名)。
2.处置惩罚.aidl file

.aidl(Android Interface Description Language)文件必要通过 aidl 工具转换成编译器可以或许处置惩罚的 Java 接口文件。
3.编译java文件

用到的工具就是大家熟知的javac,通过它将java文件编译成.class文件。
4.天生dex文件

由于.class 并不是 Android 体系所能识别的格式,以是还必要通过 dex 工具将它们转化为相应的 Dalvik 字节码(包罗压缩常量池以及打扫冗余信息等工作)。这个过程中还会参加应用所依靠的全部 “第三方库”
再谈谈这三个工具(dx/r8/d8)的区别:
dx是最早的转换工具,用于转换class文件为dex文件。
Android Studio 3.1之后,引入了D8编译器和 R8 工具。
5.天生APK包

这一步就是天生APK文件,将manifest文件、resources文件、dex文件、assets文件等等打包成一个压缩包,也就是apk文件。通过apkbuilder等工具打包成apk文件。
6.署名

在天生APK文件之后,必须对该apk文件举行署名,否则无法被安装。
之前大家比力熟知的署名工具是JDK提供的jarsigner,而apksigner是Google专门为Android提供的署名和签证工具。现在署名范例有V1、V2、V3、V4署名。
题目:

APK 署名:v1 v2 v3 v4署名有什么区别?

总结:
v1 署名实际上就是 JAR 署名的方案,它不会保护 APK 内的全部题目,存在安全和服从题目
v2 署名是一种全文件署名方案,增长了 APK 署名块(APK Signing Block),但仍无法办理更换署名的题目。但现在主流还是v2署名。
v3 署名是 v2 的升级版,也被称为 v2+。在 V2 插入的署名块(Apk Signature Block V2)中,又添加了一个新快(Attr 块),它使用链表存储了全部的署名信息,验证时就像 CA 证书的证实过程。只要旧署名证书在手,我们就可以通过它在新的 APK 文件中,更改署名。
v4 署名是为了 增量安装 技能而产生的一种新的署名方案。
参考:https://cloud.tencent.com/developer/article/2086637
为什么 XML 资源文件要从文本格式编译成二进制格式?

1、空间占用更小:由于全部 XML 元素的标签、属性名称、属性值和内容所涉及到的字符串都会被同一网络到一个字符串资源池中,而且会去重。有了这个字符串资源池,原来使用字符串的地方就会被更换成一个索引到字符串资源池的整数值,从而可以镌汰文件的巨细。
2、剖析服从更高:二进制格式的 XML 文件剖析速率更快。这是由于二进制格式的 XML 元素内里不再包罗有字符串值,因此就避免了举行字符串剖析,从而进步了剖析服从。
参考:https://www.jianshu.com/p/4bcf83b42f3b
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 08:19, Processed in 0.170858 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表