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

  1. Android 开机Process xxx (pid xxxx) has died问题分析

    系统中有一个监听BOOT_COMPLETED广播的自启应用,概率性出现启动后被kill掉的现象.Log如下: 08-12 16:48:40.453 773 908 I ActivityManager: ...

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

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

  3. no signatures that match those in shared user android.uid.system; ignoring!

    最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份. 安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的 ...

  4. Android UID相关知识

    uid pid gid gids 的含义和作用 uid 的分配 查看应用UID 的几种方式 通过uid获取包名,通过包名获取uid uid pid gid gids 的含义和作用 uid: andro ...

  5. Android android.uid.system的应用调用安装apk失败

    背景 最近项目开发过程中用到安装apk的功能.把从服务器下载下来的apk安装到机器中.安装过程中遇到的问题记录一下. 问题 安装过程中提示解析软件包时出现问题. 说明:本文是针对运行的apk在Mani ...

  6. errorcode: 200 uid: -1 appid -1 msg: APP不存在

    Android手机调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在 出现该问题,不是SHA1和包什么的问题. 请检查AndroidMan ...

  7. 百度地图只有网格 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 ...

  8. AndroidStudio调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在

    AndroidStudio调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在 我傻了,抄了官网的代码没有把开发者key复制到Android ...

  9. android uid.system,android.uid.system

    在AndroidManife.xml 中添加 android:sharedUserId="", 可以将不同的程序加入到同一个进程中,方便数据的共享. 但必须要满足一个条件,即:共享 ...

最新文章

  1. 一把误操作卖出500万股,TCL科技李东生致歉:收益归公司
  2. Android Debug Bridge 技术实现原理
  3. java保留两位小数怎么_java保留两位小数4种方法
  4. 新闻页面_页面加载功能设计总结
  5. mysql 无法退出sql命令行编辑
  6. Phoenix报错(5) org.apache.hadoop.hive.ql.metadata.HiveException
  7. 光耦驱动单向可控硅_双向晶闸管的触发用的光耦驱动mos桥,光耦
  8. 【行业专题报告】食品饮料、休闲零食、咖啡茶饮-专题资料
  9. MATLAB电路模拟——微分运算
  10. npm i 安装依赖 报错 npm ERR! code EINTEGRITY npm ERR! sha512-*****==.(12008 bytes) 问题处理
  11. 重学statistics,Cha3 Descriptive Statistics: numerical measures
  12. 如何启用计算机的无线功能键在哪,笔记本怎么打开wifi_如何开启笔记本电脑上的WiFi开关-win7之家...
  13. grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)
  14. 关于char是否能表示一个中文
  15. Charles抓包遇到Not allowed POST https://xxxxxxxxxxx/xxxxxxxxxx connection dropped
  16. ORB-SLAM2 --- LoopClosing::ComputeSim3 函数
  17. 关于PS课程中色彩调整部分的学习总结
  18. 杜克大学计算机数据科学,美国杜克大学数据科学硕士专业课程设置有哪些?留学申请条件有哪些?...
  19. 2019春招面经总结
  20. ossec开源入侵检测系统安装配置

热门文章

  1. java毕业设计菜市场的疫情防控管理系统Mybatis+系统+数据库+调试部署
  2. Spring Framework 之 Scope
  3. MySQL获取上一年、月、日、星期、时、分、秒的日期
  4. 如何使用Java、Servlet创建二维码
  5. ambari 2.7.4搭建过程
  6. C语言输入年份像挂历一样输出12个月份
  7. 【转】四款经典3.7v锂电池充电电路图详解
  8. html实现点击拨打电话功能
  9. 手机游戏开发 libGDX1.4.1项目实战 微信打飞机-肖师军-专题视频课程
  10. python excel xlwings 详解