Android: how to clear app cache and keep user data

2019-02-06 06:33发布

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)?

1条回答
甜甜的少女心
2楼-- · 2019-02-06 07:26

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.

查看更多
登录 后发表回答