android_apk管理机制详细解析

android_apk管理机制详细解析

ID:16142939

大小:303.00 KB

页数:14页

时间:2018-08-08

android_apk管理机制详细解析_第1页
android_apk管理机制详细解析_第2页
android_apk管理机制详细解析_第3页
android_apk管理机制详细解析_第4页
android_apk管理机制详细解析_第5页
资源描述:

《android_apk管理机制详细解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PackageManagerService文件浏览器双击adbinstall/push*.apkAPKinstallationshellinstallAndroidmarketpackageinstaller.apkSD卡安装buildinginsystemimg一、APK安装方式…...PackageManagerServicescanPackageLI()二、PackageManagerService启动过程PackageManagerService.main()PackageManagerServ

2、icem=newPackageManagerService();ServiceManager.addService("package",m);解析/system/etc/permissions/下的xml文件建立PackageHandler消息循环对jar进行dexopt优化启动AppDirObserver监测几个目录的add/removed事件ScanDirLI对几个目录下的apk逐个解析建立installer与installd的socket联接解析/data/system/packages.xml文

3、件二、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消息循环

4、,用于处理外部的apk安装请求消息,如adbinstall,packageinstaller安装apk时会发送消息3.解析/system/etc/permission下xml文件(framework/base/data/etc/),包括platform.xml和系统支持的各种硬件模块的feature.主要工作:(1)建立底层userids和groupids同上层permissions之间的映射;可以指定一个权限与几个组ID对应。当一个APK被授予这个权限时,它也同时属于这几个组。(2)给一些底层用户分配

5、权限,如给shell授予各种permission权限;把一个权限赋予一个UID,当进程使用这个UID运行时,就具备了这个权限。(3)library,系统增加的一些应用需要link的扩展jar库;(4)feature,系统每增加一个硬件,都要添加相应的feature.将解析结果放入mSystemPermissions,mSharedLibraries,mSettings.mPermissions,mAvailableFeatures等几个集合中供系统查询和权限配置使用。4.检查/data/system/p

6、ackages.xml是否存在,这个文件是在解析apk时由writeLP()创建的,里面记录了系统的permissions,以及每个apk的name,codePath,flags,ts,version,uesrid等信息,这些信息主要通过apk的AndroidManifest.xml解析获取,解析完apk后将更新信息写入这个文件并保存到flash,下次开机直接从里面读取相关信息添加到内存相关列表中。当有apk升级,安装或删除时会更新这个文件。5.检查BootClassPath,mSharedLibrar

7、ies及/system/framework下的jar是否需要dexopt,需要的则通过dexopt进行优化6.启动AppDirObserver线程监测/system/framework,/system/app,/data/app,/data/app-private目录的事件,主要监听add和remove事件。对于目录监听底层通过inotify机制实现,inotify是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知,它为用户态监视文件系统的变化提供了强大的支持。当有addevent

8、时调用scanPackageLI(File,int,int)处理;当有removeevent时调用removePackageLI()处理;7.对于以上几个目录下的apk逐个解析,主要是解析每个apk的AndroidMa-nifest.xml文件,处理asset/res等资源文件,建立起每个apk的配置结构信息,并将每个apk的配置信息添加到全局列表进行管理。调用installer.install()进行安装工作,检查apk里的dex文件是否

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。