Android开发中使用adb查看sqlite3数据库时报错sqlite3: not found

很久以前就心血来潮想写写博客,记录下自己学习时候踩的一些坑,但这还是第一次尝试,欢迎各位大佬能给我这个小菜鸡纠错或者提建议~

为了搞毕设重新捡起sqlite,照着《第一行代码-Android》使用adb进行查看,但发现实际操作起来是真的麻烦,特别是真机!
主要是两个坑:1.root权限;2.sqlite3文件
(1)root权限,我使用的是小米手机4。刚开始网上各种找root工具,发现全部没用。等我针对MI4进行搜的时候,才发现原来小米手机只要刷开发版,在 设置->授权管理 里就有一个ROOT权限管理。(这里安利一个解压神器ZArchiver。虽说是解压软件,但也可以当个File Explorer,获取到root后还可以看系统文件。)怎么刷机我就不说了,我也没刷过,我的MI4开发版是送去维修时候维修人员自己给刷的开发版,倒是让我省事了。

(2)等获取到root权限以后开始尝试看数据库,但发现距离成功就堵在一句 sqlite3: not found。其原因在于手机系统里没有sqlite3这个文件。
1.首先要获取到sqlite3这个文件。可以通过建虚拟机来获取。我是采用Android Studio的AVD Manger建的虚拟机,选择需要的API版本(还要考虑CPU架构!!这是后面的坑,请看6)。打开虚拟机后在 View->Tool Windows->Device File Explorer中找到/system/xbin/sqlite3文件,存下来到手机里,建议这个存放路径设的简单点。
在这里插入图片描述
接着我们需要将这个sqlite3文件放入到手机的/system文件夹中。(本来是打算使用ZArchiver直接复制过去的,理论上可行而且不用cmd命令行,但是它提示:需要挂载文件系统为读写才能进行操作。结果最后还是需要敲命令行。)
1.输入adb shell进入shell命令界面,再输入su进入超级管理员账号。
2.输入mount查看系统挂载情况,找到/system的那一行,记下路径,后面需要用上,每台机子都不一样,我这里就比较长。
在这里插入图片描述在这里插入图片描述
可以看到我的/system挂载情况为rw,这是我已经修改过的缘故,一般情况下为ro,即readonly。
3.输入mount -o remount -w /dev/block/platform/msm_adcc.1/by_name/system /system进行修改。后面这个路径需要按照上面mount显示得到的/system路径,每个机子不一样的要注意,我就是踩了这个坑。
4.用cat命令将sqlite3文件复制到/system/xbin下。(ZArchiver在挂载情况修改后还是一样的情况不能用,估计是软件权限问题了)
cat /storage/emulated/0/360/sqlite3 > /system/xbin/sqlite3

这样sqliite3文件就导成功了
在这里插入图片描述
5.这里弄完有点小激动,忘记改权限了,直接给我报了sqlite3: can’t execute: Permission denied。输入chmod 4755 /system/xbin/sqlite3就解决了。
6.还是没完:)出现/system/xbin/sqlite3: not executable: 32-bit ELF file。这是因为和cpu架构不匹配,之前只考虑了API。
输入cat /proc/cpuinfo,可以看到手机的CPU架构。再按照这个架构重建虚拟机重新开始。在这里插入图片描述
如果成功,输入sqite3会出现它的版本信息。之后就可以操作了。
在这里插入图片描述
真的是把整个过程里能踩的坑全踩了,TAT

posted @ 2024-12-23 14:29  Zang998  阅读(246)  评论(0)    收藏  举报  来源