安卓学习-APK打包与应用安装

APK打包和安装之间有着千丝万缕的联系。APK打包就是将程序中的各种文件处理,压缩的过程;应用安装就是对APK解压,并分析的过程。

一、APK中的文件结构

一个APK文件解压后的结构如下所示


UC浏览器APK解压后的目录
  • AndroidManifest.xml 程序全局配置文件(就像window中的注册表,保存应用的各种名称,权限,四大组件等信息)

  • classes.dex 适配Dalvik的字节码(安卓中的字节码和Java虚拟机中的运行的字节码结构有所不同)

  • resources.arsc 资源索引表(用于查找资源)

  • res\ 存放资源文件(文件、图片、xml)
  • assets\ 存放配置文件

  • src\ 存放java源文件

  • libs\ 存放应用程序所依赖的库

二、APK的打包

谷歌提供的APK打包流程如下图所示


APK打包流程

打包过程分为以下几个步骤:

  • AAPT(Android Asset Packaging Tool)将图片、xml等资源编译成二进制文件,为所有的xml生成唯一的ID号,并生成resources.arsc(资源索引)和R.java(资源和id号的映射)。
  • 将所有aidl编译成Java
  • 将所有java文件编译成class文件
  • 将所有class文件(保存项目源码编译成的class、第三方lib)打包成dex文件(一个或多个)
  • apkbuilder工具将所有的文件打包成一个APK
  • jarsigner对APK进行签名

三、APK的安装

APK安装分为以下几个步骤

一、拷贝apk到指定目录

第三方apk会被拷贝到data/app/应用包名下面。系统APK会放到system/app/应用包名下面。硬件厂商的APK会被放到system/vendor/app下面

二、解压APK、创建应用的数据目录

解压APK,在/data/data/应用包名下创建应用数据目录,用于存放数据库,xml文件,so库。

三、解析AndroidManifest.xml文件

PackageManagerService将APK的权限,应用包名,APK安装位置,版本,四大组件等重要信息保存在/data/system/packages.xml文件中。

四、优化dex

将dex优化成odex,将odex复制到data/dalvik目录下

五、在桌面显示icon

在桌面应用上显示icon,并提供跳转接口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容