安卓学习-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