美文网首页
Apk安装过程

Apk安装过程

作者: 杨殿生 | 来源:发表于2020-04-26 17:57 被阅读0次

    涉及服务PMS(PackageManagerService)

    1.将apk复制到data/app目录

    2.解析apk信息

    首先来认识PackageParser类,它主要用来解析手机上的apk文件(支持Single APK和Multiple APK),主要包含两个过程
    APK->Package:解析APK文件为Package对象的过程
    Package :代表磁盘上APK文件完整解析后的对象,相当于在内存中Package的对象是对磁盘APK的描述.
    Package->PackageInfo:由Package对象生成PackageInfo的过程
    PackageInfo:该类代表包的整体描述信息,即AndroidManifest.xml中的信息.如果说Package在内存中代表完整的APK描述,那么PackageInfo则是其子集

    SingleApk和Multiple Apk
    Single APK是我们通常所开发的APK,即一个应用只有一个apk文件.而Google Play还允许你为一个应用中发布不同的apk文件,这些apk文件适用于不同设备.举例说明,假设你现在开发了一款APP叫做Monkey,但是目前该APP由于体积太大或者其他因素导致不能同时适用于手机和平板,此时你就可将原先的Monkey.apk拆分为了Monkey-Phone.apk和Monkey-Tablet,分别用于运行在Android手机和Android平板,只要保存两者拥有相同的包名,并用相同key进行签名就可以在发布Monkey应用的时候,一同发布Monkey-Phone.apk和Moneky-Tablet.apk,那么这种一个应用拥有多个APK文件的程序就称之为Multiple APK.

    输出流
    文件路径 -> Package ->PackageInfo

    3.dexopt操作

    Apk文件其实只是一个归档zip压缩包,而我们编写的代码最终都编译成了.dex文件,但为了提高运行性能,android系统并不会直接执行.dex,而是会在安装过程中执行dexopt操作来优化.dex文件,最终android系统执行的时优化后的'odex'文件(注意:这个odex文件的后缀也是.dex,其路径在data/dalvik-cache)。对于dalvik虚拟机,dexopt就是优化操作,而对于art虚拟机,dexopt执行的则是dex2oat操作,既将.dex文件翻译成oat文件

    输出流
    dex -> odex(DVK,使用dexopt工作),oat(ART,使用dex2oat工具)

    4.更新权限信息

    5.完成安装,发送Intent.ACTION_PACKAGE_ADDED广播

    参考
    https://www.jianshu.com/p/953475cea991
    https://juejin.im/entry/589541c3128fe1006ca67b2e
    http://liuwangshu.cn/tags/Android%E5%8C%85%E7%AE%A1%E7%90%86%E6%9C%BA%E5%88%B6/
    深度探究apk安装过程
    APK安装流程详解11——普通应用安装简介

    相关文章

      网友评论

          本文标题:Apk安装过程

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