在学习android下SQLite数据库编程的时候,我们通常会在eclipse的File Explorer视图中导出数据库文件(后缀名为.db或.db3),然后可能会在可视化的数据库软件(比如SQLite Expert)中查看。这个操作在我们使用android官方模拟器时是很常见的。但是,官方的模拟器运行起来又卡又慢,让人难以忍受。所以和很多人一样,我也选择了genymotion这个神器。启动运行,怎一个快字了得。
链接可能会失效,所以大家百度到genymotion的官网去下载就可以了。
但是有个问题就是如果用这个模拟器测试数据库应用,在eclipse里面的文件管理器的视图中,是不能打开data文件夹的。相信很多人也都遇到过这个问题。其实问题的原因只是eclipse没有访问这个文件夹的权限而已。说到这里,因为Android是基于Linux的,所以我们要了解一下Linux中关于文件的知识了。
首先,我们要运行一个genymotion的模拟机。注意只运行一个。在把你的应用部署到该模拟机之后。我们打开Windos的命令行窗口。输入 adb shell。来运行一个Android的迷你Linux 终端环境。
- 我们可以通过ls -al命令来查看模拟机中文件的详细信息。
我们以其中一行为例,比如data那一行。
注意红线标注的地方:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
d | r | w | x | r | w | x | - | - | x |
第0位的字符表示的是文件的类型,用 d 代表的是文件夹(directory),用 - 表示文件。剩余的九位分作三组,三位一组。第一组 rwx 表示的是所有者的权限,第二组 rwx 表示的是所有者所在的组,所拥有的权限,第三组 - -x 表示的是其他人的拥有的权限。其中,r 表示 read ,即可读的权限,w 表示 write ,即可写的权限,x 表示 execute ,即可执行的权限。如果没有某一权限,则对应的位置为 - ,减号表示。同样的,我们可以在eclipse的文件管理器视图中查看。
当你点击的时候,你会发现你,没有反应。data文件夹不会展开。其实并不是因为这是空文件夹,只是你没有这个权限而已。因为eclipse对于这个文件来说是“其他人”的身份。它的权限是 - - x 。也就是说没有可读(r)的权限。不过我们在命令行adb shell里面是所有者的身份。现在我们修改这个文件夹的访问权限。要修改,我们要切换到root的模式,在命令行输入 su 。默认是没有密码的,所以我们直接成为了root用户。
chmod 775 data ,然后再通过 ls -al命令查看一下。
可以看出权限已经修改了。在看eclipse的文件管理器。data文件夹已经可以展开了。
cd命令,进入data文件夹,再按照上面的 命令去依次修改你要访问的文件夹的权限。我们接着要修改子目录data的属性。方法同上。然后进入第二个data文件夹,可以看到各个应用的文件夹。
找到自己的刚才安装的应用的文件夹。再依次对子目录修改权限就能看到你的数据库文件了。然后你可以选择导出这个文件。
如果你觉得,这样一步一步的太麻烦。你也可以批量修改文件夹及其子文件夹的属性。比如在最开始的data文件夹。你可以使用命令 chmod -R 775 data 其中参数-R的意思就是 递归(Recursive)的意思。这个递归在linux里面还是很常用的。比如删除非空的文件夹的时候。