I'm running some automated tests (with calabash-android) on an Android app and I need to programatically trigger a clear of the app's cache, but not user data.
I found that the adb shell pm clear
solution is not adequate, since it clears user data (which includes login details).
Is there any way to achieve this externally to the app (i.e. without code changes)?
I've been exploring the /data/data/<app's package>
folder, and found a cache
folder inside, which contained the cached files for the app that I wanted to clear the cache of. Then from adb shell
I deleted the contents, and the app's cache was reset.
Most probably you can run adb shell su -c "rm -rf /data/data/<app's package>/cache/*"
to delete the cache only for the app (the app might have some custom caching, which isn't affected by this). It worked for me.
Edit: Of course, your device's adb must be set up to have root access (in Cyanogen, you can enable it).
Edit: @running-codebase pointed out in the comments, that if your application is compiled with a debug key, you can also use run-as
command in adb's shell. So it would look like this: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/*
This method does not require root.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With