gpt4 book ai didi

android - 将 Android PackageManager 中的 uid 与 ls -l 中的 uid 进行比较

转载 作者:行者123 更新时间:2023-11-29 21:41:12 26 4
gpt4 key购买 nike

我怀疑我收到的某些错误报告(无法打开数据库,或 Context.getFilesDir() 返回的空值)是由于底层 linux 权限不正确造成的;我看到一些引用资料说,有时 Android 应用程序会进入一种错误状态,即应用程序数据目录的所有者与分配给应用程序的 UID 不同。

所以在我使用的工作设备上

adb shell
run-as my.package.name
ls -lR

并获得了 u0_a29 的 UID。我还运行了这段代码:

PackageManager pm = getPackageManager();
ApplicationInfo packageInfo = pm.getApplicationInfo("my.package.name", 0);
Log.d("UIDTEST", "Package " + packageInfo.packageName +
" has uid " + packageInfo.uid);

并获得了 10029 的 UID。

从应用程序在此设备上的运行情况来看,这些值实际上可能是相同的,但这里的实际关系是什么?是“取最后 2 个字符,丢弃其余字符,并根据您要走的路在前面加上 u0_a 或 100”?因为这看起来很奇怪。 a29 看起来像十六进制,但当然只有 2601。我想在将代码部署到现场以尝试从损坏的安装中捕获此信息之前了解这一点。

最佳答案

u0_a29 是用户名称,而不是 UID。在桌面 Linux 发行版上,您会看到 benkcmmurphy

id 命令显示您的run-as 环境运行的用户 ID 和用户名。

关于android - 将 Android PackageManager 中的 uid 与 ls -l 中的 uid 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17054996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com