事实证明探索的道路是艰苦的。
手机rom中不带sqlite的话,需要自行添加,http://en.appnee.com/index.php?qa=72中说明了通过adb shell访问手机上的某些位置时不允许的,因此root手机,意思就是获取手机权限。我是通过root精灵实现的一键root。
就像我们在cmd里面用到windows 的某个程序一样,需要将该程序的路径添加的系统path中,同样的要在adb shell中用到sqlite,则需要将sqlite放到android中的system/bin文件中。
由于system/bin路径我们是无法访问的,不像是从pc上直接复制一个文件到手机上。因此需要通过adb shell 的push指令,adb push E:\database\sqlite\androidversion\sqlite3 /system/xbin将sqlite3复制到手机的指定路径下。adb push 可以复制文件到手机上的一般路径(如sdcard 下),但是要想访问到/system/xbin光有root权限是不够的。这个时候需要打开/system/xbin的访问权限:
root@HWHol-T:/ # mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
root@HWHol-T:/ #chmod 777 /system
root@HWHol-T:/ # cd system
root@HWHol-T:/system # chmod 777 xbin
root@HWHol-T:/system # cd xbin
root@HWHol-T:/system/xbin # exit
root@HWHol-T:/ $ exit
此时已经具有system/bin的写权限,可以pushsqlite3进去了。
所有的adb指令必须得是在cmd shell模式下,exit可退出su 模式,exit可退出adb shell模式。
图1 adb shell模式 图2 切换到cmd shell模式下 图3 执行su指令以后
通过上面的操作,仅仅是将sqlite3放到了手机里,但是我们要使用system/bin下sqlite3的话还是要获得一定的权限:chmod 4755 /system/xbin/sqlite3然后就可以使用sqlite3了。注意使用sqlite3之后,cmd中输入的指令又是sqlite3 那一套了。所以整个过程有三套指令:cmd,adb,sqlite3。
整个操作过程中,犯的一个非常傻的错误就是竟然操作的是sqlite3.exe,这在android中是行不通的!!!附件里是我最终使用的sqlite版本。