我正在运行一些使用calabash-android的自动化测试,需要以编程方式触发清除应用程序缓存,但不清除用户数据。
我发现adb shell pm clear
解决方案不够充分,因为它会清除用户数据(包括登录详细信息)。
有没有任何方法可以在应用程序外部实现这一点(即无需更改代码)?
/data/data/<应用程序包名>
文件夹,发现里面有一个 cache
文件夹,其中包含我想要清除缓存的应用程序的缓存文件。然后我从 adb shell
中删除了其中的内容,这样应用程序的缓存就被重置了。adb shell su -c "rm -rf /data/data/<应用程序包名>/cache/*"
来仅删除该应用程序的缓存(该应用程序可能具有一些自定义缓存,不受此影响)。对我而言,它起作用了。
编辑:当然,您的设备的adb必须设置为具有root访问权限(在Cyanogen中,您可以启用它)。
编辑:@running-codebase 在评论中指出,如果您的应用程序使用调试密钥编译,则还可以在adb的shell中使用 run-as
命令。因此,它看起来像这样: adb shell run-as <应用程序包名> rm -rf /data/data/<应用程序包名>/cache/*
。此方法不需要root权限。
adb shell 'run-as com.ebay.mobile sh -c "rm -rf cache/*"'
- 它在应用程序用户下运行一个 shell,成功执行 glob。 - Gene Pavlovsky