如何使用 Android 设备监视器的文件资源管理器查找我的应用程序的 /data/data

Posted

技术标签:

【中文标题】如何使用 Android 设备监视器的文件资源管理器查找我的应用程序的 /data/data【英文标题】:How to Find my App's /data/data using Android Device Monitor's File Explorer 【发布时间】:2014-10-26 08:10:31 【问题描述】:

我有一个将文本文件写入内部存储的应用程序。我想仔细看看我的电脑。

我运行了一个 Toast.makeText 来显示路径,它说: /data/data/mypackage

但是当我转到 android Studio 的 Android Device Monitor 应用程序时,我在文件资源管理器中看不到 /data/data。那么我的文件在哪里?

我知道它们存在是因为我可以找到 on adb shell。我需要将 /data/data 转换为文件资源管理器上可见的路径,以便我可以轻松下载它们。谢谢!

【问题讨论】:

你的包裹不在吗?像数据/数据/你的包?这在用户构建中是不可能的。 不完全是重复的。我已经尝试过您上周末链接到的那个 SO 条目。问题是,当我使用他们的 cp 命令时,我无法将它从 adb 复制到我的笔记本电脑。我也尝试使用备份路由,但我的手机已加密,我必须输入我的加密密码,否则无法继续。因此,我正在尝试使用 Android Studio 的 Android Device Monitor 应用程序进行拉动。但是,路径 /data/data 没有出现。这就是我问这个 SO 问题的原因,专门用于将 /data/data 的路径转换为反映在 Android Studio 的 Android 设备监视器上的路径。 现在打开问题:) 【参考方案1】:

您只能检查是否拥有已root 的手机,因为这些文件夹对应用程序是私有的,并且通常访问仅限于此类文件夹。我会建议如果您没有根电话,然后复制您的内部文件夹并将它们写入您的 SDCard 以检查内容。另一种方法是root您的手机或使用模拟器。

这是您可以用来在外部 SDCard 上编写副本的代码:

public static void copyDirectoryOneLocationToAnotherLocation(File sourceLocation, File targetLocation)
            throws IOException 

        if (sourceLocation.isDirectory()) 
            if (!targetLocation.exists()) 
                targetLocation.mkdir();
            

            String[] children = sourceLocation.list();
            for (int i = 0; i < sourceLocation.listFiles().length; i++) 

                copyDirectoryOneLocationToAnotherLocation(new File(sourceLocation, children[i]),
                        new File(targetLocation, children[i]));
            
         else 

            InputStream in = new FileInputStream(sourceLocation);

            OutputStream out = new FileOutputStream(targetLocation);

            // Copy the bits from instream to outstream
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) 
                out.write(buf, 0, len);
            
            in.close();
            out.close();
        

    

【讨论】:

我希望我不需要这样做,但考虑到复制到 SD 卡的情况比只获取几个文件的 root 更简单。谢谢。【参考方案2】:

您可以使用adb console。 写adb root 然后adb connect &lt;IP&gt;

之后就可以打开数据文件夹了。

【讨论】:

【参考方案3】:

见this。因为 /data/data 是应用程序本身的内部存储,所以只有具有相同用户 ID 的应用程序才能访问它(或者除非您有根设备)。

【讨论】:

有没有办法让我的应用内容出现在 Android Device Monitor 文件资源管理器的可见路径中?上周末我已经在您的链接中尝试了选项 1 和 2。第一个让我在 cp 上出现语法错误。第二个我最终得到了一个加密的备份,但是如何解密呢?我的手机是加密的。当我选择不按照指示进行加密时,它就会退出。如果我加密,不知道如何解密。所以我被困住了。 对不起,我不知道,你可以试试root你的设备。对于 cp 语法错误,其实和 Linux 中的 cp 命令是一样的。它使用两个参数和各种选项。见linux.die.net/man/1/cp。【参考方案4】:

/data/data 文件夹显示在我的 Android 设备监视器的文件资源管理器 (Android Studio 1.4) 中。至少对于虚拟设备而言。

【讨论】:

【参考方案5】:

我认为您使用的是 API 24 或更高版本,您必须创建一个没有 API 24+ 的新虚拟设备

【讨论】:

以上是关于如何使用 Android 设备监视器的文件资源管理器查找我的应用程序的 /data/data的主要内容,如果未能解决你的问题,请参考以下文章

Android 设备监视器,发生错误

Android设备远程管理工具-STF

如何在 Mac 上备份 DDMS(Android 设备监视器)过滤器

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

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

印度黑客滥用移动设备管理服务MDM监视iPhone用户