zoukankan      html  css  js  c++  java
  • android install sqlite3

    在adb模式下用sqlite3命令查看数据库sqlite3 dbName提示:

    /system/bin/sh: sqlite3: not found

    原来android系统没有自带sqlite3命令,所以需要我们自己安装(其实只是将sqlite3文件导入相应目录)

    网上查了下,需要先将sqlite3文件导入到手机/system/xbin/目录下,然后将libncurses.so库文件导入/system/lib/目录

    貌似很简单,但却浪费了我两个小时,不过也在这过程中学到了不少新的知识。现在将经历的过程简单记载

    步骤:

    1、下载sqlite3文件和libncurses.so库文件

    2、将sqlite3和libncurses.so导入到android系统目录(重点)

    我用的小米手机,虽然有root权限,但是感觉并没有完全拥有权限。

    开始想到的最简单办法就是使用 adb push  pc上sqlite文件路径 /system/xbin ,出现下面提示:

    failed to copy 'C:UsersUserDesktopdownloadsqlitesqlite3' to 
    '/system/xbin/sqlite3': Read-only file system

    后来google有大牛说要遇到这种情况,要执行adb remount命令,又出现下面提示:

    remount failed: Operation not permitted

    用adb push这条路是走不通了,只好找其他方法。结果看到有大牛说可以先利用adb push命令将sqlite3文件导入手机sdcard中,然后再用linux下命令cp复制系统文件夹,命令如下:

    cp /mnt/sdcard/sqlite3  /system/xbin/sqlite3

    当时感觉像发现了新大陆,心想终于可以解决了,结果提示:

    /system/bin/sh: cp: not found

    我就纳闷了网上好多人说可以用cp命令,怎么我的手机下怎么没有呢,看了下/system/xbin/,目录下确实没有cp文件。原来android命令行没有cp命令,但是有mv命令,于是执行

    mv /mnt/sdcard/sqlite3  /system/xbin/sqlite3
    提示:failed on '/mnt/sdcard/sqlite3' - Cross-device link

    也就是说mv命令不允许将存储卡中的文件复制到/system/或/data/分区中,因为两者被认为是在不同的设备上。只能再google……

    后来发现了cat命令,查一下cat的用法:cat [选项]… [文件]… ,其作用是将[文件]或标准输入组合输出到标准输出。网上大牛:“平常工作时偶尔会用到cat命令去显示文本文件的内容,然后又想到了重定向 符’>’,所以两者一结合,就自然则然地想到是否可以通过将cat的文件输出到指定位置来代替cp的功能?通过尝试发现确实可以。”

    于是尝试:

    cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3
    提示:/system/bin/sh: cannot create /system/xbin/sqlite3: Read-only file system

    看到这个我觉感觉有希望了,cat确实有copy的功能。之前看到过这提示好解决,先将/system处于挂载状态,允许读写,命令如下:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

    在执行cat命令就OK了,然后将libncurses.so库文件按上面方法导入到/system/lib/,完整命令如下:

    导入到sdcard:
    adb push C:UsersUserDesktopdownloadlibncurses.so  /mnt/sdcard/libncurses.so
    将/system处于挂载状态,使可读写:
    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    复制到系统文件夹:
    cat /mnt/sdcard/libncurses.so > /system/lib/libncurses.so

    3、给sqlite赋予权限

    将sqlite3文件和libncurses.so库文件导入到相应目录后,adb模式下执行sqlite3命令提示:

    /system/bin/sh: sqlite3: cannot execute - Permission denied

    没有权限,需要添加,命令如下:

    chmod 4755 sqlite3

    验证sqlite3是否有权限:

    命令:ll sqlite3 
    提示:-rwxr-xr-x root root 36860 2012-08-15 21:45 sqlite3

    再执行sqlite3命令,提示如下:

    shell@android:/ # sqlite3
    sqlite3
    SQLite version 3.7.4
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite>

    OK,大功告成。感谢网上各位大牛的文章指导

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/visuals/p/4820035.html
Copyright © 2011-2022 走看看