• 在我们在安卓真机上做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 //试试运行是否成功
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐