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

作者: 小怪兽大作战 | 来源:发表于2019-06-24 22:42 被阅读2次

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,将dex文件拷贝到/data/dalvik-chche目录下,在/data/data/应用包名下创建应用数据目录,用于存放数据库,xml文件,so库。

三、解析AndroidManifest.xml文件

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

四、在桌面显示icon

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

相关文章

网友评论

    本文标题:安卓学习-APK打包与应用安装

    本文链接:https://www.haomeiwen.com/subject/kquaqctx.html