如何使用 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 <IP>
之后就可以打开数据文件夹了。
【讨论】:
【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mac 上备份 DDMS(Android 设备监视器)过滤器
android设备监视器屏幕显示这个奇怪的空白屏幕,没有任何工作