Ole*_*err 5 android root adb android-emulator android-activity
我的项目中有一个非导出的活动.
如果我尝试使用adb以下方式在手机上启动它:
adb shell am start -n "packagename/activityname"
Run Code Online (Sandbox Code Playgroud)
我收到错误:
java.lang.SecurityException:
Permission Denial: starting Intent { ... } from null (...) not exported from uid ...
Run Code Online (Sandbox Code Playgroud)
但是,如果我在模拟器上运行相同的命令,那么一切正常.怎么会?
但是,如果我在模拟器上运行相同的命令,那么一切都会正常。怎么会?
默认情况下,模拟器实例以 root 身份运行,这意味着与非 root 设备相比,更多的系统进程拥有 root 权限。
考虑ps命令输出grep-ed 与adbd和sh(即分别为adb shell ps | grep 'adbd'和adb shell ps | grep 'sh')。您可能会看到以下内容(当然,在您的设备/模拟器上有不同的PID和):PPID
未 root 的设备
USER PID PPID NAME
shell 166 1 /sbin/adbd
...
shell 15721 166 /system/bin/sh
Run Code Online (Sandbox Code Playgroud)模拟器
USER PID PPID NAME
root 1183 1 /sbin/adbd
...
root 2884 1183 /system/bin/sh
Run Code Online (Sandbox Code Playgroud)sh进程及其父进程在模拟器上adbd由所有者拥有,这与非 root 设备上的所有者root相反。尽管属性设置为,shell但root用户拥有访问您应用程序沙箱的“权限” 。android:exportedfalse
| 归档时间: |
|
| 查看次数: |
1098 次 |
| 最近记录: |