Android调试中出现sqlite3 not found的解决办法

2,142 阅读2分钟
原文链接: bingyishow.top

简介

最近好久都没有更新过博客了,感觉没有什么特别好的可以更新。那么我想何不更新一些自己学习的问题。so有了这篇文章。

这段时间一直在看《第一行代码 第二版》这本书,在看到第六章“数据存储全方案-详解持久化技术”的时候。按照书中的命令输入
sqlite3 XXX出现 sqlite3 not found。的问题。

原因

谷歌了一些文章。大致意思就是手机没有sqlite3。那么就需要我们自己下载到电脑,通过数据线传到手机上。然后进行调试。

方案

  • find一下相关文件,确定到底需要安装哪些内容,如果已经找到则不需要安装对应文件
root@hwH60:/ # find . -name "sqlite3"
root@hwH60:/ # find . -name "libsqlite.so"
root@hwH60:/ # find . -name "libsqlite_jni.so"
  • ok!上一步不用也行。哈哈哈,我们现在退出和手机的adb。
root@hwH60:/ # exit
shell@hwH60:/ $ exit
  • files.cnblogs.com/files/jiang… 处下载文件并解压。
  • 将相关文件放到内置存储卡中,为什么不直接放到/system/xbin/和/system/lib/可以参考
    www.cnblogs.com/jiangxinnju…
  • 下面是进行移动。
  • 首先需要cd到解压的目录。然后进行如下操作。(这是放到了手机内置存储的/storage/emulated/0/目录中)
PS D:\> adb push sqlite3 /storage/emulated/0/
PS D:\> adb push libsqlite.so /storage/emulated/0/
PS D:\> adb push libsqlite_jni.so /storage/emulated/0/
  • OK!我们继续。进入adb,手机授权电脑root权限。
PS D:\> adb shell
shell@hwH60:/ $ su - root
root@hwH60:/ # mount -o remount rw /system
  • 将需要的文件从内置存储卡中转移到目标目录
root@hwH60:/ # cp /storage/emulated/0/sqlite3  /system/xbin/                              <
root@hwH60:/ # cp /storage/emulated/0/libsqlite.so  /system/lib/
root@hwH60:/ # cp /storage/emulated/0/libsqlite_jni.so  /system/lib/
  • 修改对应文件的权限
root@hwH60:/ # chmod 4755 /system/xbin/sqlite3
root@hwH60:/ # chmod 0644 /system/lib/libsqlite.so
root@hwH60:/ # chmod 0644 /system/lib/libsqlite_jni.so
  • 执行sqlite3命令,发现已经可以使用
root@hwH60:/ # sqlite3
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .exit
  • 好了,现在开始擦屁股。咳咳咳·····
root@hwH60:/ # exit
  • 删除内置存储卡中的文件
shell@hwH60:/ $ rm -rf /storage/emulated/0/sqlite3
shell@hwH60:/ $ rm -rf /storage/emulated/0/libsqlite.so
shell@hwH60:/ $ rm -rf /storage/emulated/0/libsqlite_jni.so