在android开发中使用adb shell下的sqlite3命令来查看sqlite数据库时,出现了 [ sqlite3 : not found]错误。在网上搜索了一下问题的原因:原来是模拟器或真机中的/system/xbin 目录下少了sqlite3 这个文件。解决方法如下:
[1] 让/system文件夹可读写
$ adb shell # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system --------------这一步可能没有权限成功执行,虽然没有报错
[2] 打开另外一个有sqlite3(/system/xbin/sqlite3)的模拟器或者真机(要获得root权限),把sqlite3文件导出,并把它导入到没有sqlite3的机器的 /system/xbin 目录下面。[注:可以使用DDMS或者File Exploer来完成这个操作]
$ adb push sqlite3 /system/xbin ---------无法push成功,提示permission denied
# chmod 4755 /system/bin/sqlite3
[4] 设置 /system为只读文件
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
[5] 通过上面的4个步骤就可以使用 sqlite3 命令来操作 sqlite 数据库了。
说一下我使用的方法:
1.首先打开一个模拟器:命令 adb pull /system/xbin/sqlite3 d:\ 作用:将sqlite放到d盘根目录
2.关掉模拟器,插入无法正常使用sqlite3命令的样机,输入命令:adb push d:\sqlite3 /sdcard/ 作用:将sqlite3先放到sdcard根目录下,因为直接push到system/xbin目录肯定要提示权限错误;
3.adb shell 然后su获取root权限,再 cp /sdcard/sqlite3 /system/xbin
OK,大功告成