700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > APK打包流程

APK打包流程

时间:2023-01-23 15:28:14

相关推荐

APK打包流程

典型的Android应用模块的构建流程通常遵循以下步骤:

编译器将源代码转换成.DEXDalvik Executable)文件(其中包括Android设备上运行的字节码),将所有其它内容转换成已编译资源;APK打包器将.DEX文件和已编译资源合并成单个APK。 不过,必须先签署APK,才能将应用安装并部署到Android设备上;APK打包器使用调试或发布密钥库签署APK; 如果构建的是调试版本的应用(即专用于测试和分析的应用),打包器会使用调试密钥库签署应用。Android Studio自动使用调试密钥库配置新项目;如果构建的是打算向外发布的发布版本应用,打包器会使用发布密钥库签署应用; 在生成最终APK之前,打包器会使用zipalign工具对应用进行优化,减少其在设备上运行时占用的内存;

1 打包资源文件

Android应用的编译过程中,AAPT(Android Assert Packaging Tool)工具会对res目录下的资源文件进行编译,生成一个resource.arsc文件,resource.arsc文件相当于一个文件索引表,记录了很多和资源相关的信息。并会为每个该类文件赋一个resource id,对于该类资源的访问,应用层代码则是通过resource id进行访问的。

.apk解压后(apk本质是一个.zip压缩包)会看到的resources.arsc,它实际上就是APP的资源文件。简单来说,通过resources.arsc就可以定位到资源的内存地址。

2 处理aidl files

如果有.aidl文件,会通过aidl工具(源碼位于system/tools/aidl),打包成.java接口类。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。如果在项目没有使用到aidl文件,则可以跳过这一步。

AIDL(Android Interface Definition Language),是Android接口定义语言。目的是为了方便实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。它的本质是对Binder通信的封装。

3 编译(Compilers

工程源码(项目中所有的Java代码)+R.java+aidl.java通过javac生成.class文件。

4 生成.dex文件

.class文件和第三方jar或者library通过dx工具打包成.dex文件。

5apkbuilder(生成未签名apk

apkbuilder工具会将所有没有编译的资源、.arsc资源、.dex文件打包到一个完整的apk文件中。

6Jarsigner(签名)

jarsigner工具会对未签名的apk验证签名,得到一个签名后的apk——signed.apk一旦APK文件生成,它必须被签名才能被安装在设备上。

7zipalign(对齐)

zipAlign工具对signed.apk进行对齐处理。如果发布的APK是正式版的话,就必须对APK进行对齐处理,用到的工具是zipalign([目录]\Android\sdk\build-tools\[版本号]\zipalign.exe)所谓对齐,主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节的整数倍,这样通过内存映射访问apk文件时的速度会更快。

参考

APK打包流程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
APK的打包流程

APK的打包流程

2023-02-22

APK打包流程详解

APK打包流程详解

2020-06-08

APK打包 安装流程

APK打包 安装流程

2020-11-14

Apk 打包流程

Apk 打包流程

2024-06-09