20

我正在 Android 应用程序上运行一些自动化测试(使用 calabash-android),我需要以编程方式触发清除应用程序的缓存,而不是用户数据。

我发现该adb shell pm clear解决方案还不够,因为它会清除用户数据(包括登录详细信息)。

有什么方法可以在应用程序外部实现这一点(即无需更改代码)?

4

1 回答 1

13

我一直在探索该/data/data/<app's package>文件夹,并在其中找到了一个cache文件夹,其中包含我想要清除缓存的应用程序的缓存文件。然后从adb shell我删除了内容,并重置了应用程序的缓存。

很可能您可以运行adb shell su -c "rm -rf /data/data/<app's package>/cache/*"以仅删除应用程序的缓存(该应用程序可能有一些自定义缓存,不受此影响)。它对我有用。

编辑:当然,您设备的 adb必须设置为具有root 访问权限(在 Cyanogen 中,您可以启用它)。

编辑:@running-codebase 在评论中指出,如果您的应用程序是使用调试密钥编译的,您也可以run-as在 adb 的 shell 中使用命令。所以它看起来像这样:adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* 这个方法不需要root。

于 2014-06-02T11:35:00.573 回答