Android 模拟器 sqlite3命令 not found 临时解决办法

时间:2024-04-14 18:41:50

Android 模拟器 sqlite3命令 not found 解决办法

1. 环境
Android Studio
Android 模拟器 网易MuMu (Android 6.0.1)

2. 概述
Android Studio自带的虚拟机感觉运行效果有点卡顿,所以下载MuMu作为Android调试的模拟器。
但是MuMu中缺少一些命令,比如所需的sqlite3。
通过PC的cmd命令端或Power Shell利用adb shell进入MuMu模拟器,并获取root权限。
cd到对应APP的databases目录下,发现sqlite3 not found。
这说明MuMu模拟器/system/xbin/下没有sqlite3这个命令。
Android 模拟器 sqlite3命令 not found 临时解决办法
笔者因为急需查看这个数据库下面的表,所以采取一种临时方法查看。
Android 模拟器 sqlite3命令 not found 临时解决办法

3. 临时解决方法
原理:急需查看数据库中的表,所以通过adb pull 的方法,将数据库复制到PC上,然后使用sqlite3查看。
命令如下:

//进入模拟器,已经获取root权限
adb shell 

//进入你的database的目录下
cd /data/data/<your-app>/databases/ 

//将所需查看的数据库复制到/sdcard/的某个目录下,这样下一步输入路径会方便一点
cp <your-database-name.db> /sdcard/DCIM/

//回到PC控制用户
exit

//把数据库拿出来
adb pull sdcard/DCIM/<your-database-name.db>

//查看数据库
sqlite3 <your-database-name.db>

//看完后删除
rm <your-database-name.db>

4. 通用解决方法
原理:从Android Studio的虚拟机中,将对应CPU版本的sqlite3这个command复制到MuMu模拟器/system/xbin/目录下面。

具体步骤:
创建与MuMu模拟器相同CPU版本的avd虚拟机(直接在Android Studio创建即可)
Tools —— AVD Manager —— Create Vitual Device
第一步、选屏幕界面,自己随意即可,点击NEXT
第二步、要选择相应的Android API版本 和 对应的CPU架构。
根据自己MuMu虚拟机的版本就可以了。笔者的是Android 6.0,CPU型号是X86。
注意:
因为MuMu模拟器是在PC上运行的,所以它的CPU架构并不是Arm(你用命令行查看CPU型号时,会显示模拟器为ARM的CPU,但那真的只是模拟而已……),故不能选择Arm系列的AVD虚拟机。你也可以尝试一下,这台虚拟机无法在你的PC上开机,会一直卡在"waiting your device to come online"这个process。下图显示笔者的MuMu模拟器实际运行的是X86的CPU。
Android 模拟器 sqlite3命令 not found 临时解决办法
所以对因选择X86版本的Android 6.0 来配置自己的Android Studio AVD虚拟机。
Android 模拟器 sqlite3命令 not found 临时解决办法
第三步、可以给自己虚拟机改个名字,然后点击Finish即可。

从Android Studio AVD的虚拟机中,获取sqlite3命令,并传到MuMu中去。
第一步、开启虚拟机。左边是AVD,右边是MuMu模拟器。
Android 模拟器 sqlite3命令 not found 临时解决办法

//显示当前连接的可用adb操作设备.
//在这里MuMu模拟器是127.0.0.1:7555这个设备,AVD虚拟机是emulator-5554这个设备
adb devices

//进入Android Studio AVD虚拟机
adb -s emulator-5554 shell

//进入/system/xbin目录下,查看是否有sqlite3
cd /system/xbin
ls -a | grep sqlite3

//有sqlite3,退回到windows系统
exit

//将sqlite3复制到windows下面
adb -s emulator-5554 pull /system/xbin/sqlite3

Android 模拟器 sqlite3命令 not found 临时解决办法

第二步,将sqlite3传到MuMu模拟器中去。

//进入MuMu模拟器,确保是root#用户
adb -s 127.0.0.1:7555 shell

//给/system赋予可读可写权限
mount -o remount,rw /system

//退回到windows系统
exit

//将sqlite3复制到/system/xbin目录下面
adb -s 127.0.0.1:7555 push sqlite3 /system/xbin/

//重新进入MuMu模拟器,确保是root#用户
adb -s 127.0.0.1:7555 shell

// 给sqlite3命令可执行权限
chmod 755 /system/xbin/sqlite3

//重现将/system目录变为只读
mount -o remount,ro /system

完成,可以自己到自己的数据库目录下,测试sqlite3命令是否好用。
Android 模拟器 sqlite3命令 not found 临时解决办法