Android Uid,UserId,AppId,Pid
Android Uid,UserId,AppId,Pid
- 1、Uid
- 1.1、Uid来源(android 9.0)
- 1.2、查看Uid
- 2、UserId
- 3、AppId
- 4、Pid
1、Uid
android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变,范围是从10000开始,到19999结束,而且,UID由用户ID(UserId)和应用ID(AppId)共同决定
1.1、Uid来源(android 9.0)
frameworks/base/core/java/android/os/UserHandle.java
/**
* @hide Range of uids allocated for a user.
*/
public static final int PER_USER_RANGE = 100000;
/**
* Returns the uid that is composed from the userId and the appId.
* @hide
*/
public static int getUid(@UserIdInt int userId, @AppIdInt int appId) {if (MU_ENABLED) {//默认不创建多个用户时,android 只有一个用户,uid==aapIdeturn userId * PER_USER_RANGE + (appId % PER_USER_RANGE);} else {return appId;}
1.2、查看Uid
方式1:abd shell cat data/system/packages.xml,里面包含所有应用的uid和一些有关其的信息(需要root)
方式2:adb shell dumpsys package 应用包名 | adb shell grep userId=
方式3:adb shell cat /proc/<pid>/status | adb shell grep Uid
1、adb shell ps -A | adb shell grep -r “com.example.testpor”(-A:高android版本的adb shell需要带-A参数),其中,第二列30209就是pid
octopus-n106:/ # ps | grep -r "com.example.testpor"
(standard input):u0_a65 30209 1662 1006360 48836 ep_poll aae7b2d8 S com.example.testpor
2、adb shell cat /proc/30209 /status | grep Uid
Uid: 10065 10065 10065 10065
2、UserId
系统中会有多个用户 (User,即手机里的主机、访客等多用户), 每个用户也有一个唯一的 ID 值, 称为"UserId"
3、AppId
一个进程的appId是固定的,在初始化或安装的时候就决定了
frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
10170 private void commitScanResultsLocked(@NonNull ScanRequest request, @NonNull ScanResult result)
10171 throws PackageManagerException {....
10184
10185 if (newPkgSettingCreated) {10186 if (originalPkgSetting != null) {10187 mSettings.addRenamedPackageLPw(pkg.packageName, originalPkgSetting.name);
10188 }
10189 // THROWS: when we can't allocate a user id. add call to check if there's
10190 // enough space to ensure we won't throw; otherwise, don't modify state
10191 mSettings.addUserToSettingLPw(pkgSetting);
10192
10193 if (originalPkgSetting != null && (scanFlags & SCAN_CHECK_ONLY) == 0) {10194 mTransferedPackages.add(originalPkgSetting.name);
10195 }
10196 }
frameworks/base/services/core/java/com/android/server/pm/Settings.java
882 void addUserToSettingLPw(PackageSetting p) throws PackageManagerException {883 if (p.appId == 0) {884 // Assign new user ID
885 p.appId = newUserIdLPw(p);
886 } else {887 // Add new setting to list of user IDs
888 addUserIdLPw(p.appId, p, p.name);
889 }
890 if (p.appId < 0) {891 PackageManagerService.reportSettingsProblem(Log.WARN,
892 "Package " + p.name + " could not be assigned a valid UID");
893 throw new PackageManagerException(INSTALL_FAILED_INSUFFICIENT_STORAGE,
894 "Package " + p.name + " could not be assigned a valid UID");
895 }
896 }4213 private int newUserIdLPw(Object obj) {4214 // Let's be stupidly inefficient for now...
4215 final int N = mUserIds.size();
4216 for (int i = mFirstAvailableUid; i < N; i++) {4217 if (mUserIds.get(i) == null) {4218 mUserIds.set(i, obj);
4219 return Process.FIRST_APPLICATION_UID + i;
4220 }
4221 }
4222
4223 // None left?
4224 if (N > (Process.LAST_APPLICATION_UID-Process.FIRST_APPLICATION_UID)) {4225 return -1;
4226 }
4227
4228 mUserIds.add(obj);
4229 return Process.FIRST_APPLICATION_UID + N;
4230 }
4、Pid
Pid就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在android系统中一般不会把已经kill掉的进程ID重新分配给新的进程,新产生进程的进程号,一般比产生之前所有的进程号都要大。
Android Uid,UserId,AppId,Pid相关推荐
- Android 开机Process xxx (pid xxxx) has died问题分析
系统中有一个监听BOOT_COMPLETED广播的自启应用,概率性出现启动后被kill掉的现象.Log如下: 08-12 16:48:40.453 773 908 I ActivityManager: ...
- Android UID的分配、查看及相关知识
1.UID概念 uid: android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变.一个应用程序只能有一个uid,多个应用可以使用sharedUse ...
- no signatures that match those in shared user android.uid.system; ignoring!
最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份. 安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的 ...
- Android UID相关知识
uid pid gid gids 的含义和作用 uid 的分配 查看应用UID 的几种方式 通过uid获取包名,通过包名获取uid uid pid gid gids 的含义和作用 uid: andro ...
- Android android.uid.system的应用调用安装apk失败
背景 最近项目开发过程中用到安装apk的功能.把从服务器下载下来的apk安装到机器中.安装过程中遇到的问题记录一下. 问题 安装过程中提示解析软件包时出现问题. 说明:本文是针对运行的apk在Mani ...
- errorcode: 200 uid: -1 appid -1 msg: APP不存在
Android手机调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在 出现该问题,不是SHA1和包什么的问题. 请检查AndroidMan ...
- 百度地图只有网格 Authentication Error errorcode: -1 uid: -1 appid -1 msg: Current network is not available.
在百度地图运行时, 只出现网格,错误日志是 Authentication Error errorcode: -1 uid: -1 appid -1 msg: Current network is no ...
- AndroidStudio调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在
AndroidStudio调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在 我傻了,抄了官网的代码没有把开发者key复制到Android ...
- android uid.system,android.uid.system
在AndroidManife.xml 中添加 android:sharedUserId="", 可以将不同的程序加入到同一个进程中,方便数据的共享. 但必须要满足一个条件,即:共享 ...
最新文章
- 一把误操作卖出500万股,TCL科技李东生致歉:收益归公司
- Android Debug Bridge 技术实现原理
- java保留两位小数怎么_java保留两位小数4种方法
- 新闻页面_页面加载功能设计总结
- mysql 无法退出sql命令行编辑
- Phoenix报错(5) org.apache.hadoop.hive.ql.metadata.HiveException
- 光耦驱动单向可控硅_双向晶闸管的触发用的光耦驱动mos桥,光耦
- 【行业专题报告】食品饮料、休闲零食、咖啡茶饮-专题资料
- MATLAB电路模拟——微分运算
- npm i 安装依赖 报错 npm ERR! code EINTEGRITY npm ERR! sha512-*****==.(12008 bytes) 问题处理
- 重学statistics,Cha3 Descriptive Statistics: numerical measures
- 如何启用计算机的无线功能键在哪,笔记本怎么打开wifi_如何开启笔记本电脑上的WiFi开关-win7之家...
- grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)
- 关于char是否能表示一个中文
- Charles抓包遇到Not allowed POST https://xxxxxxxxxxx/xxxxxxxxxx connection dropped
- ORB-SLAM2 --- LoopClosing::ComputeSim3 函数
- 关于PS课程中色彩调整部分的学习总结
- 杜克大学计算机数据科学,美国杜克大学数据科学硕士专业课程设置有哪些?留学申请条件有哪些?...
- 2019春招面经总结
- ossec开源入侵检测系统安装配置
热门文章
- java毕业设计菜市场的疫情防控管理系统Mybatis+系统+数据库+调试部署
- Spring Framework 之 Scope
- MySQL获取上一年、月、日、星期、时、分、秒的日期
- 如何使用Java、Servlet创建二维码
- ambari 2.7.4搭建过程
- C语言输入年份像挂历一样输出12个月份
- 【转】四款经典3.7v锂电池充电电路图详解
- html实现点击拨打电话功能
- 手机游戏开发 libGDX1.4.1项目实战 微信打飞机-肖师军-专题视频课程
- python excel xlwings 详解