我使用 adb 和以下命令连接到我的实时设备:
C:\>adb -s HT829GZ52000 shell $ ls ls sqlite_stmt_journals cache sdcard etc system sys sbin proc logo.rle init.trout.rc init.rc init.goldfish.rc init default.prop data root dev $ cd data cd data $ ls ls opendir failed, Permission denied
我很惊讶地发现我的访问被拒绝了。为什么我不能像这样使用命令行浏览目录?
如何在手机上获得 root 访问权限?
从 API 级别 8 (Android 2.2) 开始,对于可调试应用程序(Android Studio 一直构建的应用程序,除非请求发布构建),您可以使用 shellrun-as命令以特定用户/应用程序的身份运行命令或可执行文件或者只是切换到应用程序的UID,以便您可以访问其数据目录。
run-as
列出你的应用的目录内容:
run-as com.yourapp ls -l /data/data/com.yourapp
切换到com.yourapp的 UID并使用该 uid 运行所有进一步的命令(直到您调用exit):
exit
run-as com.yourapp cd /data/data/com.yourapp ls -l exit
注 1:某些 HTC Desire 手机存在一个已知问题。/data/data由于目录的非标准所有者/权限,run-as命令无法在这些手机上运行。
/data/data
注 2:正如@Avio 评论中所指出的: run-as在任何版本(从 7 到 10.1)上运行 Cyanogenmod 的三星 Galaxy S 手机也存在问题,因为在这个平台上/data/data是指向/datadata. 解决问题的一种方法是用实际目录替换符号链接(不幸的是,这通常需要 root 访问权限)。
/datadata