大橙子网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

android安装,Android安装包文件的后缀一般为

Android APK安装流程(4)--APK加载

上面 主要分析到APK的copy过程,这里我们开始分析APK的加载过程。直接看之前流程进行到下一步的 processPendingInstall() 方法:

创新互联建站专注于龙陵网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供龙陵营销型网站建设,龙陵网站制作、龙陵网页设计、龙陵网站官网定制、小程序定制开发服务,打造龙陵网络公司原创品牌,更为您提供龙陵网站排名全网营销落地服务。

installPackagesLI() 可以支持单包和多包加载,加载主要分为4个阶段:

执行完2-2的 scanPackageTrackLI() 之后Pms的两大核心数据结构都已经准备好了,一个是代表扫描结果的final ArrayMapString, PackageParser.Package mPackages = new ArrayMap();中的PackageParser.Package,另外一个是mSettings.mPackages的PackageSetting 数据结构,这两个结构PackageParser.Package代表扫描结果,为静态数据,扫描完成后就不会发生变化。PackageSetting用于存储安装应用的动态数据,如权限授予情况等。PackageParser.Package由于是静态数据,扫描apk就可以获取。PackageSetting生成之后会被记录到文件中,以后每次系统启动都会重新加载。

Android静默安装

个人了解到的静默安装的方式有以下4种:

我看了一些第三方的应用市场,一般在设置下都会有前两种静默安装的方式可供选择,而后两种静默安装的方式主要是厂商自己的应用市场使用。

如果在7.0的系统上使用第三种静默安装的方式会出现以下错误:

参考:

Android7.0的静默安装失败问题研究

Android N 静默安装和卸载

主要步骤如下:

我试了以上两篇文章的介绍的方法,还是失败,提示Failure [null],不知道怎么破了,可能是厂商的定制问题吧。。。还在思考中。。。

Android App安装以及启动流程

Android App的安装可以分为有界面的安装和无界面的安装。

有界面的安装其实就是调用系统App(PackageInstaller)去安装apk,打开安装apk应用之后,点击安装按钮执行startInstall方法,然后就进入安装中界面开始安装,安装成功或者失败都会有对应的回调。内部其实也是使用PackageManager的installExistingPackage方法,通过binder机制,调用到PackageManagerService的installExistingPackage方法,最终调用到installExistingPackageAsUser方法安装,而 安装的核心原理其实就是将apk文件拷贝到系统可识别的重要的文件目录 :

无界面安装是调用adb命令,执行到一个c写的commandline脚本,调用 install_app 方法,然后再调用 pm_command ,然后执行到pm脚本,执行 run 方法,调用 runinstall ,然后调用 installPackageAsUser 通过AMS执行安装。

说到App的启动,就需要从开机开始说起,Android开机会先把所有应用安装一遍就是把apk拷贝到对应的目录(这也是Android开机慢的原因)。

整个流程如下:

其实App的启动,除了刚开机是不一样之外,正常时候基本与Activity的启动非常接近。


分享文章:android安装,Android安装包文件的后缀一般为
标题链接:http://dzwzjz.com/article/hosioc.html
在线咨询
服务热线
服务热线:028-86922220
TOP