經過adb shell操做android真機的SQLite數據庫

要經過命令行直接操做android真機上的SQLite數據庫,能夠直接經過adb shell來完成,不過,前提是必須得到root權限。linux

另外,android系統其實就是linux的shell,這個應該你們都知道,不過通常狀況下,在/system/xbin/目錄下,android

沒有sqlite3命令,須要手動copy一個進去,一般狀況下,須要兩個文件sql

sqlite三、libncurses.soshell

解壓後兩個文件都有了,好比解壓到:~/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;"
相關文章
相關標籤/搜索