zoukankan      html  css  js  c++  java
  • eclipse无法访问genymotion模拟器下/data/data文件解决方案

            在学习android下SQLite数据库编程的时候,我们通常会在eclipse的File Explorer视图中导出数据库文件(后缀名为.db.db3),然后可能会在可视化的数据库软件(比如SQLite Expert)中查看。这个操作在我们使用android官方模拟器时是很常见的。但是,官方的模拟器运行起来又卡又慢,让人难以忍受。所以和很多人一样,我也选择了genymotion这个神器。启动运行,怎一个快字了得。

    下载地址:https://cloud.genymotion.com/page/launchpad/download/ 

    链接可能会失效,所以大家百度到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用户。

            

            当前导符 $ 变成了 # 就说明,你现在是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里面还是很常用的。比如删除非空的文件夹的时候。

            

  • 相关阅读:
    centos7环境下使用xtrabackup备份mysql8.0自动化脚本
    ECharts series data 数组里面的元素,可以是对象
    Docker for Mac 配置镜像加速器,加快镜像下载速度
    sql函数split在presto、spark、hive中的不同
    字段类型为:map<string,string> 时,查询取值(必须使用单引号)
    vendor模式下get报错:go get: disabled by -mod=vendor,此时go env里 GOFLAGS=" -mod=vendor"
    Etcd使用go module的灾难(包依赖问题)
    Go time.Parse转时间戳为啥会自动加8小时?
    scala 下划线使用指南
    【Spark】遍历DataFrame中的每一行数据
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082100.html
Copyright © 2011-2022 走看看