Android UID相关知识
- uid pid gid gids 的含义和作用
- uid 的分配
- 查看应用UID 的几种方式
- 通过uid获取包名,通过包名获取uid
uid pid gid gids 的含义和作用
uid: android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变。一个应用程序只能有一个uid,多个应用可以使用sharedUserId 的方式共享同一个uid,前提是这些应用的签名要相同。
pid : 进程ID,可变的
gid: 对应于linux中用户组的概念,android 中 gid 等于uid
gids: 个GIDS相当于一个权限的集合,一个UID可以关联GIDS,表明该UID拥有多种权限
一个进程就是host应用程序的沙箱,里面一般有一个UID和多个GIDS,每个进程只能访问UID的权限范围内的文件和GIDs所允许访问的接口,构成了Android最基本的安全基础。
UID 的分配:
app 的 UID 和 GID 是安装的时候就确认的, 关键的代码如下:
PMS中:
private PackageParser.Package scanPackageDirtyLI(PackageParser.Package pkg,final int policyFlags, final int scanFlags, long currentTime, @Nullable UserHandle user)throws PackageManagerException {if (DEBUG_PACKAGE_SCANNING) {if ((policyFlags & PackageParser.PARSE_CHATTY) != 0)Log.d(TAG, "Scanning package " + pkg.packageName);}applyPolicy(pkg, policyFlags);.....................................if (pkgSetting == null) {.......................// SIDE EFFECTS; updates system state; move elsewhereif (origPackage != null) {mSettings.addRenamedPackageLPw(pkg.packageName, origPackage.name);}//主要是这句, PMS 维护着 mSettings 这个数据结构,里面存储着所有应用的安装信息mSettings.addUserToSettingLPw(pkgSetting);} else {// REMOVE SharedUserSetting from method; update in a separate call.//// TODO(narayan): This update is bogus. nativeLibraryDir & primaryCpuAbi,// secondaryCpuAbi are not known at this point so we always update them// to null here, only to reset them at a later point.Settings.updatePackageSetting(pkgSetting, disabledPkgSetting, suid, destCodeFile,pkg.applicationInfo.nativeLibraryDir, pkg.applicationInfo.primaryCpuAbi,pkg.applicationInfo.secondaryCpuAbi, pkg.applicationInfo.flags,pkg.applicationInfo.privateFlags, pkg.getChildPackageNames(),UserManagerService.getInstance(), usesStaticLibraries,pkg.usesStaticLibrariesVersions);}....................return pkg;
}
参考:
Android UID的分配、查看及相关知识
Android UID相关知识相关推荐
- Android 收音机相关知识
FM收音机 概述 由Android手机硬件的调谐芯片,通过接收和解调电台发出的电磁波的调频(FM)或调幅(AM)信号,从而播放和展示相应的节目信息.所以本地收音机应用一般不需要联网,其核心依赖于硬件调 ...
- Android UID的分配、查看及相关知识
1.UID概念 uid: android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变.一个应用程序只能有一个uid,多个应用可以使用sharedUse ...
- 安卓application_阿里面试官刁钻连问:安卓 UID的分配、查看及相关知识
面试难度还行,但是如果不好好复习,有几个点还真是答不上来. uid机制 uid:Android系统中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变.一个应 ...
- Android音频开发(1):音频相关知识
Android 音频开发 目录 Android音频开发(1):音频相关知识 Android音频开发(2):使用AudioRecord录制pcm格式音频 Android音频开发(3):使用AudioRe ...
- Android通知栏和服务相关知识
Android通知栏与开启前后台服务执行下载任务 索引 自定义通知栏 关键点 后台下载,同时打开前台服务显示进度 关键点 自定义通知栏 关键点 在Android8之后,发送通知需要通知渠道,具体要求见 ...
- android 最全 图片相关知识整理
android 最全 图片相关知识整理 图片基础知识梳理 图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析 图片基础知识梳理(2) - Bitmap 占用内存分析 图片 ...
- Android 音视频流媒体相关知识导航
文章目录 Android 音视频流媒体相关知识导航 相关博客专栏 RTP RTCP RTSP SRS SRT 等的含义 H264编码参数的设置 Zookeeper相关 ffmpeg 相关 SRS(Si ...
- Android 驱动(3)---Android驱动开发知识储备
Android驱动开发知识储备 Android软件层次结构 (1)操作系统层 显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Bind ...
- shell的相关知识(变量、脚本定义)
一.shell的相关知识: 1.对于shell编程语言大体分为:机器语言.汇编语言.高级语言 2.shell变量类型:事先确定数据的存储格式和长度 shell变量分为:字符型.数值型 数值型又分为:整 ...
最新文章
- Nature Communications:实时记录神经系统,解开大脑秘密
- C 语言编程 — 高级数据类型 — 数组
- 数据解析系统中需改进的几点
- JAVA语法——经典题目01
- 快速掌握:大型分布式系统中的缓存架构
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- python bottle session-使用beaker让bottle支持session
- ZooKeeper搭建实验
- [黑苹果]G480 黑苹果之路
- 腾讯手机管家android版,腾讯手机管家上线Android8.11.0版本
- 这些行业高薪职位最多
- echart各种显示数据的格式化
- jwt的token自动续约_关于JWTToken自动续期的解决方案
- 如何在Windows 10中扫描文档
- 黑白和彩色CCD摄像机成像原理简介
- 笔记-中项/高项学习期间的错题笔记1
- 如何高质量地度过大学四年时光,不认命是改变的开始
- python进阶-MongoDB
- HTML-12:超链接锚点定位
- 陈年的凡客征途注定是星辰和大海
热门文章
- java编程之拼图_java版拼图
- 高晓松脱口秀--晓说(第一季第二季)mp3下载
- 解决 pyecharts 折线图数字标签设置 formatter 参数后标签内容有问题
- combo接口(combo接口)
- 从春招到秋招,我的曲折网易路 | 掘金技术征文
- 数学建模优化和仿真模拟的区别001
- 复旦大学智能感知与无人系统实验室诚聘海内外超级博士后/博士后
- C/C++动态内存开辟详解(含常见错误以及经典面试题)
- 小程序标准版交易组件开启
- (原创)制作一个采用 LCD1602 显示的电子钟,在 LCD 上显示当前的时间。显示格式为“时时:分分:秒秒”。设有 4 个功能键k1~k4,功能如下:(1)k1——进入时间修改。