最近在学习《第一行代码》到sqlite数据库存储阶段。在用OPPO A37真机调试的时候使用sqlite3命令出现了sqlite3:not found 错误。在网上搜索了一下,发现现在很多安卓机并没有自带sqlite3文件,需要自行导入。过程如下:
一、 获取手机root权限
手机安装了360一键root。下载地址
二、获取sqlite3文件
- 1.在Android studio 中新建虚拟机,虚拟机的系统版本要与真机的系统版本一致。我使用的真机是5.1系统,虚拟机就选择了API22。
- 2.打开Tools-Android-Android Device Monitor,在/System/xbin目录下找到sqlite3文件,推送到E盘根目录下。
三、将sqlite3文件推送到手机上
1.通过命令行直接推送:
打开命令行,输入:adb push E:/sqlite3 /system/xbin
结果却是
adb: error: failed to copy ‘E:/sqlite3’ to ‘/system/xbin/sqlite3’: remote Permision denied
权限被拒绝2.间接推送:上网搜索了一下,先将文件推送到手机sdcard临时目录下,再从临时目录复制到xbin目录,方法如下:
cmd输入命令
adb shell 进入手机命令行
su 获取root权限
mkdir /mnt/sdcard/tmp 创建临时文件夹tmp
exit 退回2次,到电脑命令行下
adb push E:/sqlite3 /mnt/sdcard/tmp 将sqlite3推送到tmp目录下
成功如下图:
3.将文件拷贝到xbin目录下
这一步涉及到修改文件权限。看了很多博客需要用chmod命令修改,试了几次也没弄好。最后下载了一个RE文件管理器安装到手机上,方法如下:用360超级root软件给了RE文件管理器root权限
re文件管理器下长按system文件夹,打开权限设定,全选所有权限并应用到子文件和子文件夹
然后命令行输入
adb shell
su
cp /mnt/sdcard/tmp/sqlite3 /system/xbin/sqlite3 拷贝到xbin文件夹下
这时运行sqlite3,输入
sqlite3
如果出现了not executable:32-bit ELF file或not executable:64-bit ELF file错误,说明sqlite3文件与真机的cpu架构不匹配。4.查看cpu架构
命令行输入
adb shell
su
cd /proc
cat cpuinfo 获取CPU信息
获得信息如下
cpu架构为AArch64,查询了一下结果如下:
ARMv8-A 是首款64 位架构的ARM 处理器,是移动手机端使用的CPU。其中的两种主要执行状态, AArch64 - 64 位执行状态是其中一种,这不是CPU的型号,而是处理器的指令集!5.重新获取sqlite3文件
打开avd,新建虚拟机,选择cpu架构为arm,重新第2步推送到手机上。
然后命令行执行sqlite3成功。
后记:折腾了3天对于一个大龄自学的菜鸟实在挺不容易的,adb命令打了一百遍啊一百遍。。。。