一、概述
老李原本打算 十一假期期间把<Android插件化基础4----APK安装流程详解>,写成一篇文章的,结果写着写着就holder不住了,写着写着发现要补充一些知识,一直在添东西,所以最后一篇文章就变成了一个系列了。~~~(>_<)~~~。最后导致这个APK安装系列直到10月底才搞定,整体上来说,我花了我一个月的时间,整体上来说,我对它并不是很满意,不过后续如果有时间,我会重新写一遍。但是我通过这一个月的学习,我对APK的安装有了一个大明显的提升。我也希望这一些列文章能帮助大家。
源代码基于Android 6.0
二、结构
我这一系列主要分为几个部分:
- 1 基础知识部分
- 2 流程讲解
- 3 流程讲解补充
- 4 总结
补充:
- 如果想在后面更好的了解APK的装载流程,就必须要掌握一些基础知识,所以"基础知识部分",大家最好先看一遍。
- 在讲解过程中,我是按照 “流程 优先级高于 细节” 的思路来的,所以其中 APK安装流程详解6——PackageManagerService的启动流程(上)、APK安装流程详解7——PackageManagerService的启动流程(下)、 APK安装流程详解12——PackageManagerService中的新安装流程上(拷贝)、 APK安装流程详解13——PackageManagerService中的新安装流程下(装载)中均会涉及PacakgeParse解析APK的内容,所以我在这四个文章中没有详细讲解,只是一笔带过,关于PacakgeParse解析APK的内容请参考APK安装流程详解8——PackageParser解析APK(上)和 APK安装流程详解9——PackageParser解析APK(下)
- APK的安装的过程我主要分为两个部分,一为拷贝即APK安装流程详解12——PackageManagerService中的新安装流程上(拷贝),二为装载即APK安装流程详解13——PackageManagerService中的新安装流程下(装载)。里面也是有很多的细节,我没有讲解,主要是在APK安装流程详解14——PMS中的新安装流程上(拷贝)补充 和 APK安装流程详解15——PMS中的新安装流程下(装载)补充 做一些补充说明
三、建议
我建议大家先看下基础知识,然后再看流程,最后看一下总结。这样大家会对整体的流程 概念更深刻。
四、风险
其中涉及到Android 用户模式、Android SELinux模块、Android 存储系统(Vold、MountService等) 、Android 应用的签名。 这四个模块我基本上都是一笔带过,因为如果再深入,估计要到过年了。后面我会单独讲解这四个模块
五、未来计划
由于本人12月中旬要考PMI-ACP,所以暂时停更2个月,我会在12月底或者1月初继续。到时候看时间,可能会<写APP打开与Activity的启动流程> ,也可能会是<Android 用户模式>等。到时候看吧。
六、感谢
牛顿曾经说过“如果我看得更远一点的话,是因为我站在巨人的肩膀上。”所以感谢如下:
http://blog.csdn.net/mockingbirds/article/details/53048296
http://blog.csdn.net/guoqifa29/article/details/41846169
http://blog.csdn.net/dd864140130/article/details/51867872
http://blog.csdn.net/gaugamela/article/details/52637814
http://blog.csdn.net/zy00000000001/article/details/51956883
https://yq.aliyun.com/articles/61570
http://blog.csdn.net/wh_19910525/article/details/39254815
http://www.codexiu.cn/android/blog/41507/
https://my.oschina.net/feiyangxiaomi/blog/746563
http://blog.csdn.net/lilian0118/article/details/25792601
http://www.debugrun.com/a/6Jg5ejZ.html
http://blog.csdn.net/zhanglianyu00/article/details/62888359
https://github.com/yipianfengye/androidSource/blob/master/13%20apk%E5%AE%89%E8%A3%85%E6%B5%81%E7%A8%8B.md
http://blog.csdn.net/king1425/article/details/70135813
http://blog.csdn.net/xueshanhaizi/article/details/51113752
http://blog.csdn.net/qq_25804863/article/details/48697423
http://www.cnblogs.com/ouyanliu/articles/7100682.html
http://blog.csdn.net/gaugamela/article/details/52769139
https://chaman.gitbooks.io/techblog/Android/apk-install-uninstall/apk-install-uninstall.html
http://www.heqiangfly.com/2016/05/12/android-source-code-analysis-package-manager-installation/
http://www.codexiu.cn/android/blog/8414/
https://maoao530.github.io/2017/01/18/package-install/
http://www.jianshu.com/writer#/notebooks/11880264/notes/18923066
http://www.jianshu.com/p/6769d1a9f4ad
http://www.cnblogs.com/myitm/archive/2012/05/17/2506635.html
http://www.cnblogs.com/carlo/p/4877819.html
http://www.voidcn.com/article/p-cqchgkxw-gx.html
http://blog.csdn.net/yangwen123/article/details/11104397
http://blog.jobbole.com/67286/
http://wiki.jikexueyuan.com/project/deep-android-v2/packagemanagerservice.html
http://cstsinghua.github.io/2016/06/13/Android%E5%AE%89%E8%A3%85APK%E8%AF%A6%E8%A7%A3/
https://www.2cto.com/kf/201403/285212.html
http://blog.csdn.net/wpxiaoxue/article/details/47071457
http://blog.csdn.net/zhiyuan263287/article/details/21033309
http://www.voidcn.com/article/p-kssalazh-sy.html
http://www.jianshu.com/p/953475cea991
http://blog.csdn.net/sgzy001/article/details/44857057
http://blog.csdn.net/zhiyuan263287/article/details/21033309
http://blog.csdn.net/singwhatiwanna/article/details/19578947