標籤:android sqlite3 資料庫 調試 adb
在adb shell中直接使用sqlite3命令操作資料庫
一般,手機在開發階段都是會將sqlite3模組打入鏡像。例如在安卓5.1中,路徑為/system/xbin/sqlite3。(但對於普通手機,不一定能內建此模組,因此此文只針對於手機研發階段調試)
首先查看手機中sqlite3檔案是否存在,若存在才可在adb shell下直接使用sqlite3命令:
樣本:更改系統設定資料庫中的設定項:Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED
(這個設定項是安卓5.1系統新加入的是否對接入網路進行判斷,判斷網路連接的有效性)
~ 在framework源碼中進行搜尋可以得知base/core/java/android/provider/Settings.java中的定義CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";
~ 進入settings的provider目錄下:
cd /data/data/com.android.providers.settings/databases
資料庫操作開始:
- sqlite3 settings.db命令進入sqlite操作介面,使用.tables命令查看此資料庫中的表:
select * from global;
- 從中可以看到,沒有顯示欄位名,假如我們並不知道其欄位名,可以使用.header on開啟顯示欄位名:
sqlite> select * from global where name=‘captive_portal_detection_enabled‘;
sqlite> update global set value=‘0‘ where name=‘captive_portal_detection_enabled‘;
- 可以看到已經更改。value欄位的值已經更改為0。成功!
對於Framework調試,或許這樣的修改方式可以協助你在開發調試階段、以不修改軟體代碼的前提下進行一些跟系統設定相關聯的測試(對於無法在設定應用中進行設定的項)。
當然,對於所有provider應用、對db進行增刪改查都可以使用sqlite3命令進行維護。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
在adb shell中直接使用sqlite3命令操作資料庫