• 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相关知识相关推荐

  1. Android 收音机相关知识

    FM收音机 概述 由Android手机硬件的调谐芯片,通过接收和解调电台发出的电磁波的调频(FM)或调幅(AM)信号,从而播放和展示相应的节目信息.所以本地收音机应用一般不需要联网,其核心依赖于硬件调 ...

  2. Android UID的分配、查看及相关知识

    1.UID概念 uid: android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变.一个应用程序只能有一个uid,多个应用可以使用sharedUse ...

  3. 安卓application_阿里面试官刁钻连问:安卓 UID的分配、查看及相关知识

    面试难度还行,但是如果不好好复习,有几个点还真是答不上来. uid机制 uid:Android系统中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变.一个应 ...

  4. Android音频开发(1):音频相关知识

    Android 音频开发 目录 Android音频开发(1):音频相关知识 Android音频开发(2):使用AudioRecord录制pcm格式音频 Android音频开发(3):使用AudioRe ...

  5. Android通知栏和服务相关知识

    Android通知栏与开启前后台服务执行下载任务 索引 自定义通知栏 关键点 后台下载,同时打开前台服务显示进度 关键点 自定义通知栏 关键点 在Android8之后,发送通知需要通知渠道,具体要求见 ...

  6. android 最全 图片相关知识整理

    android 最全 图片相关知识整理 图片基础知识梳理 图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析 图片基础知识梳理(2) - Bitmap 占用内存分析 图片 ...

  7. Android 音视频流媒体相关知识导航

    文章目录 Android 音视频流媒体相关知识导航 相关博客专栏 RTP RTCP RTSP SRS SRT 等的含义 H264编码参数的设置 Zookeeper相关 ffmpeg 相关 SRS(Si ...

  8. Android 驱动(3)---Android驱动开发知识储备

    Android驱动开发知识储备 Android软件层次结构 (1)操作系统层 显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Bind ...

  9. shell的相关知识(变量、脚本定义)

    一.shell的相关知识: 1.对于shell编程语言大体分为:机器语言.汇编语言.高级语言 2.shell变量类型:事先确定数据的存储格式和长度 shell变量分为:字符型.数值型 数值型又分为:整 ...

最新文章

  1. Nature Communications:实时记录神经系统,解开大脑秘密
  2. C 语言编程 — 高级数据类型 — 数组
  3. 数据解析系统中需改进的几点
  4. JAVA语法——经典题目01
  5. 快速掌握:大型分布式系统中的缓存架构
  6. 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
  7. python bottle session-使用beaker让bottle支持session
  8. ZooKeeper搭建实验
  9. [黑苹果]G480 黑苹果之路
  10. 腾讯手机管家android版,腾讯手机管家上线Android8.11.0版本
  11. 这些行业高薪职位最多
  12. echart各种显示数据的格式化
  13. jwt的token自动续约_关于JWTToken自动续期的解决方案
  14. 如何在Windows 10中扫描文档
  15. 黑白和彩色CCD摄像机成像原理简介
  16. 笔记-中项/高项学习期间的错题笔记1
  17. 如何高质量地度过大学四年时光,不认命是改变的开始
  18. python进阶-MongoDB
  19. HTML-12:超链接锚点定位
  20. 陈年的凡客征途注定是星辰和大海

热门文章

  1. java编程之拼图_java版拼图
  2. 高晓松脱口秀--晓说(第一季第二季)mp3下载
  3. 解决 pyecharts 折线图数字标签设置 formatter 参数后标签内容有问题
  4. combo接口(combo接口)
  5. 从春招到秋招,我的曲折网易路 | 掘金技术征文
  6. 数学建模优化和仿真模拟的区别001
  7. 复旦大学智能感知与无人系统实验室诚聘海内外超级博士后/博士后
  8. C/C++动态内存开辟详解(含常见错误以及经典面试题)
  9. 小程序标准版交易组件开启
  10. (原创)制作一个采用 LCD1602 显示的电子钟,在 LCD 上显示当前的时间。显示格式为“时时:分分:秒秒”。设有 4 个功能键k1~k4,功能如下:(1)k1——进入时间修改。