- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android_apk_包管理(PackageManagerService)安装管理
Android apk安装管理(PackageManagerService 分析)
本篇主要分析了系统启动阶段包管理服务的启动流程,其中的几个接口在apk安装时也会被调用。包管理服务启动时主要做的工作大致有如下几方面:
1.建立java层的installer与c层的installd的socket联接,使得在上层的install,remove,dexopt等功能最终由installd在底层实现
2.建立PackageHandler消息循环,用于处理外部的apk安装请求消息,如adb install,packageinstaller安装apk时会发送消息
3.解析/system/etc/permission下xml文件(framework/base/data/etc/),包括platform.xml和系统支持的各种硬件模块的feature.主要工作:
(1)建立底层user ids和group ids 同上层permissions之间的映射;可以指定一个权限与几个组ID对应。当一个APK被授予这个权限时,它也同时属于这几个组。
(2)给一些底层用户分配权限,如给shell授予各种permission权限;把一个权限赋予一个UID,当进程使用这个UID运行时,就具备了这个权限。
(3) library,系统增加的一些应用需要link的扩展jar库;
(4) feature,系统每增加一个硬件,都要添加相应的feature.将解析结果放入mSystemPermissions,mSharedLibraries,mSettings.mPermissions,mAvailableFeatures等几个集合中供系统查询和权限配置使用。
4.检查/data/system/packages.xml是否存在,这个文件是在解析apk时由
writeLP()创建的,里面记录了系统的permissions,以及每个apk的name,codePath,flags,ts,version,uesrid等信息,这些信息主要通过apk的
AndroidManifest.xml解析获取,解析完apk后将更新信息写入这个文件并保
存到flash,下次开机直接从里面读取相关信息添加到内存相关列表中。当有apk
升级,安装或删除时会更新这个文件。
5.检查BootClassPath,mSharedLibraries及/system/framework下的jar
是否需要dexopt,需要的则通过dexopt进行优化
6.启动AppDirObserver线程监测/system/framework,/system/app,/data/app,/data/
app-private目录的事件,主要监听add和remove事件。对于目录监听底层通过
inotify机制实现,inotify 是一种文件系统的变化通知机制,如文件增加、删除
等事件可以立刻让用户态得知,它为用户态监视文件系统的变化提供了强大的支持。
当有add event时调用scanPackageLI(File , int , int)处理;
当有remove event时调用removePackageLI()处理;
7.对于以上几个目录下的apk逐个解析,主要是解析每个apk的AndroidMa-
nifest.xml文件,处理asset/res等资源文件,建立起每个apk的配置结构信息,
并将每个apk的配置信息添加到全局列表进行管理。调用installer.install()进
行安装工作,检查apk里的dex文件是否需要再优化,如果需要优化则通过辅助工
具dexopt进行优化处理;将解析出的componet添加到pkg的对应列表里;
对apk进行签名和证书校验,进行完整性验证。
8.将解析的每个apk的信息保存到packages.xml和packages.list文件里,
packages.list记录了如下数据:pkgName,userId,debugFlag,dataPath(包的数据路径)
图1 主流程图
详细分析
在systemserver.java中启动包管理服务
pm=PackageManagerService.main(context,factoryTest != SystemServer.FACTORY_TEST_OFF);
main函数主要功能是构造 PackageManagerService实例,然后添加到 ServiceM
您可能关注的文档
- 8.药疹大课1.ppt
- 806门禁系统安装工艺标准.doc
- 80下试题.ppt
- 81-2029-冲压标准.doc
- 82205工作面切眼扩刷安全技术措施.doc
- 8255并行接口实验.docx
- 8251芯片介绍.docx
- 850型压球机说明书.doc
- 876项行业标准编号、名称、主要内容等一览表20151001.doc
- 88-09波纹管试验委托合同单.doc
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
最近下载
- 英文学术写作实战(北大)大学MOOC慕课 客观题答案.docx
- 【课件】Unit5ListeningandSpeaking课件高中英语人教版必修第一册.pptx VIP
- 试论我国网络虚拟财产的民法保护-法学学士毕业论文.doc VIP
- 辽宁省协作校2023-2024学年高一下学期5月期中考试数学试卷(含答案).docx VIP
- 隧道竖井施工方案.docx
- 2023年兰州交通大学公共课《马克思主义基本原理概论》期末试卷A(有答案).docx VIP
- 医院装备主管面试题及参考答案结构化面试题.docx VIP
- 地铁车站竖井施工及技术措施.docx VIP
- 20道医院医疗设备技术员岗位高频面试问题附考察点及参考回答.pdf VIP
- 《现代物流学》模拟试题(含答案).pdf
文档评论(0)