当前位置: 代码迷 >> 综合 >> Apk安装和打包流程
  详细解决方案

Apk安装和打包流程

热度:33   发布时间:2024-03-07 09:38:54.0

Apk打包流程

1.aapt阶段:aapt工具编译res资源文件,把大部分xml文件编译成二进制文件(图片文件除外),同时生成R.Java文件和resources.arsc文件,里面保存了资源的ID和在APK中的路径。

2.aidl阶段:如果项目中有使用AIDL,那么就会把.aidl文件编译成.java文件。

3.javaCompiler阶段:将所有.java文件(包括R文件和AIDL生成的.java文件),通过javac工具生成class文件。

4.dex阶段:将生成的.class文件和第三方库的.class文件通过dx工具生成classes.dex文件(如果有分包,那么可能有多个)。

5.apkBuilder阶段:aapt阶段中的资源文件、dex文件和第三方的非java资源包(.so),通过apkbuilder工具生成未签名的apk包。

6.jarSigner阶段:签名,jarsigner工具,如果是debug模式用默认签名,release模式用开发者的签名。

7.zipAligin阶段:对齐,通过zipalign工具对apk中的未压缩资源(图片、视频)进行“对齐操作”,让资源按4字节的边界进行对齐,使得资源访问速度更快


Apk安装

Adroid的应用安装涉及到如下几个目录:

  • /data/app:存放用户安装的APK的目录,安装时,把APK拷贝于此。
  • /data/data:应用安装完成后,在/data/data目录下自动生成和APK包名(packagename)一样的文件夹,用于存放应用程序的数据。
  • /data/dalvik-cache:存放APK的odex文件,便于应用启动时直接执行。

具体安装过程如下:

  1. 复制APK安装包到/data/app下,然后校验APK的签名是否正确,检查APK的结构是否正常,进而解压并且校验APK中的dex文件。
  2. 确定dex文件没有被损坏后,再把dex优化成odex,使得应用程序启动时间加快。
  3. 同时在/data/data目录下建立于APK包名相同的文件夹,如果APK中有lib库,系统会判断这些so库的名字,查看是否以lib开头,是否以.so结尾,再根据CPU的架构解压对应的so库到/data/data/packagename/lib下。

Ref:

Android APK文件结构 完整打包编译的流程 APK安装过程 详解

(备注:这篇是摘了ref引用到的文章的一些知识点,仅起到做个简单笔记的作用。)

 

  相关解决方案