Android M PackageManager对于应用程序apk的安装流程分析

上篇文章我们分析了android M PackageManagerService 启动过程,今天我们继续深入了解下对于apk的安装,PackageManager又是怎样做的呢?

应用程序安装有很多种方法,开发者最常见的就是使用adb install命令或者pm install脚本命令。

很多的应用市场也都有自己的封装,android原生的安装应用为PackageInsteller。


本篇涉及源码路径:

system/core/adb/ commandline.cpp
frameworks/base/cmds/pm/src/com/android/commands/pm/Pm.java
frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java
frameworks/base/packages/DefaultContainerService/
frameworks/base/core/java/android/content/pm/PackageParser.java

adb install原理

我们先看adb install原理


adb install命令来源于/android/system/core/adb工具,从上面的代码看到,adb install实际执行的是install_app()。



Install_app会根据存储路径将apk文件copy到/data/local/temp或者sd卡中的路径,后面进行apk复制时会从这个路径里面取。

这里我们可以看到adb命令最终调用的是pm脚本来进行apk的安装。

PM脚本

pm是android中的一个脚本,由pm.java编译生成,最终被放到system/bin下的,其代码路径为:

frameworks/base/cmds/pm


pm脚本的main方法中创建一个Pm对象,然后调用其run方法跑起来。

run方法中获取到package包管理器的binder客户端本地代理Proxy,就可以和IPackageManager服务端通信了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值