有关资源访问:
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完成。