Android 模擬器 sqlite3命令 not found 解決辦法

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命令是否好用。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章