Android设备监视器"data"文件夹为空

Sau*_*ron 43 sqlite android android-studio

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

但是,我希望加快测试并使用Android设备监视器.但是,尽管存在db并且存储了数据,但在下面访问时,该data文件夹为空:

在此输入图像描述

为什么会这样呢?如何配置它来显示db文件和内容?

Zen*_*ulz 40

使用模拟器解决问题

该文件夹/data可能为空,因为您缺少适当的权限.要解决它,我必须执行以下命令.

adb shell
su
Run Code Online (Sandbox Code Playgroud)

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

chmod -R 777 /data
Run Code Online (Sandbox Code Playgroud)

修改文件夹(和递归子文件夹)的权限,/data以使它们出现在工具A ndroid Device Monitor中.

adb root
Run Code Online (Sandbox Code Playgroud)

最后,此命令adb以root身份重新启动.要小心,它只适用于开发版本(通常是模拟器版本).

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

adb pull /data/data/<app name>/databases/<database> .
Run Code Online (Sandbox Code Playgroud)

  • 我收到`/ system / bin / sh:su:not found`错误 (5认同)

Jon*_*oni 24

除了@Steven K公司的答案:如果你想访问你的数据,而不必根,你需要在运行你的应用程序你的真实设备仿真器API 23(或更低).在部署Android设备监视器时,23以上的API可能会导致问题,这是一个众所周知的问题.


Ste*_*n K 8

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

在模拟器中试用它,因为你有root访问权限,它会对你有用.


小智 8

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

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

而已.问题解决了.


Rup*_*dav 6

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

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

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

  1. 你需要在 root 模式下运行 ADB,通过执行: adb root

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

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);
 }
Run Code Online (Sandbox Code Playgroud)

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

chrome://inspect/#devices
Run Code Online (Sandbox Code Playgroud)

相同的截图如下_

ChromeInspact

ChromeInspact

你的数据库

你的数据库

希望这对大家有帮助!:)


Ste*_*n K 5

在开发期间将数据库存储在公用文件夹中可能更容易.

或者你可以看到这篇文章:

如何访问Android设备中的数据/数据文件夹?

  • File dbfile = new File("/sdcard/mydb.sqlite"); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); System.out.println("打开了吗?" + db.isOpen (2认同)