福利Android Framwork之PKMS源码解析---调用方式

Posted 小陈乱敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了福利Android Framwork之PKMS源码解析---调用方式相关的知识,希望对你有一定的参考价值。

1、简单介绍

PackageManagerService简称PKMSandroid系统的核心服务之一,是在SystemServer的run方法中的

startBootstrapServices启动的,管理者着所有跟Package相关的工作,常见的比如安装,卸载,信息查询等,

主要完成以下核心功能:

1. 解析AndroidNanifest.xml清单文件,解析清单文件中的所有节点信息。
2. 扫描.apk文件,安装系统应用,安装本地应用等。
3. 管理本地应用,主要有, 安装,卸载,应用信息查询等。

2、PKMS调用方式

客户端可通过Context.getPackageManager()获得ApplicationPackageManager对象, 而mPM指向的是Proxy代理,当调用到mPM.方法后,将会调用到IPackageManager的Proxy代理方法,然后通过Binder机制中的mRemote与服务端PackageManagerService通信,并调用到PackageManagerService的方法。

  • Binder服务端:PackageManagerService继承于IPackageManager.Stub;
  • Binder客户端:ApplicationPackageManager(简称APM)的成员变量mPM继承于IPackageManager.Stub.Proxy; 本身APM是继承于PackageManager对象。

简单的调用如下:

/**
* 得到应用层序的版本名称
*
* @return
*/
private String getVersionName() 
PackageManager packageManager = getPackageManager();
try 
// 得到apk的功能清单文件:为了防止出错直接使用getPackageName()方法获得包名
// packageManager.getPackageInfo("com.xxx.xxx", 0);
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
//返回版本名称
return packageInfo.versionName;
 catch (NameNotFoundException e) 
e.printStackTrace();
return "";


3、免费福利

如果你想要深入系统的学习Android Framework框架,这里可以分享一份
《Android Framework源码开发揭秘》,其中记录了从系统启动流程到WMS全部源码解析,相信你能优秀地学习整个Framework框架。

因文章篇幅原因,只放了部分内容,完整版文末卡片领取

《Android Framework源码开发揭秘》

第一章 系统启动流程分析

  • 第一节 Android启动概览
  • 第二节 init.rc解析
  • 第三节 Zygote
  • 第四节 面试题

第二章 跨进程通信IPC解析

  • 第一节 Sercice 还可以这么理解
  • 第二节 Binder基础
  • 第三节 Binder应用
  • 第四节 AIDL应用(上)
  • 第五节 AIDL应用(下)
  • 第六节 Messenger原理及应用
  • 第七节 服务端回调
  • 第八节 获取服务(IBinder)
  • 第九节 Binder面试题全解析

第三章 Handler源码解析

  • 第一节 源码分析
  • 第二节 难点问题
  • 第三节 Handler常问面试题

第四章 AMS源码解析

  • 第一节 引言
  • 第二节 Android架构
  • 第三节 通信方式
  • 第四节 系统启动系列
  • 第五节 AMS
  • 第六节 AMS 面试题解析

第五章 WMS源码解析

  • 第一节 WMS与activity启动流程
  • 第二节 WMS绘制原理
  • 第三节 WMS角色与实例化过程
  • 第四节 WMS工作原理

第六章 Surface源码解析

  • 第一节 创建流程及软硬件绘制
  • 第二节 双缓冲及SurfaceView解析
  • 第三节 Android图形系统综述

第七章 基于Android12.0的SurfaceFlinger源码解析

  • 第一节 应用建立和SurfaceFlinger的沟通的桥梁
  • 第二节 SurfaceFlinger的启动和消息队列处理机制
  • 第三节 SurfaceFlinger 之 VSync(上)
  • 第四节 SurfaceFlinger之VSync(中)
  • 第五节 SurfaceFlinger之VSync(下)

第八章 PKMS源码解析

  • 第一节 PKMS调用方式
  • 第二节 PKMS启动过程分析
  • 第三节 APK的扫描
  • 第四节 APK的安装
  • 第五节 PKMS之权限扫描
  • 第六节 静默安装
  • 第七节 requestPermissions源码流程解析

第九章 InputManagerService源码解析

  • 第一节 Android Input输入事件处理流程(1)
  • 第二节 Android Input输入事件处理流程(2)
  • 第三节 Android Input输入事件处理流程(3)

第十章 DisplayManagerService源码解析

  • 第一节 DisplayManagerService启动
  • 第二节 DisplayAdapter和DisplayDevice的创建
  • 第三节 DMS部分亮灭屏流程
  • 第四节 亮度调节
  • 第五节 Proximity Sensor灭屏原理
  • 第六节 Logical Display和Physical Display配置的更新

各位小伙伴们如果有需要这份《Android Framework源码开发揭秘》资料,点击下方卡片即可【免费领取】!!

以上是关于福利Android Framwork之PKMS源码解析---调用方式的主要内容,如果未能解决你的问题,请参考以下文章

android开发浅谈之PackageManagerService(pkms)

android开发浅谈之PackageManagerService(pkms)

android开发浅谈之PackageManagerService(pkms)

android开发浅谈之PackageManagerService部分一(pkms)

Android 进阶——系统启动之SystemServer创建并启动PackageManagerService服务

Android 进阶——系统启动之SystemServer创建并启动PackageManagerService服务