【问题标题】:Android Device Monitor "data" folder is emptyAndroid 设备监视器“数据”文件夹为空
【发布时间】:2016-04-08 18:51:58
【问题描述】:

我已经测试了在我的应用程序数据库中创建、插入和检索数据,并且知道它可以通过使用 Log 语句来工作。

但是,我希望加快测试并使用 Android 设备监视器。但是,虽然db存在并存储了数据,但在下面访问时,data文件夹是空的:

为什么会这样?如何将其配置为显示 db 文件和内容?

【问题讨论】:

标签: android sqlite android-studio


【解决方案1】:

如果您使用的是 Windows,请按照以下说明逐步操作:

  1. 在 android 模拟器中启动您的应用。
  2. 然后以管理员身份打开命令提示符并导航到 sdk 路径,例如 cd C:\Android\sdk\platform-tools
  3. 输入adb root
  4. 然后输入adb pull /data/data/ name-of-your-package /databases/name-of-your-database
  5. 您会在名为platform-tools 的文件夹中找到您的数据库。

然后您可以通过 chrome webstore 在 Google Chrome 中安装 Sqlite Manager 扩展,并使用它来查看和管理您导出的数据库。

如果您的手机已root,则可以按照与上述相同的说明进行操作。

【讨论】:

    【解决方案2】:

    在 cmd GoTo 中:

    C:\Users\UserName\android-sdks\platform-tools
    

    执行:

    adb root
    

    完成

    【讨论】:

      【解决方案3】:

      如果有人遇到上述问题,请在终端窗口中按照以下步骤操作:

      1. 导航到 /Users/用户名/Library/Android/sdk/platform-tools
      2. 执行 ./adb root

      就是这样。问题解决了。

      【讨论】:

        【解决方案4】:

        如果你想浏览你的设备数据(data/data)文件夹,有两种方法。

        1. 您需要拥有具有 root 访问权限的手机才能使用 ADM(Android 设备监视器)浏览数据文件夹。

        ADM 位置 - (YOUR_SDK_PATH\Android\sdk\tools)

        1. 您需要在 root 模式下运行 ADB,执行此操作:adb root

        如果您只想查看您的数据库和表,那么最简单的方法是使用Stetho。对于每个使用SQLite buit by Facobook developed 的 Android 开发人员来说,这是一个非常酷的工具。

        Steps to use the tool

        1. 在应用程序的 gradle 文件中添加以下依赖项(模块:app)

        '编译'com.facebook.stetho:stetho:1.4.2'

        1. 在您的 Activity onCreate() 方法中添加以下代码行
        @Override
         protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         Stetho.initializeWithDefaults(this);
         setContentView(R.layout.activity_main);
         }
        

        现在,构建您的应用程序,当应用程序运行时,您可以通过在 url 中打开 chrome 浏览您的应用程序数据库:

        chrome://inspect/#devices
        

        相同的截图如下_

        ChromeInspact

        你的数据库

        希望这对所有人都有帮助! :)

        【讨论】:

          【解决方案5】:

          API_25 也有同样的问题,但它对我不起作用。

          配置一个API_23 emulator,它将在API_23上工作。

          【讨论】:

            【解决方案6】:

            使用模拟器解决问题

            文件夹/data 可以为空,因为您缺少适当的权限。为了解决它,我不得不执行以下命令。

            adb shell
            su
            

            这些命令会在模拟器中启动一个 shell 并授予您 root 权限。命令adb 位于Android SDK 的platform-tools 文件夹中,在MacOS 上通常安装在~/Library/Android/sdk/ 中。

            chmod -R 777 /data
            

            修改文件夹(以及递归子文件夹)/data 的权限,以使它们出现在工具 Aandroid 设备监视器中。

            adb root
            

            最后,此命令以 root 身份重新启动 adb。请注意,它仅适用于开发版本(通常是模拟器版本)。

            之后,您可以看到文件夹/data的内容并传输位于其中的数据。您也可以在控制台中使用adb pull <remote> <locale>,例如:

            adb pull /data/data/<app name>/databases/<database> .
            

            【讨论】:

              【解决方案7】:

              除了@Steven K 的回答:如果您想在无需 root 真实设备的情况下访问您的数据,您需要在具有 API 23模拟器 中运行您的应用程序/strong>(或更低)。这是一个known problem,在部署 Android Device Monitor 时,23 以上的 API 可能会导致问题。

              【讨论】:

                【解决方案8】:

                在开发过程中将数据库存储在公用文件夹中可能更容易。

                或者你可以看看这个帖子:

                How to access data/data folder in Android device?

                【讨论】:

                • 能否请您概述一下如何做到这一点?
                • 文件 dbfile = new File("/sdcard/mydb.sqlite" ); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); System.out.println("打开了吗?" + db.isOpen
                【解决方案9】:

                它不是空的....您只是没有权限在设备上查看该文件夹。

                在模拟器中试一试,因为您有 root 访问权限,所以它会为您工作。

                【讨论】:

                • 我正在我的个人设备上进行测试。如何获得 root 访问权限?
                • 您只能在root手机中查看数据库。
                猜你喜欢
                • 2017-01-11
                • 2018-12-23
                • 2014-09-03
                • 1970-01-01
                • 2017-03-26
                • 2015-06-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多