Android源码剖析之Framwork层后记篇

本文介绍了Android系统中资源的存放位置与访问方式,包括apk、class.dex及数据文件的位置。详细阐述了如何通过context或packageManager访问这些资源,并解释了系统与应用资源的区别。此外,还介绍了程序包管理器的功能,包括组件的Intent提供、权限检查以及安装和删除的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


有关资源访问:

data/app:apk被复制后的目录,系统应用放在system/app目录下

data/dalvik-cache:class.dex的存放目录或odex

data/data:数据安装的路径

attr用来设置一些视图的属性

资源的访问可以通过context或packageManager的方法实现(id小于0x1000,0000是系统资源,大于0x7000,0000的是应用资源,

而更换系统主题也可以使用这招,判断获取的资源是01开头,则返回07开关的;同样可以替换AssetManager的路径,通过修改

framework-res.apk实现,不建议使用)

String OrginalName=getResourceEntryName(orginalId);

int newId=getIdentifier(OrginalName,……);

String newName=getString(newId);


程序包管理:包含三块,提供具体组件的intent,进行权限检查,提供安装删除的癌

PMS和其他Manager一样,运行在SystemServer进程中,使用/system/etc/permissions管理系统和应用权限和platform.xml管理应用的pid和uid,使用/data/system/packages.xml保存安装包基本信息:名字、路径、权限等,使用DefaultContainerService将apk复制到data/app目录下,使用Installer服务(localSocket)将文件解压出来、创建数据目录,data/dalvik-cache和data/data

应用程序的权限有四种,默认为普通,危险会提示,签名要一致,系统指系统签名才可以;证书指meta-inf下默认文件,可指定可多个,首个需要key值为2390个16进制值来自证书;签名一个应用只能有一个,可包含多个证书;shared-user指定共享用户id对应的签名和权限

platform包含group标签(应用群组)、permission标签、assign-permission标签(将权限加入系统,用于群组)、library标签(依赖文件)、feature标签(wifi camear location sensor bluetooth touchscreen); 提取dex过程包含,解析platform.xl、验证签名到保存data/dalvik-cache中,最后提取Service、Receiver、Activity、Broadcast等;安装过程包含检查package.xml是否存在,然后读取mSettings.mPackages,决定是否创建package.xml,加入并生成新的package.list,由handlerParams下两个InstallParams和MoveParams完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值