今天在mac下通过adb的方式连接到安卓设备的shell,并使用sqlite3来操作数据库。期间遇到了许多问题,现在在这里跟大家分享一下。
前期准备工作:
1、配置adb环境变量,可以参考我的这篇文章:mac设置adb环境变量
2、连接到手机端的shell。解释一下3步的含义。
①、列举出所有的设备 adb devices
②、连接设备, -s后面跟的是设备id,由①处查询的结果 adb -s xxxxxx shell
③、取得超级管理员权限
3、sqlite的常用命令
sqlite3 dbname.db //打开数据库
.tables //列举所有表结构
//打开字段名称显示
.mode column
.header on
退出sqlite模式:control+d,(control是fn右边的那个按键)
4、adb shell常用命令,详细参考:http://www.cnblogs.com/devinzhang/archive/2011/12/17/2291396.html
adb logcat //将设备日志输出到屏幕上 详细参考:http://developer.android.com/tools/debugging/debugging-log.html
logcat | grep "^..HttpUtility" //tag为HttpUtility
logcat | grep "^..HttpUtility\|^..GlobalContent" //tag为HttpUtility或GlobalContent
附,手机上安装sqlite3。默认情况下,会在手机的/system/xbin/目录下有一个叫sqlite3的文件,它就是设备上用来操作数据库的工具。
假如没有这个文件,则需要从别的设备上拷贝一个。我是通过在mac上建一个虚拟设备然后把sqlite拷贝出来,然后再拷到手机。
注意:新建的虚拟设备的api版本需要跟手机的api版本一致,例如都是4.2.2的。否则会出错。
1)、在DDMS窗口的File Explorer面板下展开system > xbin,找到sqlite3 ,点击右上角的软盘图标(pull a file from the device) 将其保存到本地电脑其他位置,然后再push到手机的sdcard中。
2)、连接到手机的shell,获取管理员权限(#代表有权限,$代表没有管理员权限),使用命令 su,然后输入密码
3)、获取手机system目录的读写权限,命令:#mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
4)、进入手机sdcard,把文件拷贝到/system/xbin/下:#adb push sqlite3 /system/xbin/sqlite3
5)、修改sqlite3的权限:#chmod 4755 /system/xbin/sqlite3
6)、最后,记得把system目录的权限改回去,还原成只读:# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
参考:
1、http://blog.chinaunix.net/uid-635442-id-2698555.html
2、http://panxq0809.iteye.com/blog/1264785
3、http://blog.csdn.net/leon90dm/article/details/8913180
4、http://www.jizhuomi.com/android/environment/191.html