在学习android下SQLite数据库编程的时候,我们通常会在eclipse的File Explorer视图中导出数据库文件(后缀名为.db或.db3),然后可能会在可视化的数据库软件(比如SQLite Expert)中查看。这个操作在我们使用android官方模拟器时是很常见的。但是,官方的模拟器运行起来又卡又慢,让人难以忍受。所以和很多人一样,我也选择了genymotion这个神器。启动运行,怎一个快字了得。
下载地址:https://cloud.genymotion.com/page/launchpad/download/
但是有个问题就是如果用这个模拟器测试数据库应用,在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 |
当你点击的时候,你会发现你,没有反应。data文件夹不会展开。其实并不是因为这是空文件夹,只是你没有这个权限而已。因为eclipse对于这个文件来说是“其他人”的身份。它的权限是 - - x 。也就是说没有可读(r)的权限。不过我们在命令行adb shell里面是所有者的身份。现在我们修改这个文件夹的访问权限。要修改,我们要切换到root的模式,在命令行输入 su 。默认是没有密码的,所以我们直接成为了root用户。
当前导符 $ 变成了 # 就说明,你现在是root用户了。然后还要了解的是 权限的数字表示方法。刚才不是三位为一组嘛,可以用4 2 1来表示对应权限。比如 r w x 就是 421。- - x 就是 0 0 1。所以r w x r w x - - x,就是4 2 1 4 2 1 0 0 1。简化版就是三位相加。表示为 7 7 1.(7 =4 +2 +1)。我们只需要该文件夹对 “其他人” 可读,就行了。所以只需将 - - x 变成 r - x,也就是4 0 1,即5。所以可执行修改访问模式的命令 chmod 775 data ,然后再通过 ls -al命令查看一下。
可以看出权限已经修改了。在看eclipse的文件管理器。data文件夹已经可以展开了。
到了这里,只是data文件件可以访问。里面的子目录的权限并没有相应的改变。我们可以进入通过 cd 命令,进入data文件夹,再按照上面的 命令去依次修改你要访问的文件夹的权限。我们接着要修改子目录data的属性。方法同上。然后进入第二个data文件夹,可以看到各个应用的文件夹。
找到自己的刚才安装的应用的文件夹。再依次对子目录修改权限就能看到你的数据库文件了。然后你可以选择导出这个文件。
如果你觉得,这样一步一步的太麻烦。你也可以批量修改文件夹及其子文件夹的属性。比如在最开始的data文件夹。你可以使用命令 chmod -R 775 data 其中参数-R的意思就是 递归(Recursive)的意思。这个递归在linux里面还是很常用的。比如删除非空的文件夹的时候。