ADB是开发硬件和Android设备(真机或模拟器)之间的通信管道,adb+shell+sqlite3可以用来查看设备中的数据库。以下操作全部在terminal中进行。你所需要的前置工作是找到你的Android SDK在你电脑中什么位置。
1. 模拟器
如果Android设备为模拟器,操作十分简单,因为模拟器 /system/xbin/ 这个文件夹中已经包含了sqlite3,因此可以直接运行。
(1)到SDK所在位置
cd /Users/用户名/Documents/Android/sdk/platform-tools
(2)查看已经连接的设备,由于没有设置adb的path,所以每次利用adb进行操作的时候都要在前面加上 ./ ,不然会说command not found。
./adb devices
(3)进入shell
./adb shell
(4)取得root权限,前提是你的手机已root,取得权限成功之后"$"会变成"#"
su
(5)到sqlite3所在位置
cd /system/xbin
(6)打开数据库
sqlite3 /data/data/com.公司名.程序名/databases/数据库名.db
(7)如果没有sliqte3,可以选择从模拟器中拉下来
./adb pull /设备文件夹/ /保存文件夹/
./adb pull /system/xbin/sqlite3 /Users/用户名/Downloads
2. 真机
(1)在shell中输入mount来查看android设备相关信息
需要3和1再加2
(2)让系统文件夹可读写
mount -o remount,rw -t ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system
(3)这时先将sqlite3 push到android设备中的某个地方,如sd卡,因为你不能直接push到/system/xbin
./adb push sqlite3 /sdcard/
(4)再把sliqte3从sd卡拷贝到/system/xbin,此时需要root权限,有两种方法拷贝,一种不行试另一种
cp /sdcard/sqlite3 /system/xbin
cat /sdcard/sqlite3 > /system/xbin/sqlite3
chmod 4755 /system/xbin/sqlite3
(6)让系统文件夹变回只可读
mount -o remount,ro -t ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system
3. sqlite3相关操作
(1)查看数据库的表
.table
(2)查询表,注意分号
select * from person;
(3)如果不小心打错了出现 ...>,按 control + d,随后重新再打开数据库
很可惜目前在真机上我还是没有操作成功,出现了乱码,猜测是少了libncurses.so文件,以后再试