上一篇我们讲到在PackageInstallerSession的commitLocked方法中,我们最后调用了PackageManagerService的installStage方法。这里我们直接从 PackageManagerService.java installStage [crayon-62bcc4fbbd1ba447632469/] 上面的代码中,在最后我们向mHandler发送了INIT_COPY,接下来我们分析mHandler是如何处理INIT_COPY…
上一篇我们讲到在PackageInstallerSession的commitLocked方法中,我们最后调用了PackageManagerService的installStage方法。这里我们直接从 PackageManagerService.java installStage [crayon-62bcc4fbbd1ba447632469/] 上面的代码中,在最后我们向mHandler发送了INIT_COPY,接下来我们分析mHandler是如何处理INIT_COPY…
上一篇讲到如果允许安装未知源程序,并且应用属于未知源程序,就会调用initiateInstall进行安装,而initiateInstall最后会调用startInstallConfirm进行安装确认。这一篇就从startInstallConfirm方法开始讲解。 PackageInstallerActivity.java [crayon-62bcc4fbc036a103634509/] 上面安装应用的界面大致如下,升级应用或者应用不需要额外权限的界面大致类似,只是提示…
前言 前面两篇文章简单讲述了PackageManagerService的启动过程,和APK安装的内容一直都没有涉及到。APK可以通过多种方式安装,例如通过adb install安装、系统开机会默认安装系统应用、将apk放到手机通过PackageInstaller交互安装等等。安装APK的方式很多,但是这里选择用户使用最多的安装方式进行讲解,即通过PackageInstaller交互式安装。PackageInstaller是Android系统的默认程序,源码路劲为packages/app/Pa…