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這個命令。
筆者因爲急需查看這個數據庫下面的表,所以採取一種臨時方法查看。
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。
所以對因選擇X86版本的Android 6.0 來配置自己的Android Studio AVD虛擬機。
第三步、可以給自己虛擬機改個名字,然後點擊Finish即可。
從Android Studio AVD的虛擬機中,獲取sqlite3命令,並傳到MuMu中去。
第一步、開啓虛擬機。左邊是AVD,右邊是MuMu模擬器。
//顯示當前連接的可用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
第二步,將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命令是否好用。