Android 使用adb shell命令时出现sqlite3 : not found 问题 解决方法

时间:2022-01-15 23:16:04

在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目录。

(可以新建个模拟器,从/system/xbin中导出sqlite3,即可得到sqlite3文件;或者从另外一个有sqlite3文件的机器中导出获得)
# adb push sqlite3 /system/xbin

 

(3)修改 sqlite3 权限
# chmod 4755 /system/xbin/sqlite3


(4)设置 /system为只读文件
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system


(5)至此,就可以使用 sqlite3 命令来操作 SQLite 数据库了。


http://download.csdn.net/detail/ygc87/4219518


如果出现如下错误,则需要把libncurses.so 文件push到/system/lib目录下:

CANNOT LINK EXECUTABLE: could not load library "libncurses.so" needed by "sqlite3"; caused by library "libncurses.so" not found


如果出现如下错误,是sqlite版本问题,重新上传更新版本

"cannot locate symbol "sqlite3_enable_load_extension" referenced by "sqlite3"


--------------------------文章2----------------------------


sqlite3 为一个可执行脚本程序,在system/xbin/下面,某些品牌手机rom 不带这个东西,导致没有该工具。

所以在进行开发的时候在命令行用 adb 连接到手机使用 sqlite3 查看数据库出现

sqlite3:not found

网上搜索了一下,也有关于此问题的解决方法。

不过这里我给出一个相对来说比较简单的:

1、查看你手机的Andorid的版本,比如我的是 4.1

2、在eclipse中打开对应版本(很重要,否则会提示cannot locate 'sqlite3_enable_load_extensions')的模拟器(创建 如果没有)并且启动

3、在DDMS窗口的File Explorer面板下展开system > xbin

看到了sqlite3 了么?ok。点击右上角的软盘图标(pull a file from the device) 将其保存到其他位置

4、然后连接你的手机,打开控制台,输入adb shell。(什么?提示adb命令无效?那去配置环境变量吧)

5、然后查看一下提示符 如果是 # 那就不用管了,如果是 $ ,那么说明你需要获得root权限进行下面的操作

6、保持手机屏幕没有锁屏最好是常亮模式 在提示符下敲入 su 或者 su root,如果手机弹框提示是否允许获得root权限请选择 是。点击后发现 $ 变成 # 了。OK 可以进行下面的操作了

7、将先前保存其他位置的sqlite3 在DDMS面板中通过右上角手机图标(push a file onto the device) 将文件push到sdcard中,准确的是在/mnt/sdcard

8、然后在命令行敲入 cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3 复制文件(为什么不用mv?我也试过,不过报

failed on '/sdcard/test.mp3' - Cross-device link 错误)

9、ok,检查手机/system/xbin下多了一个sqlite3文件,不过还不能执行。

10、继续敲入 chmod 4755 /system/xbin/sqlite3