当前位置: 首页 > news >正文

【趣谈】Android多用户导致的UserID、UID、shareUserId、UserHandle术语混乱讨论

【趣谈】Android多用户导致的UserID、UID、shareUserId、UserHandle术语混乱讨论

  • 备注
  • 一、概述
  • 二、概念对比
    • 1.UID
    • 2.shareUserId
    • 3.UserHandle
    • 4.UserID
  • 三、结论

备注

2025/07/02 星期三
在与Android打交道时总遇到UserID、UID、shareUserId、UserHandle这些术语,但是这些术语非常混乱,梳理总结一下

一、概述

Android是基于Linux内核实现的操作系统,因此直接复用了Linux为多用户隔离设计的文件权限来实现应用的沙盒隔离,在后续的更新中又引入了多用户的功能,就导致了一定的混乱。

二、概念对比

1.UID

Android的UID直接来自Linux内核的文件权限,Linux为每个用户赋予一个唯一的id值,称为user id,一般简称为uid,Android将每个应用(进程)视为一个Linux用户,由于不同应用的uid不同无法访问其他应用的文件就达到了沙盒隔离的效果。

2.shareUserId

作为应用开发者,我们有时候会希望打破Android的沙盒隔离,让多个应用可以互相访问,Android也提供了这样的功能,只需要在不同应用的AndroidManifest.xml文件中通过将android:sharedUserId设置为相同的值(类似对暗号),并且不同应用的开发者签名相同,不同应用即可获得相同uid从而打破沙盒隔离。由于历史原因,这里使用的是shareUserId而不是shareUID,但是实际上这里实现的是共享uid的操作。

3.UserHandle

Android多用户机制实际通过UserHandle类进行提供,主用户UserHandleID为0,其他用户(次要用户)ID值从10开始依次增长。我们可以通过与UserHandle相关的还有一个AppID的概念,简单来说就是相同包名的应用具有相同的AppID,Android通过用UID=UserHandleID*10000+AppID的方式实现了多用户运行相同应用的功能。

4.UserID

其实Android中并没有一个UserID的概念,UserID经常被混用为UID和UserHandleID,如果非要使用的话,其实更建议将UserID作为UID的字符串形式,因为当使用ps命令打印进程信息的时候我们看到的user一列显示的是root、system、u0_axx形式而不是数字值,这是因为Android在显示时进行了转换,也也更符合明确使用的android:shareUserId字段功能。

三、结论

Android使用Linux文件权限并引入多用户机制造成了一定的术语混乱,所以应该尽量减少存在争议术语UserID的使用,如果一定要使用更加建议将UserID当作UID的字符形式

http://www.lryc.cn/news/579013.html

相关文章:

  • AJAX 安装使用教程
  • 从零用java实现 小红书 springboot vue uniapp (12)实现分类筛选与视频笔记功能
  • 网站面临爬虫攻击waf能防护住吗
  • mars3d (基于 Cesium 的轻量化三维地图库)
  • javaWeb02-Tomcat
  • 面试150 矩阵置0
  • SPI、I2C和UART三种串行通信协议的--------简单总结
  • 飞算 JavaAI 智控引擎:全链路开发自动化新图景
  • 分布式定时任务:xxl-job
  • 滤波电路Multisim电路仿真实验汇总——硬件工程师笔记
  • 【网工|知识升华版|实验】2 ACL原理及应用
  • 力扣 hot100 Day32
  • Spring AI 源码
  • 用自定义注解解决excel动态表头导出的问题
  • 【全网唯一】自动化编辑器 Windows版纯本地离线文字识别插件
  • 少样本学习在计算机视觉中的应用:原理、挑战与最新突破
  • 分布式事务理论基础及常见解决方案
  • 【科研绘图系列】基于R语言的种质资源评分可视化教程:条形图与地理分布图
  • Redis搭建集群模式
  • 桥岛隧大型工程 3D 可视化监测平台
  • Objective-C 路由表原理详解
  • Git 怎么判断是否冲突?
  • 开源 Python 库---Diffusers 库的安装及运用(自留)
  • Python学习之——单例模式
  • 智慧赋能高压并网:分布式光伏监控系统在5.88MW物流园项目的实践解析
  • PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片
  • 【AI论文】SPIRAL:零和博弈中的自对弈通过多智能体多轮强化学习激励推理能力
  • 场外交易(OTC)财富管理系统开发及解决方案报告
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第四节|高分辨率VR全景视频播放性能优化
  • 腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE MySQL版)