要经过命令行直接操做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;"