如何查看Android应用程序特定的缓存?

Kar*_*ela 20 android caching image android-context

有没有办法在Android中动态查看特定于应用程序的缓存?我正在将图像保存到缓存(/ data/data/my_app_package/cache),我99%肯定他们在那里保存,但不确定他们待在一起多久.

当我使用Eclipse中的DDMS文件资源管理器查看缓存时,它始终为空.我也尝试在ADB中检查适当的缓存目录,并且它总是空的.

有什么建议?

Tam*_*mas 30

您可以使用此命令列出您自己的debuggable apk的文件:

adb shell run-as com.corp.appName ls /data/data/com.corp.appName/cache
Run Code Online (Sandbox Code Playgroud)

这个脚本用于从缓存中提取:

#!/bin/sh
adb shell "run-as com.corp.appName cat '/data/data/com.corp.appNamepp/$1' > '/sdcard/$1'"
adb pull "/sdcard/$1"
adb shell "rm '/sdcard/$1'"
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样从缓存中提取文件:

./pull.sh cache/someCachedData.txt
Run Code Online (Sandbox Code Playgroud)

Root不是必需的.

  • 如何使用不可调试的 apk 执行此操作? (2认同)

Chr*_*ton 12

除非ADB以root身份运行(就像在模拟器上一样),否则通常不会在/ data下查看任何内容,除非拥有它的应用程序使其具有全局可读性.此外,您无法浏览目录结构 - 只有在到达您有权访问的目录时才能通过显式输入其路径来列出文件.

从广义上讲,您有五种选择:

  • 在拥有的应用程序内进行调查

  • 将有问题的文件标记为公开,并使用某些内容(adb shell或adb pull),您可以在其中输入完整路径名,而不是尝试浏览树

  • 拥有应用程序将整个目录复制到SD卡

  • 使用模拟器或root设备,其中adb(以及ddms浏览器的访问权限)可以作为root运行(或使用根文件资源管理器或root设备)

  • 使用adb和带有debuggable apk的run-as工具来获取作为应用程序用户ID运行的命令行shell.对于那些熟悉unix命令行的人来说,这可能是最有效的(尽管android上的工具箱是有限的,并且以误导的方式使用其微小的错误消息词汇)

  • @Tamas - 不,这是一个正确的答案,并且**已经提到**作为工具运行的可能性,包括它需要调试apk的**限制**,你忽略了提到的东西. (3认同)

Dar*_*ush 12

在 Android Studio 上,您可以使用Device File Explorer查看/data/data/your_app_package/cache

单击View > Tool Windows > Device File Explorer或单击Device File Explorer工具窗口栏中的按钮以打开设备文件资源管理器。

文档


Has*_*ngi 5

您可以在模拟器中检查特定于应用程序的数据,如下所示,

  1. adb shell在cmd中运行
  2. 转到 /data/data/并导航到您的应用程序

在那里您可以找到特定于您的应用程序的缓存数据和数据库

  • 你需要在 `adb shell` 之后执行 `su` 来访问 `/data/data...` (2认同)