要經過命令行直接操做android真機上的SQLite數據庫,能夠直接經過adb shell來完成,不過,前提是必須得到root權限。linux
另外,android系統其實就是linux的shell,這個應該你們都知道,不過通常狀況下,在/system/xbin/目錄下,android
沒有sqlite3命令,須要手動copy一個進去,一般狀況下,須要兩個文件sql
解壓後兩個文件都有了,好比解壓到:~/Downloads/sqlite3/ 數據庫
而後就是經過下面的這些個命令,一步一步來,基本就搞定了app
# 得到root權限 adb root adb remount #拷貝sqlite3二進制文件到android真機中 adb push ~/Downloads/sqlite/sqlite3 /system/xbin/ #而後改一下這個文件的權限 adb shell chmod 4755 /system/xbin/sqlite3 #這個時候若是直接運行sqlite3還有問題,就須要拷貝libncurses.so到真機中 adb push ~/Downloads/sqlite/libncurses.so /system/lib/
ok,完成以上幾步,應該沒啥問題了,能夠經過下面的命令進入android真機,並操做數據庫:ide
#進入真機 adb shell
# 得到root權限
su
#列出數據庫
ls -R /data/data/*/databases
幾個在android裏經常使用的db數據庫spa
/data/data/com.android.deskclock/databases/alarms.db
命令行
Android 5.0 unix
/data/data/com.android.providers.contacts/databases/calendar.db
/data/data/com.android.providers.contacts/databases/contacts2.db
/data/data/com.android.providers.settings/databases/settings.db
/data/data/com.android.providers.telephony/databases/mmssms.db
/data/data/com.android.providers.telephony/databases/telephony.db
sqlite3 /data/data/com.whatsapp/databases/msgstore.db "SELECT _id, data FROM messages WHERE key_from_me='0' AND key_remote_jid LIKE '%XXXXXXXXXXX%' ORDER BY _id DESC LIMIT 1;" sqlite3 /data/data/com.android.providers.calendar/databases/calendar.db "SELECT strftime('%H:%M', Instances.begin/1000, 'unixepoch'), calendar_displayname, calendar_id, title FROM Instances, Events, Calendars WHERE Instances.event_id = Events._id AND date(datetime(begin / 1000 , 'unixepoch')) = date('now') AND Events.Calendar_id = Calendars._id AND Calendar_id NOT IN(4,6) ORDER BY Instances.begin ASC;"