zoukankan      html  css  js  c++  java
  • PMS及APP安装过程

    --摘自《android插件化开发指南》

    1.PackageManagerService(PMS)是用来获取apk包的信息的

    2.AMS总是会使用PMS加载包的信息,将其封装在LoadedApk这个类对象中,然后从中取出清单文件申请的四大组件信息

    3.为什么app安装时,不把它解压呢?因为每次从apk中读取资源,并不是先解压再找图片资源,而是解析apk中的resources.arsc文件,这个文件存储着资源的所有信息,包括资源在apk中的地址,大小等。所以可以快速定位到相应资源文件,是一种很高效的算法。不解压的原因是节省空间

    4.PMS中有个类PackageParse,是专门用来解析androidmanifest文件的,其中parsePackage方法返回的是Package类型的实体对象,然后使用generatePackageInfo方法,将其转换为PackageInfo类型

    APP安装流程

    第一步:PMS解析apk的清单文件,读取四大组件的信息

    第二步:为app分配用户ID和用户组ID(按照权限分组)

    第三步:在Launcher生成一个icon,icon中保存着默认启动的activity信息

    第四步:把上面的信息记录在一个xml文件中,以备下次安装使用

    IPackageManager是一个AIDL,以下语句返回的是相同的对象,都是PMS在APP进程的代理对象,都能获得当前apk包的信息

    1)Context.getPackageManager()

    2)ActivityThread.getPackageManager()

    3)ActivityThread的sPackageManager

    4)ApplicationPackageManager的mPM字段

  • 相关阅读:
    SFDC_08(翻页功能)
    SFDC-07(图形)
    SFDC_06(Data Loader)
    SFDC_05(内部类)
    SFDC_03(覆盖率)
    vue项目搭建
    vue语法01
    IDEA 的逆向工程 mybatis generate tool 的使用
    Git: Git: There is no tracking information for the current branch.
    Tomcat 不一定 需要配置环境变量(startup.bat 闪退原因及解决办法)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10085024.html
Copyright © 2011-2022 走看看