Android Studio模拟器使用adb shell时无法使用su命令的问题

发布于 2019-10-30  619 次阅读


一开始发现这个问题是练手SQLite数据库的时候,需要通过adb shell进入/data/data/[包名]/databases/目录中,通过查看创建的数据库来查看相应的数据或者表。如果在实机上测试,则手机必须具有root最高权限,而我需要看网飞,不可能拿自己的手机解锁并root,所以就是用了模拟器进行操作,但是我打算操作的时候显示了permission denied,查了之后发现是权限不足导致的
如果使用了adb shell显示下面这样的,就表示没有用到root的身份运行

@generic_x86:/ $

必须是后面显示一个#才是用root权限
但是我输入su也是不行,最后查找资料才发现:如果模拟器自带了play商店,那么就无法提供root权限,必须下载那些不提供play商店的
最后我换了一个镜像,直接adb shell然后输入su,

generic_x86:/ #

就切换成功了

C:\Users\momo>adb shell
generic_x86:/ $ su
generic_x86:/ # cd /data/data/com.example.sqltest/
generic_x86:/data/data/com.example.sqltest # ls
cache code_cache databases
generic_x86:/data/data/com.example.sqltest # cd /data/data/com.example.sqltest/databases/
generic_x86:/data/data/com.example.sqltest/databases # ls
BookStore.db BookStore.db-shm BookStore.db-wal
generic_x86:/data/data/com.example.sqltest/databases # sqlite3 BookStore.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> .table
Book              android_metadata
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE Book(id integer primary key autoincrement,author text,price real,pages integer,name text);
CREATE TABLE sqlite_sequence(name,seq);
sqlite> .exit
generic_x86:/data/data/com.example.sqltest/databases #

一只蠢莫