利用adb 访问手机SQlite 遇到问题及解决办法
一、手机得先具有Root 功能:
如果手机还没root ,可使用360手机助手里边的一键ROOT。
1、首先将手机连接360手机助手。
2、点击“我的手机”---管理预装软件----一键Root
3、等待其完成即可
二、通过adb shell指令进入#界面
1、控制台输入adb shell 命令后可能出现类似 adb 不是内部指令等错误。
原因:说明adb 配置不正确,android2.2和android2.3是不一样的,在2.2中,adb.exe是在tools文件夹下,而在2.3中,则在platform-tools文件夹下。
办法:需要将Android SDK安装路径下的adb.exe文件的目录添加到系统的环境变量中。
所以,将以下路径(我的SDK安装路径下)
D:\adt-bundle-windows-x86-20130917\adt-bundle-windows-x86-20130917\sdk\platform-tools加到系统变量Path中即可。
计算机——属性——系统保护——高级——环境变量------系统变量
注意:不要更改原有路径,在原有路径后添加分号,再将复制新的路径上去即可。
2、上述之后,可能输入adb root 后又会出现"adbd cannot run as root in production builds"、
原因:未给root充分的手机安装adbd
办法:首先,在手机端安装Superuser Permissions软件并打开,使手机获取超级用户权限(能让在已经ROOT的设备上强制以ROOT模式运行adbd );接着,输入adb shell 进入的可能是shell@android:/ $ 界面而不是#界面,这时候需要su一下才进入#。
三、访问sqlite 数据库
1、当输入sqlite3 想访问建立的数据库后,可能又会遇到sqlite3 not found 问题。
原因:system/xbin目录下缺少sqlite3文件。
办法:往system/xbin导入sqlite3文件。
首先运行虚拟机,在DDMS---File Explorer视图下system/xbin/下找到sqlite3导出到桌面等地方
接着类似办法将导出的sqlite3导入到 真机/mnt/sdcard目录下
当执行cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3 命令时候可能会出现
sh: can't create /system/xbin/sqlite3: Read-only file system问题。
原因:/system是只读的,此时需要重新mount,改为可读写,然后才能继续拷贝 。注意:mount (从屏幕列出来的mount数据中找到/system的mount信息,空格隔开的,第一列表示设备名,第二列表示目录,第三列表示文件系统,第四列表示权限。开始时候直接根据网上教程输入指令都不成功,是由于设备名和文件系统不一样,所以需要根据自个机子的mount信息来重新mount)
重新mount后 再执行cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3 命令复制文件,如上图,还需要注意改下文件的权限,命令: chmod 4755 /system/xbin/sqlite3,最后运行sqlite3成功。