我们接着上一篇文章继续分析,文章最后调用到了 PackageManagerService 中的 installStage() 方法,这里就是正式开始 APK 的安装过程。
一、安装流程
1、PackageManagerService
源码位置:/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
installStage
installStage 有两个不同参数的方法,分别对应多个包和单个包的解析流程,这里仅以单个包的解析流程为例。
void installStage(ActiveInstallSession activeInstallSession) {……final Message msg = mHandler.obtainMessage(INIT_COPY);// 把之前传入的 sessionParams 安装信息,及其它信息封装成 InstallParamsfinal InstallParams params = new InstallParams(activeInstallSession);params.setTraceMethod("installStage").setTraceCookie(System.identityHashCode(params));msg.obj = params;Trace.asyncTraceBegin(TRACE_TAG_PACKAGE_MANAGER, "installStage", System.identityHashCode(msg.obj));Trace.asyncTraceBegin(TRACE_TAG_P