- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android_APK管理机制详细解析
* * * PackageManagerService 文件浏览器双击 adb install/push *.apk APK installation shell install Android market packageinstaller.apk SD卡安装 building in system img 一 、APK安装方式 … ... PackageManagerService scanPackageLI() 二、PackageManagerService启动过程 PackageManagerService.main() PackageManagerService m = new PackageManagerService(); ServiceManager.addService(package, m); 解析/system/etc/permissions/下的xml文件 建立PackageHandler消息循环 对jar进行dexopt优化 启动AppDirObserver监测几个目录的add/removed事件 ScanDirLI对几个目录下的apk逐个解析 建立installer与installd的socket联接 解析/data/system/packages.xml文件 二、PackageManagerService综述 包管理服务是在系统启动阶段由systemserver启动的一个java层服务,用来管理/system/framework,/system/app,/data/app,/data/app-private 目录下的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 是一种文件系统的变化通知机制,如文件增加、删除 等事件可以立刻让用户态得知,它为用户态监
您可能关注的文档
- 0-150mm带表游标卡尺不确定度评定.doc
- 0-25mm公法线千分尺不确定度评定.doc
- 0-300高度游标卡尺不确定度评定.doc
- 01 10kV电力电缆预防性试验作业指导书.doc
- 03966-GP-5 通用汽车公司 供方质量过程和测量程序.doc
- 02 10kV三相油浸式配电变压器预防性试验作业指导书.doc
- 04 10kV三相干式配电变压器预防性试验作业指导书.doc
- 01 高级岩石学绪论.ppt
- 04——黄学清——核电站工程建设质量保证实践.ppt
- 05模具技师 烟灰盒 论文.doc
- [上海]2024年上海市信息技术研究中心招聘笔试历年参考题库附带答案详解.docx
- 2025至2031年中国工业用冷却塔行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国肛门垫行业投资前景及策略咨询研究报告.docx
- [临沂]2024年山东临沂职业学院招聘校外兼职舞蹈教师4人笔试历年参考题库附带答案详解.docx
- 2025至2030年中国带防水合一位单控开关数据监测研究报告.docx
- 2025至2031年中国光刻工艺画行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国不锈钢筷行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国醋酸布胶带行业投资前景及策略咨询研究报告.docx
- [佛山]2024年广东佛山事业单位招聘高校毕业生暨急需紧缺专业技术人员105人笔试历年参考题库附带答案详解.docx
- [保定]2024年河北雄安新区安新县招聘学校足球教师5人笔试历年参考题库附带答案详解.docx
文档评论(0)