Android: как очистить кеш приложений и сохранить данные пользователя через adb?

Я запускаю некоторые автоматические тесты (с calabash-android) в Android-приложении, и мне нужно программно запускать кеш приложений, но не пользовательские данные.

Я обнаружил, что решение adb shell pm clear не подходит, поскольку оно очищает пользовательские данные (включая данные для входа).

Есть ли способ достичь этого извне в приложении (т.е. без изменений кода)?

Ответ 1

Я изучал папку /data/data/<app package> и нашел папку cache внутри, в которой были кэшированные файлы для приложения, которые я хотел очистить. Затем из adb shell я удалил содержимое, а кэш приложения - reset.

Скорее всего вы можете запустить adb shell su -c "rm -rf /data/data/<app package>/cache/*", чтобы удалить кеш только для приложения (у приложения может быть какое-то пользовательское кэширование, на которое это не влияет). Это сработало для меня.

Изменить. Конечно, ваш adb должен быть настроен на доступ root (в Cyanogen вы можете включить его).

Изменить: @running-codebase указал в комментариях, что если ваше приложение скомпилировано с помощью отладочного ключа, вы также можете использовать команду run-as в оболочке adb. Таким образом, это будет выглядеть так: adb shell run-as <app package> rm -rf /data/data/<app package>/cache/* Этот метод не требует root.