Android P包管理机制之PackageManager简介
1.PackageManager简介
与ActivityManager和AMS的关系类似,PMS也有一个对应的管理类PackageManager,用于向应用程序进程提供一些功能。PackageManager是一个抽象类,它的具体实现类为ApplicationPackageManager,ApplicationPackageManager中的方法会通过IPackageManager与AMS进行进程间通信,因此PackageManager所提供的功能最终是由PMS来实现的,这么设计的主要用意是为了避免系统服务PMS直接被访问。PackageManager提供了一些功能,主要有以下几点:
- 获取一个应用程序的所有信息(ApplicationInfo)。
- 获取四大组件的信息。
- 查询permission相关信息。
- 获取包的信息。
- 安装、卸载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简介相关推荐
- Android 系统(203)---Android包管理机制(一)PackageInstaller的初始化
Android包管理机制(一)PackageInstaller的初始化 转自:https://blog.csdn.net/itachi85/article/details/81024903 前言 包管 ...
- Android包管理机制(三)PMS处理APK的安装
本文首发于微信公众号「刘望舒」 关联系列 Android包管理机制系列 前言 在上一篇文章Android包管理机制(二)PackageInstaller安装APK中,我们学习了PackageInsta ...
- Android包管理机制5 APK是如何被解析的
一 概述 在本系列的前面文章中,我们介绍了 PackageInstaller 的初始化和安装 APK 过程.PMS 处理 APK 的安装和 PMS 的创建过程,这些文章中经常会涉及到一个类,那就是 P ...
- com.android.packageinstaller,Android包管理机制(二)PackageInstaller安装APK
前言 在本系列上一篇文章Android包管理机制(一)PackageInstaller的初始化中我们学习了PackageInstaller是如何初始化的,这一篇文章我们接着学习PackageInsta ...
- python包管理机制_Go 1.5之前的多种包管理机制简介(
在 Go 语言中,我们可以使用go get命令安装远程仓库中托管的代码,不同于 Ruby Gem.pypi 等集中式的包管理机制, Go 语言的包管理系统是去中心化的.简单来讲,go get命令支持任 ...
- javascript原理_JavaScript程序包管理器工作原理简介
javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...
- npm包管理机制引质疑:又一安装程序中发现恶意代码,开发者账户频遭劫持
铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI npm行不行,包管理机制行不行? 最新的一次npm包被篡改事件,让开发者的这两个疑问更加强烈了. 最新中枪的是纯函数式编程语言Purescr ...
- js读取外部json指定字段值完整代码_前端工程化 剖析npm的包管理机制(完整版)...
导读 现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发的理解.各项前端工程化的配置以加快 ...
- Go 语言本身提供的包管理机制
在 Go 语言中,我们可以使用go get命令安装远程仓库中托管的代码,不同于 Ruby Gem.pypi 等集中式的包管理机制, Go 语言的包管理系统是去中心化的.简单来讲,go get命令支持任 ...
最新文章
- 惊呆!谷歌AI自动编程效率超研发工程师,作为AI工程师的我感到了森森的压力
- 独家 | 一份数据工程师必备的学习资源,干货满满(附链接)
- php 生成器 教程,PHP扩展生成器_PHP教程
- 利用systemd 实现 tomcat 多实例
- Keras实现mode.fit和model.fit_generator比较
- php实现鼠标悬停显示下拉菜单,Html中鼠标悬停显示二级菜单的两种方法
- 收货地址 - 设置默认收货地址
- [html] 如何禁止web端的页面缩放?
- xcache安装配置
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器...
- 写了个项目 Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流
- 2500亿规模,20%年增长,猎头平台化时代,谁的赢面最大? | 一点财经
- 30套最实用JAVA学习视频教程合集 2012
- MTK MT6589平台射频调试方法
- 电脑本地连接,电脑出现多个“本地连接”的解决方法
- 论文是否被SCI, EI 检索
- 二级域名间相互请求 ajax跨域请求
- 泰勒公式(泰勒展开式,泰勒中值定理)使用基本技巧
- 大文件MD5计算 C语言 (从OpenSSL库中分离算法:三)
- 英语四级常考100个短语
热门文章
- 语音识别技术有哪些应用
- vits官方gituhb项目--模型训练
- Windows下使用Word写论文时,删除页眉下多余的横线
- java的synthetic_java synthetic关键字
- python 批量读取csv 文件到dataframe_python 批量读取csv_Python Pandas批量读取csv文件到dataframe的方法...
- 中国联通孙盛婷:数字引领,共创未来新经济
- Java实现英文段落分句_java英文段落拆分成句(Split an article into sentences)
- Navicat如何自动发送邮件
- 青龙面板-酷狗大字版
- 控制app字体大小不随手机字体大小影响