Android 设备监视器“数据”文件夹为空

Posted

技术标签:

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

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

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

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

【问题讨论】:

在调试模式下,这个答案帮助了我:***.com/a/42865585/3520656 【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

在 cmd GoTo 中:

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

执行:

adb root

完成

【讨论】:

【参考方案3】:

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

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

就是这样。问题解决了。

【讨论】:

【参考方案4】:

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

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

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

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

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

Steps to use the tool

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

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

    在您的 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手机中查看数据库。

以上是关于Android 设备监视器“数据”文件夹为空的主要内容,如果未能解决你的问题,请参考以下文章

XamarinSQLite教程在Xamarin.Android项目中定位数据库文件

XamarinSQLite教程在Xamarin.Android项目中定位数据库文件

无法打开内核设备“\.Globalvmx86”: 系统找不到指定的文件。是否在安装 VMware Workstation 后重新引导? 未能初始化监视器设备。

android设备监视器屏幕显示这个奇怪的空白屏幕,没有任何工作

Android 设备监视器,发生错误

Android设备监视器无法在Ubuntu 17.10中打开