在我们在安卓真机上做sqlite3的时候,会发现很多手机是不内置sqlite3的,这个时候我们需要自行下载传送到手机上
默认读者的手机拥有root权限并有类似终端模拟器的交互窗口获取root权限
uname -a//在终端中输入,寻找自己的系统版本号
对应自己的版本号,可以在 https://github.com/tech128/sqlite3 寻找自己的对应的sqlite3数据库,一定要对应好否则将不能正常运行,若是此处找不到,可根据自己的uname在github上搜寻对应的sqlite3
由于我们需要把sqlite3的二进制程序传送到/system/xbin内,所以应该将/system以可读写的方式重新挂载,默认是只读的
在DOS中转到adb的目录下,我的是C:\Program Files (x86)\Android\android-sdk\platform-tools adb root //执行命令,让adb获取root权限,前提是手机开启了root权限并在开发者模式打开USB调试 adb remount //(为系统文件/system, /vendor,/oem加上读写权限) 有的会出现挂载设备忙的问题(busy)导致这一步失败 解决方案: adb disable-verity adb reboot之后就能够remount成功,
但是adb disable-verity具体做了什么呢? 官方给出adb disable-verity的解释是这样的:disable dm-verity checking on USERDEBUG builds 大致意思就是不使用dm-verity验证userdebug版本.可以理解为userdebug版本有些system分区被verity标识. 所以会出现上述错误是因为某些分区被系统标识,必须要验证数据签名,我们只需要忽略验证就行了. 上面可以看到签名是否需要验证主要是由dm-verity决定的,那它又做了什么呢? 它的作用和工作流程可以移步 http://blog.csdn.net/u011280717/article/details/51867673
remount成功之后就可以把sqlite3传入手机了
remount的另一种方式执行mount | grep /system 看到下面这个/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel… 这个ro就是Read-Only只读的意思继续执行命令 mount -o remount,rw -t ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system 这种方式是在adb shell中执行,可以找到/system分区的具体挂载设备(有差异,根据情况变更)
adb push E:\sqlite3 /system/xbin adb shell //进入shell确认sqlite3是否在qizhong sqlite3 //试试运行是否成功