1.PackageManager简介

与ActivityManager和AMS的关系类似,PMS也有一个对应的管理类PackageManager,用于向应用程序进程提供一些功能。PackageManager是一个抽象类,它的具体实现类为ApplicationPackageManager,ApplicationPackageManager中的方法会通过IPackageManager与AMS进行进程间通信,因此PackageManager所提供的功能最终是由PMS来实现的,这么设计的主要用意是为了避免系统服务PMS直接被访问。PackageManager提供了一些功能,主要有以下几点:

  1. 获取一个应用程序的所有信息(ApplicationInfo)。
  2. 获取四大组件的信息。
  3. 查询permission相关信息。
  4. 获取包的信息。
  5. 安装、卸载APK.

2.APK文件结构和安装方式

APK是AndroidPackage的缩写,即Android安装包,它实际上是zip格式的压缩文件,一般情况下,解压后的文件结构如下表所示。

目录/文件 描述
assert 存放的原生资源文件,通过AssetManager类访问。
lib 存放库文件。
META-INF 保存应用的签名信息,签名信息可以验证APK文件的完整性。
res 存放资源文件。res中除了raw子目录,其他的子目录都参与编译,这些子目录下的资源是通过编译出的R类在代码中访问。
AndroidManifest.xml 用来声明应用程序的包名称、版本、组件和权限等数据。 apk中的AndroidManifest.xml经过压缩,可以通过AXMLPrinter2工具解开。
classes.dex Java源码编译后生成的Java字节码文件。
resources.arsc 编译后的二进制资源文件。

APK的安装场景主要有以下几种:

  • 通过adb命令安装:adb 命令包括adb push/install
  • 用户下载的Apk,通过系统安装器packageinstaller安装该Apk。packageinstaller是系统内置的应用程序,用于安装和卸载应用程序。
  • 系统开机时安装系统应用。
  • 电脑或者手机上的应用商店自动安装。

3. 涉及常用的aidl

类名 描述
PackageManager 用于向应用程序进程提供一些功能,最终的功能是由PMS来实现的
IPackageManager 一个AIDL的接口,用于和PMS进行进程间通信
AppOpsManager 用于权限动态检测,在Android4.3中被引入
PackageInstaller 提供安装、升级和删除应用程序功能
UserManager 用于多用户管理

未完待续。。。

Android P包管理机制之PackageManager简介相关推荐

  1. Android 系统(203)---Android包管理机制(一)PackageInstaller的初始化

    Android包管理机制(一)PackageInstaller的初始化 转自:https://blog.csdn.net/itachi85/article/details/81024903 前言 包管 ...

  2. Android包管理机制(三)PMS处理APK的安装

    本文首发于微信公众号「刘望舒」 关联系列 Android包管理机制系列 前言 在上一篇文章Android包管理机制(二)PackageInstaller安装APK中,我们学习了PackageInsta ...

  3. Android包管理机制5 APK是如何被解析的

    一 概述 在本系列的前面文章中,我们介绍了 PackageInstaller 的初始化和安装 APK 过程.PMS 处理 APK 的安装和 PMS 的创建过程,这些文章中经常会涉及到一个类,那就是 P ...

  4. com.android.packageinstaller,Android包管理机制(二)PackageInstaller安装APK

    前言 在本系列上一篇文章Android包管理机制(一)PackageInstaller的初始化中我们学习了PackageInstaller是如何初始化的,这一篇文章我们接着学习PackageInsta ...

  5. python包管理机制_Go 1.5之前的多种包管理机制简介(

    在 Go 语言中,我们可以使用go get命令安装远程仓库中托管的代码,不同于 Ruby Gem.pypi 等集中式的包管理机制, Go 语言的包管理系统是去中心化的.简单来讲,go get命令支持任 ...

  6. javascript原理_JavaScript程序包管理器工作原理简介

    javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...

  7. npm包管理机制引质疑:又一安装程序中发现恶意代码,开发者账户频遭劫持

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI npm行不行,包管理机制行不行? 最新的一次npm包被篡改事件,让开发者的这两个疑问更加强烈了. 最新中枪的是纯函数式编程语言Purescr ...

  8. js读取外部json指定字段值完整代码_前端工程化 剖析npm的包管理机制(完整版)...

    导读 现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发的理解.各项前端工程化的配置以加快 ...

  9. Go 语言本身提供的包管理机制

    在 Go 语言中,我们可以使用go get命令安装远程仓库中托管的代码,不同于 Ruby Gem.pypi 等集中式的包管理机制, Go 语言的包管理系统是去中心化的.简单来讲,go get命令支持任 ...

最新文章

  1. 惊呆!谷歌AI自动编程效率超研发工程师,作为AI工程师的我感到了森森的压力
  2. 独家 | 一份数据工程师必备的学习资源,干货满满(附链接)
  3. php 生成器 教程,PHP扩展生成器_PHP教程
  4. 利用systemd 实现 tomcat 多实例
  5. Keras实现mode.fit和model.fit_generator比较
  6. php实现鼠标悬停显示下拉菜单,Html中鼠标悬停显示二级菜单的两种方法
  7. 收货地址 - 设置默认收货地址
  8. [html] 如何禁止web端的页面缩放?
  9. xcache安装配置
  10. 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器...
  11. 写了个项目 Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流
  12. 2500亿规模,20%年增长,猎头平台化时代,谁的赢面最大? | 一点财经
  13. 30套最实用JAVA学习视频教程合集 2012
  14. MTK MT6589平台射频调试方法
  15. 电脑本地连接,电脑出现多个“本地连接”的解决方法
  16. 论文是否被SCI, EI 检索
  17. 二级域名间相互请求 ajax跨域请求
  18. 泰勒公式(泰勒展开式,泰勒中值定理)使用基本技巧
  19. 大文件MD5计算 C语言 (从OpenSSL库中分离算法:三)
  20. 英语四级常考100个短语

热门文章

  1. 语音识别技术有哪些应用
  2. vits官方gituhb项目--模型训练
  3. Windows下使用Word写论文时,删除页眉下多余的横线
  4. java的synthetic_java synthetic关键字
  5. python 批量读取csv 文件到dataframe_python 批量读取csv_Python Pandas批量读取csv文件到dataframe的方法...
  6. 中国联通孙盛婷:数字引领,共创未来新经济
  7. Java实现英文段落分句_java英文段落拆分成句(Split an article into sentences)
  8. Navicat如何自动发送邮件
  9. 青龙面板-酷狗大字版
  10. 控制app字体大小不随手机字体大小影响