sqlite3 not found/not executable:32-bit ELF file解决办法

最近在学习《第一行代码》到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信息
    获得信息如下
    sqlite3 not found/not executable:32-bit ELF file解决办法_第1张图片
    cpu架构为AArch64,查询了一下结果如下:
    ARMv8-A 是首款64 位架构的ARM 处理器,是移动手机端使用的CPU。其中的两种主要执行状态, AArch64 - 64 位执行状态是其中一种,这不是CPU的型号,而是处理器的指令集!

  • 5.重新获取sqlite3文件
    打开avd,新建虚拟机,选择cpu架构为arm,重新第2步推送到手机上。
    然后命令行执行sqlite3成功。


后记:折腾了3天对于一个大龄自学的菜鸟实在挺不容易的,adb命令打了一百遍啊一百遍。。。。

参考:http://www.educity.cn/wenda/389797.html

你可能感兴趣的:(sqlite3 not found/not executable:32-bit ELF file解决办法)