• 如何设置Android手机的sqlite3命令环境


    1、在PC环境下启动一个模拟器(不是手机)

    2、查看模拟器 /systen/xbin是否有sqlite3命令

    adb shell
    cd /system/xbin
    ls

    3、把模拟器 /system/xbin/sqlite3命令文件从模拟器拷到PC上

    adb pull /system/xbin/sqlite3 e:/eclipse

    4、关闭模拟器,把Android手机连接到PC

    5、获取Android手机 /system 文件夹的读取权限

    adb shell # mout -o remout, rw -t yaffs2 /dev/block/mtdblock3 /system //(根据自己的设备网上很多人的设备是这个)

    6、把PC上的e:/eclipse/sqlite3文件拷到Android手机的/system/xbin/目录下

    adb push e:/sqlite3 /system/xbin
    // 若是提示permission denial
    adb shell
    chmod 777 system/
    cd system
    chmod 777 xbin

    然后执行上面的 push
    若是还是不行就直接 到eclipse DDMS filter explore 下面 /system/xbin
    把所用的数据直接从电脑上拖到 /system/xbin 下面

    7、修改Android真机/system/xbin/sqlite3命令的权限

    adb shell
    chmod 4755 /system/xbin/sqlite3

    然后输入sqlite3

    进入到sqlite就可以了。

    As an alternative (may not be secure or even good idea though) you can always upload the sqlite3 binary to /system/bin this worked for me:

    // First lets mount /system/ to allow read/write (rw)
    $ adb shell
    $ su
    # mount -o remount,rw /system 
    
    // in another terminal change directory (cd) to where sqlite3 is and lets push it
    $ ls 
    sqlite3
    $ adb push sqlite3 /sdcard/
    
    // Now back to the other shell lets copy and change permissions of the binary
    # cat /sdcard/sqlite3 > /system/bin/sqlite3 
    # chmod 4755 /system/bin/sqlite3
    
    // Now lets mount back /system/ as read only (ro)
    # mount -o remount,ro /system
    
    // And now we can use sqlite3 from shell:
    # sqlite3 /data/data/com.telly/databases/fun.db
    SQLite version 3.7.4
    Enter ".help" for instructions
    sqlite> .tables
    android_metadata  lulz               
    
    // Note: I'm using the sqlite3 binary that comes with "SuperOneClickv1.6.5-ShortFuse"
    // You can always pull sqlite3 binary from emulator:
    // Start an emulator and then from a terminal
    $ adb pull /system/xbin/sqlite3

    Works on rooted Nexus-S running Android ICS 4.0.4 using the sqlite3 binary from SuperOneClick

    shortfuse.org/?page_id=2 

    download.cnet.com/SuperOneClick/3000-2094_4-75447027.html

    On the Nexus 4 do the following :

    adb shell
    $ su
    # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    # dd if=/sdcard/sqlite3 of=/system/xbin/sqlite3
    # chmod 777 /system/xbin/sqlite3
    # mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

    Notice the folder is /system/xbin and the chmod is 777

    This works on my nexus 4 with kitkat , sqlite3 binary got from the emulator /system/xbin folder 

    To install sqlite3 on NON-ROOTED devices, here is a way that has been proved working on my Galaxy S3, FYR.

    $ adb -e pull /system/xbin/sqlite3  # get sqlite3 binary from emulator with the same CPU arch.
    $ adb -d push sqlite3 /mnt/sdcard   # push it
    $ adb -d shell
    $ run-as <PACKAGE_NAME>             # run as your app, which should be debuggable.
    $ cd databases; pwd
    /data/data/<PACKAGE_NAME>/databases
    $ cat /mnt/sdcard/sqlite3 > sqlite3 # copy it to internal storage directory
    $ ls -l sqlite3
    -rw-rw-rw- u0_a138  u0_a138     36860 2014-03-26 06:37 sqlite3
    $ chmod 777 sqlite3                 # change mode bits, to be executable
    
    $ ./sqlite3                         # now it works on your NON-ROOTED device
    SQLite version 3.7.11 2012-03-20 11:35:50
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite>

    If you are lazy like me you can 

    download one right here for ICS or before or

    for Jelly Bean and later here

    From the answer of evelio, I had problem to push the sqlite3 file to /system/bin. So, instead, I have pushed it to the /sdcard.

    In this thread I found the right Solution (answer of Kila): How can I install sqlite3 on rooted NexusOne runs Gingerbread

    $ adb push sqlite3 /sdcard/
    
    $ adb shell
    
    $ su
    
    # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    
    # dd if=/sdcard/sqlite3 of=/system/bin/sqlite3
    
    # chmod 4755 /system/bin/sqlite3
    
    # mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

    It works on my Samsung Galaxy S II with 2.3.3

    Titanium Backup installed, Set the variable
    %SQLITE3 to "/data/data/com.keramidas.TitaniumBackup/files/sqlite3".

    I actually copied the titanium backup sqlite3 binary to system/xbin and it has been working for me since.

    A symlink is an alternative solution, if you want the binary in your PATH (/system/xbin) and your system-rom is nearly full.
    For example there is only 200KB free space left in the /system of my Nexus 7 after installing Lollipop + SuperSu + Busybox.

    su
    mount -o remount,rw /system
    ln -s /data/data/com.keramidas.TitaniumBackup/files/sqlite3 /system/xbin/sqlite3
    mount -o remount,ro /system

    Symlink has only 53 B and the binary has 300 KB.

    Use the attached sqlite3...extract & copy it to the /system/xbin folder...give execute permissions [0755] and it should work
    http://forum.xda-developers.com/attachment.php?attachmentid=2246063&d=1378751634 : 2012-03-20 (3.7.11)

    After copying file, you need to reboot.

    Version of SQLite used in Android?

    Using the emulators (adb shell sqlite3 --version):

    SQLite 3.8.6:

    22-5.1-Lollipop


    SQLite 3.8.4.3:

    21-5.0-Lollipop
    20-Android L Developer Preview


    SQLite 3.7.11:

    19-4.4-KitKat
    18-4.3-Jelly Bean
    17-4.2-Jelly Bean
    16-4.1-Jelly Bean


    SQLite 3.7.4:

    15-4.0.3-Ice Cream Sandwich
    14-4.0-Ice Cream Sandwich
    13-3.2-Honeycomb
    12-3.1-Honeycomb
    11-3.0-Honeycomb


    SQLite 3.6.22:

    10-2.3.3-Gingerbread
    9-2.3.1-Gingerbread
    8-2.2-Froyo


    SQLite 3.5.9:

    7-2.1-Eclair
    4-1.6-Donut
    3-1.5-Cupcake

    Note: Android SDK level links show where the android.database.sqlite package has changed.

    Where there is no link (e.g. SDK level 17), indicates no changes to that package.

    Note: Here are some anomalies (list by no means exhaustive):

    SQLite 3.7.13 (instead of 3.7.11):

    LG Optimus L70 MS323 LGMS323|KOT49I.MS32310b (19-4.4-KitKat)
    LG Optimus G E975 LG-E975|JZO54K (16-4.1-Jelly Bean)
    LG G2 D802 LG-D802|JDQ39B (17-4.2-Jelly Bean)


    SQLite 3.7.6.3 (instead of 3.6.22):

    LG Optimus Sol E730/myTouch E739/myTouch Q C800 (10-2.3.3-Gingerbread, GRJ22)
    LG Optimus Vu F100S/F100L (10-2.3.3-Gingerbread, RK39F)
    LG Optimus LTE TAG F120K/F120L (10-2.3.3-Gingerbread, GRK39F)
    LG Optimus LTE L-01D (10-2.3.3-Gingerbread, GRJ90)
    LG Optimus Net P690b (10-2.3.3-Gingerbread, GINGERBREAD)
    LG Prada KU5400 (10-2.3.3-Gingerbread, GWK74)
    LG Prada P940 (10-2.3.3-Gingerbread, GWK74)
    LG LU6200/SU640 (10-2.3.3-Gingerbread, GRJ90)s


    SQLite 3.7.5 (instead of 3.7.4):

    Samsung Galaxy Note (15-GT-N7000|IML74K.ZSLPF)
    Samsung Galaxy SII (15-SC-02C|IML74K.OMMP4 and GT-I9100|IML74K.DXLP7)
    Samsung Galaxy S Duos (15-GT-S7562|IMM76I.S7562XXBMD6)
    Samsung Galaxy Tab 7.7 (15-GT-P6810|IMM76D.ZSLP8)


    SQLite 3.7.0.1 (instead of 3.6.22):

    LG Esteem MS910 (10-2.3.3-Gingerbread, GSE-_v.05)
    AndroTab (8-2.2-Froyo, 1.0.7100.0385)
    GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)


    SQLite 3.6.23.1 (instead of 3.5.9):

    Motorola Backflip MB300 (7-2.1-Eclair, ERD79)
    Garmin-Asus nüvifone A10/A50/Garminfone (7-2.1-Eclair, ERE27)

    Note: adb command to get SQLite version only works on emulators and

    on devices with sqlite3 available: http://stackoverflow.com/a/3645800/444761

  • 相关阅读:
    #4702. gcd
    独特的树叶

    搞笑的代码 ( funny )
    越野赛车问题
    删边(cip)
    最长公共子序列
    美食节
    线段树
    新年快乐
  • 原文地址:https://www.cnblogs.com/shangdawei/p/4467952.html
Copyright © 2020-2023  润新知